用逗号声明元组的语法很清楚,我在任何地方都看到它与用大括号括起来的文字一起使用,例如(1,)。
但是,python 确实允许使用逗号而不用大括号括起来来声明元组,并且在一种特定情况下会出现奇怪的行为,请参见下面的代码。
def ifElseExpressionTrailingComma():
return 1 if True else 0,
def ifElseExpressionTrailingCommaWrapped():
return 1 if True else (0,)
print ifElseExpressionTrailingComma()
print ifElseExpressionTrailingCommaWrapped()
输出:
(1,) # what??
1
在 2.7 和 3.5 上测试。 有人可以解释为什么 1 被隐式转换为元组吗?
请您参考如下方法:
简单来说就是操作顺序:
>>> 1 if True else 0,
(1,)
>>> (1 if True else 0),
(1,)
>>> 1 if True else (0,)
1
