Skip to main content
 首页 » 编程设计

python之为什么 if-else 表达式的第二个条件中的尾随逗号导致第一个条件被转换为元组

2025年05月04日10mengfanrong

用逗号声明元组的语法很清楚,我在任何地方都看到它与用大括号括起来的文字一起使用,例如(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