相关疑难解决方法(0)

解包参数:只有命名参数可以跟*表达式

以下在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:只有命名参数才能跟*表达式".

我只是想知道为什么它必须是这样的,如果有任何聪明的技巧我可能不会意识到将数组解压缩到参数列表的任意部分而不诉诸临时变量.

python arrays arguments

44
推荐指数
3
解决办法
2万
查看次数

Python 3 中 max([a for a in [1,2]]) 和 max(a for a in [1,2]) 之间的区别

我发现他们都会输出预期的结果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]))

谢谢。

python python-3.x

3
推荐指数
1
解决办法
59
查看次数

标签 统计

python ×2

arguments ×1

arrays ×1

python-3.x ×1