Pet*_*ore 1 python-2.7 python-3.x
我不明白为什么在python中允许这样做?
>>> for i in []:
... print(i)
... else:
... print('here')
...
here
Run Code Online (Sandbox Code Playgroud)
如果没有语法错误,应该没有其他吗?else每次也会运行(如果for进行了迭代),因此未连接。
>>> for i in 1,2,3:
... print(i)
... else:
... print('here')
...
1
2
3
here
Run Code Online (Sandbox Code Playgroud)
来自文档
* else子句在循环正常完成后执行。这意味着循环未遇到break语句。*
因此,这在执行for循环但不知道是否在循环中找到元素/在循环中返回true时很有用。因此,如果找到/ true,则可以添加break语句退出循环,如果找不到/ true,则可以执行另一条命令。例如在您的循环中:
for i in []:
print(i)
else:
print('here')
Run Code Online (Sandbox Code Playgroud)
输出量
here
Run Code Online (Sandbox Code Playgroud)
在这种情况下,在您的for循环中找不到我。但是,您没有在for循环之后执行break语句。因此,else由于for循环未中断,因此编译器随后转到该语句以执行该行。
在第二个示例中,您具有:
for i in 1,2,3:
print(i)
else:
print('here')
Run Code Online (Sandbox Code Playgroud)
输出量
1
2
3
here
Run Code Online (Sandbox Code Playgroud)
for循环没有遇到break语句,因此在for循环完成后,它将执行else子句。但是您将使用:
for i in 1,2,3:
print(i)
break
else:
print('here')
Run Code Online (Sandbox Code Playgroud)
输出:
1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
76 次 |
| 最近记录: |