lambda formatting in f-string

In a formatted string using "lambda',  we should not add "\n".
For example in:
  f'{(lambda x:x)("8")!r}'

Adding a "\n" after "lambda x: x" will give an error message:
  SyntaxError: f-string expression part cannot include a backslash
This commit is contained in:
rocky
2022-04-12 16:49:58 -04:00
parent a1fe069c8c
commit 04510ac2f8
5 changed files with 58 additions and 42 deletions

View File

@@ -2553,7 +2553,16 @@ class SourceWalker(GenericASTTraversal, object):
else:
self.customize(customize)
self.text = self.traverse(ast, is_lambda=is_lambda)
self.println(self.text)
# In a formatted string using "lambda', we should not add "\n".
# For example in:
# f'{(lambda x:x)("8")!r}'
# Adding a "\n" after "lambda x: x" will give an error message:
# SyntaxError: f-string expression part cannot include a backslash
# So avoid that.
printfn = (
self.write if self.in_format_string and is_lambda else self.println
)
printfn(self.text)
self.name = old_name
self.return_none = rn