假设您有这样的功能:
def give_me_many(*elements):
#do something...
你这样称呼它:
generator_expr = (... for ... in ... )
give_me_many(*generator_expr)
元素会被延迟调用,还是生成器会在函数执行之前遍历所有可能的数百万个元素?
假设您有这样的功能:
def give_me_many(*elements):
#do something...
你这样称呼它:
generator_expr = (... for ... in ... )
give_me_many(*generator_expr)
元素会被延迟调用,还是生成器会在函数执行之前遍历所有可能的数百万个元素?
参数总是作为元组和/或字典传递给函数,因此传入的任何内容*args
都将转换为元组或**kwargs
转换为字典。如果kwargs
已经是字典,则制作副本。元组是不可变的,因此args
不需要复制,除非它发生变化(通过包含其他位置参数或删除命名位置参数的一些参数),但它将从任何其他序列类型转换为元组。
不,他们不是:
>>> def noisy(n):
... for i in range(n):
... print i
... yield i
...
>>> def test(*args):
... print "in test"
... for arg in args:
... print arg
...
>>> test(*noisy(4))
0
1
2
3
in test
0
1
2
3