为什么 f 弦不能在其他 f 弦内部进行理解?
Why do not f-strings work in comprehensions inside other f-strings?
我想在生成器中使用一个 f 字符串,我把它放在另一个 f 字符串中,例如这里:
MORSE_CODE = {'123' : '456', '789' : 'qwe'}
print(f'{(f'{key}, {value}' for key, value in MORSE_CODE.items())}')
当这是 运行 时,我得到了下一个错误:
File "<ipython-input-10-05579b450d5e>", line 2
print(f'{(f'{key}, {value}' for key, value in MORSE_CODE.items())}')
^
SyntaxError: invalid syntax
起初我认为在生成器中使用 f-strings 是不可能的,但是,当我把它 (f'{key}, {value}' for key, value in MORSE_CODE.items())
放入变量时,这起作用了:
a = (f'{key}, {value}' for key, value in MORSE_CODE.items())
print(f'{{{a}}}')
{<generator object <genexpr> at 0x0000025EE94EF200>}
这在 Python 中如何运作?我无法 google 有关将 f-strings 工作到另一个 f-strings 内的生成器的信息。这些代码有什么区别?
不确定预期的输出是什么,但是当使用不同的字符串引号 "
和 '
时,解析器可以区分内部 f 字符串的开头和结尾外层。
MORSE_CODE = {'123' : '456', '789' : 'qwe'}
print(f'{(f"{key}, {value}" for key, value in MORSE_CODE.items())}')
我刚刚意外地发现,如果您使用不同的引号,这将非常有效。我没想到会这样,因为我认为花括号内的表达式独立于字符串,所以我可以使用任何引号,但他们的改变解决了问题。
MORSE_CODE = {'123' : '456', '789' : 'qwe'}
print(f'{{{(f"{key}, {value}, " for key, value in MORSE_CODE.items())}}}')
{<generator object <genexpr> at 0x0000025EE95BEA50>}
但是,我现在很好奇为什么这些引号是相关的?
我想在生成器中使用一个 f 字符串,我把它放在另一个 f 字符串中,例如这里:
MORSE_CODE = {'123' : '456', '789' : 'qwe'}
print(f'{(f'{key}, {value}' for key, value in MORSE_CODE.items())}')
当这是 运行 时,我得到了下一个错误:
File "<ipython-input-10-05579b450d5e>", line 2
print(f'{(f'{key}, {value}' for key, value in MORSE_CODE.items())}')
^
SyntaxError: invalid syntax
起初我认为在生成器中使用 f-strings 是不可能的,但是,当我把它 (f'{key}, {value}' for key, value in MORSE_CODE.items())
放入变量时,这起作用了:
a = (f'{key}, {value}' for key, value in MORSE_CODE.items())
print(f'{{{a}}}')
{<generator object <genexpr> at 0x0000025EE94EF200>}
这在 Python 中如何运作?我无法 google 有关将 f-strings 工作到另一个 f-strings 内的生成器的信息。这些代码有什么区别?
不确定预期的输出是什么,但是当使用不同的字符串引号 "
和 '
时,解析器可以区分内部 f 字符串的开头和结尾外层。
MORSE_CODE = {'123' : '456', '789' : 'qwe'}
print(f'{(f"{key}, {value}" for key, value in MORSE_CODE.items())}')
我刚刚意外地发现,如果您使用不同的引号,这将非常有效。我没想到会这样,因为我认为花括号内的表达式独立于字符串,所以我可以使用任何引号,但他们的改变解决了问题。
MORSE_CODE = {'123' : '456', '789' : 'qwe'}
print(f'{{{(f"{key}, {value}, " for key, value in MORSE_CODE.items())}}}')
{<generator object <genexpr> at 0x0000025EE95BEA50>}
但是,我现在很好奇为什么这些引号是相关的?