Python元组分配和条件语句检入

发布于 2021-01-29 16:19:19

这个问题已经在这里有了答案

元组何时需要括号? (3个答案)

6年前关闭。

因此,我偶然发现python中元组的特定行为,我想知道是否有特定原因发生。

尽管我们完全有能力将元组分配给变量,而无需将其显式地括在括号中:

>>> foo_bar_tuple = "foo","bar"
>>>

我们无法以以前的方式打印或检查条件if语句中包含元组的变量(没有显式地键入括号):

>>> print foo_bar_tuple == "foo","bar"
False bar

>>> if foo_bar_tuple == "foo","bar": pass
SyntaxError: invalid syntax
>>>

>>> print foo_bar_tuple == ("foo","bar")
True
>>>

>>> if foo_bar_tuple == ("foo","bar"): pass
>>>

有人为什么吗?在此先感谢,尽管我没有找到任何类似的主题,但是如果您认为这可能是重复的,请通知我。干杯,亚历克斯

关注者
0
被浏览
40
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    这是因为用逗号分隔的表达式是在整个逗号分隔的元组(这是Python语法术语中的“表达式列表”)之前进行求值的。因此,当您这样做时foo_bar_tuple=="foo", "bar",将被解释为(foo_bar_tuple=="foo"), "bar"。在文档中描述了此行为。

    如果仅自己编写这样的表达式,则可以看到以下内容:

    >>> 1, 2 == 1, 2  # interpreted as "1, (2==1), 2"
    (1, False, 2)
    

    未带括号的元组的SyntaxError是因为未带括号的元组不是Python语法中的“原子”,这意味着它不是if条件的唯一内容。(您可以通过跟踪语法来自己验证这一点。)



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看