什么时候元组周围需要加括号?

2025-03-11 08:50:00
admin
原创
94
摘要:问题描述:是否有某个地方的参考资料可以精确定义何时需要或不需要用括号括起来元组? 以下是最近令我感到惊奇的一个例子:>>> d = {} >>> d[0,] = 'potato' >>> if 0, in d: File "<stdin...

问题描述:

是否有某个地方的参考资料可以精确定义何时需要或不需要用括号括起来元组?

以下是最近令我感到惊奇的一个例子:

>>> d = {}
>>> d[0,] = 'potato'
>>> if 0, in d:
  File "<stdin>", line 1
    if 0, in d:
        ^
SyntaxError: invalid syntax

解决方案 1:

使用逗号标记组合表达式以创建元组称为。运算符优先级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)

解决方案 2:

在任何允许使用该expression_list术语的地方,您无需使用括号。

if语句需要expression,并且不支持expression_list

允许的语法示例expression_list

  • 声明return

  • yield表达式

  • 赋值
    (包括增强赋值)

  • 声明。for

通过 Grepping搜索表达式、简单和复合语句文档将告诉您在 Python 语法中使用的expression_list所有位置。expression_list

解决方案 3:

当你想避免歧义时,括号也是(语义上)必需的。

以下是两个不同的表达式......仅仅因为某些东西是“表达式列表”,并不会产生您可能期望的表达式列表:)

(1, 2, 3) + (4, 5) # results in (1, 2, 3, 4, 5) because + does sequence.extend on the tuples
1, 2, 3 + 4, 5     # this results in (1, 2, 7, 5) because + adds the elements, since there were no parentheses to protect the separate tuples
相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   3970  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   2740  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Freshdesk、ClickUp、nTask、Hubstaff、Plutio、Productive、Targa、Bonsai、Wrike。在当今快速变化的商业环境中,项目管理已成为企业成功的关键因素之一。然而,许多企业在项目管理过程中面临着诸多痛点,如任务分配不...
项目管理系统   79  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Monday、TeamGantt、Filestage、Chanty、Visor、Smartsheet、Productive、Quire、Planview。在当今快速变化的商业环境中,项目管理已成为企业成功的关键因素之一。然而,许多项目经理和团队在管理复杂项目时,常...
开源项目管理工具   87  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Smartsheet、GanttPRO、Backlog、Visor、ResourceGuru、Productive、Xebrio、Hive、Quire。在当今快节奏的商业环境中,项目管理已成为企业成功的关键因素之一。然而,许多企业在选择项目管理工具时常常面临困惑:...
项目管理系统   74  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用