我是一名Python新手,有一个问题。为什么if语句可以使用括号而for循环不可以。
if (1==2):
for (i in range(1,10)):
while (i<10):
第一个和第三个都是有效的语法,但第二个不是。
File "<stdin>", line 2
for (i in range(1,10)):
^
我是一名Python新手,有一个问题。为什么if语句可以使用括号而for循环不可以。
if (1==2):
for (i in range(1,10)):
while (i<10):
第一个和第三个都是有效的语法,但第二个不是。
File "<stdin>", line 2
for (i in range(1,10)):
^
因为 for (i in range(1,10))
不符合语法规范。
假设 (i in range(1,10))
已被解析,它将返回一个布尔值。所以你试图说的是 for True
或者 for False
,而布尔值不能被迭代,这是无效的语法。
你的其他例子之所以起作用是因为它们期望一个布尔值,而 1 == 2
和 i < 10
返回的就是布尔值。
if
语句需要一个值(True
或 False
)。你可以在任何值周围加上括号:(1) + (1)
for VAR in LIST
是一个固定的语法,它不期望单个值,而是期望两个输入:
那么为什么 Python 语言允许在那里加上额外的括号呢?
正如某人在现已删除的答案中指出的那样(为什么?),这是 for
语句的语法:http://docs.python.org/3/reference/compound_stmts.html#the-for-statement :
for_stmt ::= "for" target_list "in" expression_list ":" suite
["else" ":" suite]
for i in range(1, 10):
,但最好不要在这样的语句中使用不必要的括号。 - RemcoGerlich