python - python 的可变长度参数 (*args) 会在函数调用时扩展生成器吗?

标签 python function iteration generator

考虑以下 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/

相关文章:

python - 使用 Django 1.11 和 Python 3.6 将 Social_auth 迁移到 django_social

python - 匹配最后一个单词并删除整行

python - HttpResponseForbidden 和 handler403

php - 无法重新声明先前声明的函数

Python 大迭代次数失败

python - 使用多种配置启动 Scrapyd

R: "apply"语句用于计算多列中非 NA 值的数量之和

function - Swift 中的静态函数变量

java - 如何以某种格式打印出HashMap的内容?

javascript - React.js 中对象内部的迭代