Python 为什么可以';在遍历列表时,我们是否在for循环周围使用括号?
根据,循环的Python 为什么可以';在遍历列表时,我们是否在for循环周围使用括号?,python,for-loop,Python,For Loop,根据,循环的语法为: for_stmt:'testlist'中的'exprlist':'[TYPE_COMMENT]suite['else':'suite] 它是关键字的、表达式列表、关键字中的和测试列表。没有规定testlist中的exprlist要用括号括起来 要允许使用括号,则需要类似以下内容,其中expr可能是一个括号表达式: for stmt:'for'expr':'[TYPE_COMMENT]suite['else':'suite] 但这不是语法 但是口译员不应该忽略括号吗?比如
语法为:
for_stmt:'testlist'中的'exprlist':'[TYPE_COMMENT]suite['else':'suite]
它是
关键字的、表达式列表、关键字中的和测试列表。没有规定testlist中的exprlist要用括号括起来
要允许使用括号,则需要类似以下内容,其中expr可能是一个括号表达式:
for stmt:'for'expr':'[TYPE_COMMENT]suite['else':'suite]
但这不是语法
但是口译员不应该忽略括号吗?比如(a+b)/2
和((a)+(b))/2
意思是一样的吗
只有在预定义的位置才允许使用括号。他们不允许去任何地方。你不能写(a+b/2
或a+b(/2)
,对吗
在语法中,括号来自此产品:
原子:(“(“[yield_expr | testlist_comp]”)|
“[”[testlist_comp]”|
“{'[dictorsetmaker]'}”|
名称|编号|字符串+|'…'|'无'|'真'|'假')
expr可以是很多东西。最基本、不可分割的表达式类型是原子:名称、数字、字符串等等(最后一行)。或另一个用括号括起来的表达式(第一行)
任何允许表达式的地方,也允许该表达式的括号版本
“测试列表”中的“exprlist”的:
exprlist可以用括号括起来。测试列表可以用括号括起来。如果你检查语法,这两种结果最终都会导致原子产生。允许使用以下括号:
a =["mary","had", "a", "little", "lamb"]
print(len(a))
for (i in a): **# this part says invalid syntax**
print(i)
a =["mary","had", "a", "little", "lamb"]
print(len(a))
for i in a: #this works just fine
print(i)
for (i) in (a):
但不能在其他任何地方自由插入括号。所有这些都是不允许的:
a =["mary","had", "a", "little", "lamb"]
print(len(a))
for (i in a): **# this part says invalid syntax**
print(i)
a =["mary","had", "a", "little", "lamb"]
print(len(a))
for i in a: #this works just fine
print(i)
for (i) in (a):
a
中独立的表达式i将计算为布尔值:序列a
中的i
当你把它放在括号里时,你告诉解释器先计算出它的值,然后再看周围的东西,所以这就像写:
对于False:
除了比这更糟糕,因为没有定义i
。@SuryaTej:即使它看起来像一个函数调用,也不必是函数调用。C#具有这种语法,并且仍然可以区分for循环和函数调用。这是lexerb的任务,但是解释器不应该忽略括号吗?就像(a+b)/2和((a)+(b))/2意味着同一件事?@Tanuj不,括号从来没有被解释器真正忽略过,它们在不同的上下文中可能意味着不同的事情。在这里,设计者决定了for循环的语法,其中不允许使用括号