围绕if和for的括号

时间:2014-03-20 07:43:56

标签: python

我是一个蟒蛇新手并且有一个问题。为什么一个if允许括号而不是for。

  1. if (1==2):

  2. for (i in range(1,10)):

  3. while (i<10):

  4. 第一个和第三个是有效的语法,但不是第二个。

    File "<stdin>", line 2
        for (i in range(1,10)):
                              ^
    

2 个答案:

答案 0 :(得分:7)

因为for (i in range(1,10))在句法上不正确。

假设无论如何都会解析(i in range(1,10)),它会返回一个布尔值。那么你就是在尝试说for Truefor False,并且不能对布尔值进行迭代,而且它的语法无效。


你的其他例子工作的原因是因为他们期望一个布尔值,这是从1 == 2i < 10

返回的

答案 1 :(得分:1)

  • 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]