元组何时需要括号?

发布于 2021-01-29 15:17:31

是否有地方需要精确定义引用,何时需要用括号将元组括起来?

这是一个最近令我惊讶的例子:

>>> d = {}
>>> d[0,] = 'potato'
>>> if 0, in d:
  File "<stdin>", line 1
    if 0, in d:
        ^
SyntaxError: invalid syntax
关注者
0
被浏览
44
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    使用逗号标记将表达式的组合以创建元组称为expression_list运算符优先级规则不涵盖表达式列表;这是因为表达式列表本身不是表达式;当用括号括起来时,它们成为表达式。

    所以,一个未封闭expression_list被允许在Python,它是具体由语言的语法允许的任何地方,但 不是
    在那里的expression,因此是必需的。

    例如,if语句的语法如下:

    if_stmt ::=  "if" expression ":" suite
                 ( "elif" expression ":" suite )*
                 ["else" ":" suite]
    

    因为expression引用了生产,expression_list所以不允许将未封闭的s作为if语句的主题。但是,for语句接受expression_list

    for_stmt ::=  "for" target_list "in" expression_list ":" suite
                  ["else" ":" suite]
    

    因此,允许以下内容:

    for x in 1, 2, 3:
        print(x)
    


知识点
面圈网VIP题库

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

去下载看看