以下在Python中运行得非常好:
def f(x,y,z): return [x,y,z]
a=[1,2]
f(3,*a)
Run Code Online (Sandbox Code Playgroud)
a获取解压缩的元素,就好像你已经调用它f(3,1,2)并返回它一样[3,1,2].精彩!
但我不能解开的元素a到第一个两个参数:
f(*a,3)
Run Code Online (Sandbox Code Playgroud)
f(1,2,3)我没有调用那样,而是"SyntaxError:只有命名参数才能跟*表达式".
我只是想知道为什么它必须是这样的,如果有任何聪明的技巧我可能不会意识到将数组解压缩到参数列表的任意部分而不诉诸临时变量.
我发现他们都会输出预期的结果2。
max([a for a in [1,2]])是max()+ list comprehension,一个简单的。
max(a for a in [1,2])是max()+ ?。为什么有效?我们给这个结构起a for a in [1,2]什么名字?
生成器的形式为(a for a in [1,2])。我怀疑(a for a in [1,2])内部max(a for a in [1,2])是发电机。不过,既然如此,那为什么可以()忽略一对呢?从技术上讲应该是max((a for a in [1,2]))。
谢谢。