type(3,)
返回int类型,而
t = 3,
type(t)
返回元组类型。 为什么呢?
答案 0 :(得分:13)
在构成函数调用运算符的括号内,逗号不用于构建元组,但用于分隔参数。因此,type(3, )
相当于type(3)
。语法允许在参数列表末尾添加另一个逗号。你需要一对额外的parens来构建一个元组:
>>> def f(x):
... print x
...
>>> f(3)
3
>>> f(3,)
3
>>> f((3,))
(3,)
答案 1 :(得分:6)
内置type()
是一个函数,因此逗号被解析为参数分隔符而不是元组构造函数。
>>> type(3,)
<type 'int'>
>>> type((3,))
<type 'tuple'>
答案 2 :(得分:2)
我怀疑Python忽略函数参数中的尾随逗号:
def f (a):
print a
print type(a)
>>> f(3,)
3
<type 'int'>
使用不带括号的逗号分隔值来创建元组是一种无处不在的技巧。列表推导是一个很好的例子:
>>> [a,a*2 for a in range(4)]
File "<stdin>", line 1
[a,a*2 for a in range(4)]
^
你必须这样做:
>>> [(a,a*2) for a in range(4)]
[(0, 0), (1, 2), (2, 4), (3, 6)]
列表解压缩工作正常,所以它有点变量,允许无限制的逗号分隔值:
>>> [(a,b) for a, b in zip(range(4),range(4))]
[(0, 0), (1, 1), (2, 2), (3, 3)]
答案 3 :(得分:0)
在func(bunch_of_args)
中,您可以使用逗号跟随最后一个arg,就像在
alist = [1, 2, 3, ]