Python 3.x 为什么Python'f-string`+;内联for循环在它们';是否作为参数重新传递?
我在网上找到了这个例子Python 3.x 为什么Python'f-string`+;内联for循环在它们';是否作为参数重新传递?,python-3.x,for-loop,generator,f-string,Python 3.x,For Loop,Generator,F String,我在网上找到了这个例子 def格式_属性(**属性): “”“返回由逗号分隔的键值对组成的字符串。”“” 返回“,”。加入( f“{param}:{value}” 对于param,attributes.items()中的值 ) 传递给join函数的param语法引起了我的注意,因为它有点不寻常。但它是有效的 使用最少的代码库进行一些本地测试时,我发现: def foo(res): 返回res 打印(foo(f“{s}”表示[“bar”]中的s) foo的语法是有效的,res最终成为一个生成器
def格式_属性(**属性):
“”“返回由逗号分隔的键值对组成的字符串。”“”
返回“,”。加入(
f“{param}:{value}”
对于param,attributes.items()中的值
)
传递给join
函数的param语法引起了我的注意,因为它有点不寻常。但它是有效的
使用最少的代码库进行一些本地测试时,我发现:
def foo(res):
返回res
打印(foo(f“{s}”表示[“bar”]中的s)
foo的
语法是有效的,res
最终成为一个生成器。但是,如果我在[“bar”]独立中尝试对s使用f“{s}”(其间没有函数),表达式只会抛出一个SyntaxError:invalid syntax
为什么循环
的f字符串
+是有效的,并被转换为生成器
?调用foo
函数时,引擎盖下面发生了什么
这些其他问题使用相同的语法:
但是我没有找到解释为什么会发生这种情况的注释这些都是生成器表达式的示例,不一定有任何特定于f字符串或与它们一起使用的函数
e、 g
该示例统计列表中偶数整数的数量
您可以在此处阅读更多有关它们的信息:这些是生成器表达式的示例,不一定有任何特定于f字符串或与它们一起使用的函数的内容
e、 g
该示例统计列表中偶数整数的数量
您可以在此处阅读更多有关它们的信息:f字符串与此无关
虽然生成器表达式通常需要括号:
some_gen = (f"{s}" for s in ["bar"])
print(foo(some_gen))
当生成器表达式是函数调用的唯一参数时,可以省略括号:
# These two calls are equivalent.
foo((f"{s}" for s in ["bar"]))
foo( f"{s}" for s in ["bar"] )
f字符串与此无关
虽然生成器表达式通常需要括号:
some_gen = (f"{s}" for s in ["bar"])
print(foo(some_gen))
当生成器表达式是函数调用的唯一参数时,可以省略括号:
# These two calls are equivalent.
foo((f"{s}" for s in ["bar"]))
foo( f"{s}" for s in ["bar"] )
您正在使用的循环构造是一个。要将其作为独立表达式编写,需要在其周围添加括号:
genexp = (f"{s}" for s in ["bar"])
如果生成器表达式是函数的唯一参数,则不需要双括号(但如果有其他单独的参数,则需要双括号)。对比度:
s = sum(i % 2 for i in some_sequence) # count of odd elements, no extra parentheses needed
vs:
代码中生成器表达式中使用的f-string没有什么特别之处,任何表达式的工作方式都是相同的。您使用的循环构造是一个。要将其作为独立表达式编写,需要在其周围添加括号:
genexp = (f"{s}" for s in ["bar"])
如果生成器表达式是函数的唯一参数,则不需要双括号(但如果有其他单独的参数,则需要双括号)。对比度:
s = sum(i % 2 for i in some_sequence) # count of odd elements, no extra parentheses needed
vs:
代码中生成器表达式中使用的f-string没有什么特别之处,任何表达式的工作方式都是相同的。我将此表达式标记为可接受的答案,因为它明确指出,当生成器用作单个参数时,不需要括号。谢谢我将这个标记为可接受的答案,因为它明确指出,当生成器用作单个参数时,不需要括号。谢谢我觉得这篇文章很有用。它详细描述了生成器的语法。我发现这篇文章很有用。它详细描述了生成器的语法