【发布时间】:2021-12-16 23:17:42
【问题描述】:
我想在一个生成器中使用一个 f-string,我把它放在另一个 f-string 中,比如这里:
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 字符串是不可能的,但是当我将它 (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 中是如何工作的?我无法在谷歌上搜索有关将 f 字符串工作到另一个 f 字符串中的生成器的信息。这几段代码有什么区别?
【问题讨论】:
-
这与生成器无关,与它们无关。这只是关于嵌套 f 字符串。你的最后一个 sn-p 没有嵌套,你的第一个 sn-p 有。
-
您想要实现的具体目标是什么?我没有看到 f-string 中带有另一个 f-string 的生成器表达式的意义(不管它是否可能)。
-
更改其中一个以使用双引号。