是什么让python元组?

时间:2011-05-15 10:06:58

标签: python tuples

以下代码无法打印出我期望的内容:

#!/usr/bin/env python

print type(1,)
a = 1,
print type(a)

这是输出:

<type 'int'>
<type 'tuple'>

我知道逗号会成为一个元组。但是,如果是这样的话,为什么原始打印不打印元组类型而是int?

3 个答案:

答案 0 :(得分:9)

因为函数调用中的元组语法也是传递参数的方式:

>>> print type(1,2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: type() takes 1 or 3 arguments

>>> print type((1,))
<type 'tuple'>

>>> a = 1,
>>> type(a)
<type 'tuple'>

这是python的语法歧义,它通过决定你试图传递参数来解决(如果你问我,它应该是语法错误)。

>>> print type(1,)
>>> print type(1)

是一样的。

答案 1 :(得分:1)

type()是一个函数,因此python解析器会将type函数调用的括号之间的所有内容作为参数元组传递给该函数。

因此,要将一个文字元组传递给一个函数调用,你总是需要将一个括号添加到元组中,以便解析器识别它:

print type((1,))

答案 2 :(得分:0)

因为它没有括在括号中:type((1,))

如果没有额外的括号,它在此上下文中被视为一个简单的参数列表,并且简单地忽略尾随分号。