为什么在Python中允许其他

时间:2019-02-15 18:16:23

标签: python-3.x python-2.7

我不明白为什么在python中允许这样做?

let arr = 
[
   { id: "1"},
   { id: "2"},
   { id: "3"}
]

如果没有语法错误,应该没有其他吗? else每次也会运行(如果for进行了迭代),因此它没有连接。

arr.map(x => x.id);

2 个答案:

答案 0 :(得分:4)

来自 docs

* else子句在循环正常完成后执行。这意味着循环没有遇到break语句。*

因此,这在您执行for循环但不知道该元素是否会在循环中找到/在循环中返回true时很有用。因此,如果找到/ true,则可以添加break语句退出循环,如果找不到/ true,则可以执行另一条命令。例如,在您的循环中:

for i in []:
  print(i)
else:
 print('here')

输出

here

在这种情况下,在您的for循环中找不到我。但是,您没有在for循环之后执行break语句。因此,由于for循环未中断,因此编译器随后转到else语句在此处执行行。

在第二个示例中,您有:

for i in 1,2,3:
  print(i)
else:
  print('here')

输出

1
2
3
here

for循环没有遇到break语句,因此在for循环完成后,它将执行else子句。但是您使用的是:

for i in 1,2,3:
    print(i)
    break
 else:
    print('here')

输出

1

答案 1 :(得分:3)

如果我们不从else break开始执行

for

在某些情况下这可能很有用,并且可以使我们免于制作标志的工作,从而为我们提供帮助。

示例:

如果我们想在不中断for循环的情况下执行一些代码,那么通常我们必须这样做

flag = 0
for i in [1,2,3]:
    if condition:
        flag = 1
        break
if flag == 0:
    do stuff

我们可以代替

for i in [1,2,3]:
    if condition:
        break
else:
    do stuff