我发现表达式末尾带有逗号的整数的数据类型很奇怪(请参见下面的代码)。
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或元组?
答案 0 :(得分:1)
此
a = -1,
等于这个
a = (-1,)
这是一个元组。
答案 1 :(得分:1)
a
(定义为a = 1,
是一个tuple
,句点-它是定义文字元组的逗号,而不是括号(当然,空元组除外)。表达式type(-1,)
产生int
是因为逗号被解析为函数调用语法规则的一部分,该语法优先于文字元组语法规则。在type()
参数周围添加括号-即{ {1}}将强制解析器首先评估内部paren中的内容-因此创建一个元组。