【发布时间】:2015-03-27 17:14:10
【问题描述】:
以下如何工作?
>>> 3*[2]
>>> [2,2,2]
>>> [2]*3
>>> [2,2,2]
我知道* 是位置扩展运算符。由于[2] 是一个包含单个项目的列表,我看不到3*[2] 如何扩展为任何有意义的东西,我希望SyntaxError,但事实并非如此。
我很难搜索现有答案,我找到的只是对 *args 和 **kwargs 的引用,用于传递可变参数列表,这并不能完全回答我的问题。
【问题讨论】:
-
*也是乘法运算符,它对序列有特殊的行为。见the documentation。 -
@BrenBarn 在这种情况下如何区分乘法和扩展?
-
不是扩展运算符,只是乘法运算符
-
@ash:
*args参数扩展只能在函数调用的括号内使用。这里没有函数调用。它“知道”在这里使用乘法,就像它知道在您编写2*3并得到 6 时使用乘法一样。 -
@BrenBarn 啊,完美,这正是我想知道的。谢谢,伙计!
标签: python list python-3.x