考虑以下 Python 代码:
def f(*args):
for a in args:
pass
foo = ['foo', 'bar', 'baz']
# Python generator expressions FTW
gen = (f for f in foo)
f(*gen)
*args
会在调用时自动展开生成器吗?换句话说,我是否在 f(*gen)
中遍历了 gen
两次,一次是为了扩展 *args
,一次是为了遍历 args?或者生成器是否保持原始状态,而迭代仅在 for 循环期间发生一次?
最佳答案
生成器在函数调用时展开,您可以轻松检查:
def f(*args):
print(args)
foo = ['foo', 'bar', 'baz']
gen = (f for f in foo)
f(*gen)
将打印
('foo', 'bar', 'baz')
关于python - python 的可变长度参数 (*args) 会在函数调用时扩展生成器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5182758/