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

标签 python if-statement syntax tuples

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

关于python - 为什么 if-else 表达式的第二个条件中的尾随逗号导致第一个条件被转换为元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43805222/

相关文章:

Python Spark 如何使用 RDD API 按组查找累计和

c - 从字符串的角度理解 C 中的指针

haskell - 如何比较 char 和转义终端转义序列

c++ - 无法在两个函数之间复制值

python - 如何获得谁调用了函数或方法?

python - 更改默认 float 的重要数字报告

php - !empty() 对于值 0.0000 结果为 true

c# - 如果值存在;不要输入值。 if 语句

python - 将二维数组逐行切片,并使用形状相同的数组中的相应行

c# - if 语句在数据库 MVC 4 中显示 1 或 2