Python 3.x Python 3.8赋值/命名表达式语法
Python 3.8.0rc1。 不同语法背后的逻辑是什么Python 3.x Python 3.8赋值/命名表达式语法,python-3.x,Python 3.x,Python 3.8.0rc1。 不同语法背后的逻辑是什么 #I can write: [ y:=i for i in range(5) ] #and ( y:=i for i in range(5) ) #but not { y:=i for i in range(5) } ^ SyntaxError: invalid syntax #It must be: { (y:=i) for i in range(5) } 我认为这是Python实现中的一个bug。在Python
#I can write:
[ y:=i for i in range(5) ]
#and
( y:=i for i in range(5) )
#but not
{ y:=i for i in range(5) }
^
SyntaxError: invalid syntax
#It must be:
{ (y:=i) for i in range(5) }
我认为这是Python实现中的一个bug。在Python文档中,列表和集合显示在用于理解时的行为应该相同 引用我的话: 6.2.5。列表显示 列表显示可能是方括号中包含的一系列空表达式: 列表显示::=“[”[星号列表理解]”” 列表显示产生一个新的列表对象,内容由表达式列表或理解指定。当提供以逗号分隔的表达式列表时,其元素将从左到右求值,并按该顺序放入列表对象中提供理解时,列表由理解产生的元素构成。 6.2.6。设置显示 集合显示用大括号表示,与字典显示不同的是,集合显示缺少分隔键和值的冒号: set_display::=“{”(带星号的_列表|理解)}” 集合显示产生一个新的可变集合对象,内容由一系列表达式或理解指定。提供以逗号分隔的表达式列表时,将从左到右计算其元素,并将其添加到集合对象中提供理解时,集合由理解产生的元素构成。 不能用{}构造空集;此文本构造一个空字典
我认为这是Python实现中的一个bug。在Python文档中,列表和集合显示在用于理解时的行为应该相同 引用我的话: 6.2.5。列表显示 列表显示可能是方括号中包含的一系列空表达式: 列表显示::=“[”[星号列表理解]”” 列表显示产生一个新的列表对象,内容由表达式列表或理解指定。当提供以逗号分隔的表达式列表时,其元素将从左到右求值,并按该顺序放入列表对象中提供理解时,列表由理解产生的元素构成。 6.2.6。设置显示 集合显示用大括号表示,与字典显示不同的是,集合显示缺少分隔键和值的冒号: set_display::=“{”(带星号的_列表|理解)}” 集合显示产生一个新的可变集合对象,内容由一系列表达式或理解指定。提供以逗号分隔的表达式列表时,将从左到右计算其元素,并将其添加到集合对象中提供理解时,集合由理解产生的元素构成。 不能用{}构造空集;此文本构造一个空字典