数据类型错误

时间:2018-10-11 08:48:25

标签: python tuples comma

我发现表达式末尾带有逗号的整数的数据类型很奇怪(请参见下面的代码)。

代码

a = -1,  # strange legal syntax

print('"a" has {} data type'.format(type(a)))

if type(a) == tuple:

    print(len(a))

else:

    print('It is not a tuple!')

print('If we print "-1," directly, without variable, then ... {}'.format(type(-1,)))

问题:

使用Jupyter笔记本电脑和Spyder控制台,我发现不同的结果。 这是怎么回事?变量“ a”具有哪种数据类型:int或元组?

2 个答案:

答案 0 :(得分:1)

a = -1,

等于这个

a = (-1,)

这是一个元组。

答案 1 :(得分:1)

a(定义为a = 1,是一个tuple,句点-它是定义文字元组的逗号,而不是括号(当然,空元组除外)。表达式type(-1,)产生int是因为逗号被解析为函数调用语法规则的一部分,该语法优先于文字元组语法规则。在type()参数周围添加括号-即{ {1}}将强制解析器首先评估内部paren中的内容-因此创建一个元组。