【发布时间】:2019-07-14 09:58:07
【问题描述】:
在下面的代码中,如果我不使用逗号,那么只会打印一个 0,而如果我使用逗号 0,则会打印五次,为什么?这与元组的不可变特性有关吗?
food = (0,) * 5 # comma used
print (*food)
输出:0 0 0 0 0
food = (0) * 5 # comma not used
print (*food)
输出:0
【问题讨论】:
-
后者怎么不给你
TypeError? -
因为后者被视为标量表达式。
-
scalar expression那是什么?在第二个例子中food是一个整数,你不能解包和整数,所以你会得到一个 TypeError -
第二个例子没有TypeError,你可以自己执行。这里的食物是一个变量,它被赋值为 0,因为括号内的 0 只不过是 0,0 乘以 5 得到 0,这是非常基本的。这个乘法部分是一个标量表达式。