Message279927
PEP 498 says: (https://www.python.org/dev/peps/pep-0498/#escape-sequences)
Scanning an f-string for expressions happens after escape sequences are decoded. Because hex(ord('{')) == 0x7b , the f-string f'\u007b4*10}' is decoded to f'{4*10}' , which evaluates as the integer 40:
>>> f'\u007b4*10}'
'40'
However, in python3.6.0b3, the '{' from '\u007b4' does not start an expression, making the remaining '}' invalid:
>>> f'\u007b4*10}'
File "<stdin>", line 1
SyntaxError: f-string: single '}' is not allowed
There's even a test case for it: (Lib/test/test_fstring.py:383)
def test_no_escapes_for_braces(self):
# \x7b is '{'. Make sure it doesn't start an expression.
self.assertEqual(f'\x7b2}}', '{2}')
self.assertEqual(f'\x7b2', '{2')
self.assertEqual(f'\u007b2', '{2')
self.assertEqual(f'\N{LEFT CURLY BRACKET}2\N{RIGHT CURLY BRACKET}', '{2}') |
|
Date |
User |
Action |
Args |
2016-11-02 14:58:03 | afg984 | set | recipients:
+ afg984 |
2016-11-02 14:58:03 | afg984 | set | messageid: <1478098683.95.0.617891142218.issue28590@psf.upfronthosting.co.za> |
2016-11-02 14:58:03 | afg984 | link | issue28590 messages |
2016-11-02 14:58:03 | afg984 | create | |
|