以下代码无法打印出我期望的内容:
#!/usr/bin/env python
print type(1,)
a = 1,
print type(a)
这是输出:
<type 'int'>
<type 'tuple'>
我知道逗号会成为一个元组。但是,如果是这样的话,为什么原始打印不打印元组类型而是int?
答案 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,))
如果没有额外的括号,它在此上下文中被视为一个简单的参数列表,并且简单地忽略尾随分号。