Phi*_*aun 3 python syntax-error
以下代码行输出 SyntaxError: invalid syntax
for (i in range(-WIDTH,WIDTH)):
Run Code Online (Sandbox Code Playgroud)
下一个工作没有错误.我不知道这里应该是什么语法错误.所以我只是出于好奇而问.我猜测括号会阻止表达式的评估.
for i in range(-WIDTH,WIDTH):
Run Code Online (Sandbox Code Playgroud)
你的括号基本上只是混淆了解析器.
有几个原因你可以在a之后有一个开放的paren for,最明显的是使用元组解包:
>>> for (x, y) in zip(range(5), range(6, 11)):
... print(x, '->', y)
...
0 -> 6
1 -> 7
2 -> 8
3 -> 9
4 -> 10
Run Code Online (Sandbox Code Playgroud)
此外,可以在Python的大量地方使用parens进行简单分组,例如分解长行时:
>>> s = ("This is "
... "a really awkward way "
... "to write a "
... "long string "
... "over several lines")
>>>
>>> s
'This is a really awkward way to write a long string over several lines'
Run Code Online (Sandbox Code Playgroud)
所以解析器不会真的抱怨它.
然而,正如你知道的,for是应该这样写的:
for_stmt ::= "for" target_list "in" expression_list ":" suite
["else" ":" suite]
Run Code Online (Sandbox Code Playgroud)
这意味着通过这种方式分组,你构建了一个无效的循环.从本质上讲,你的读物是没有的,in因为它target_list被括号括起来.希望这是有道理的.
一种方法可以更清楚地看到发生了什么:expression_list在你的关闭之后写下你的for循环(in )的其余部分.然后,您将更清楚地了解它是如何解释此声明的.
>>> for (i in range(-WIDTH, WIDTH)) in range(-WIDTH, WIDTH):
... print(i)
...
File "<stdin>", line 1
SyntaxError: can't assign to comparison
Run Code Online (Sandbox Code Playgroud)
所以它会让你这样做,但结果x in y将是一个布尔值,它不能作为赋值的目标.你得到的原始错误是因为它:在它找到你的之前就已经到了你的in,这是一个简单的旧的无效语法,就像你刚写的那样for x:.
| 归档时间: |
|
| 查看次数: |
1229 次 |
| 最近记录: |