Python for-else vs for elif
我以为伊里夫:是Python for-else vs for elif,python,for-loop,python-2.7,if-statement,Python,For Loop,Python 2.7,If Statement,我以为伊里夫:是 else: if: 但这是不可能使用的 对于-elif: 只有 for-else:如果: 在此代码中: for line in source: change_next = False for dataset,artnr,revision in datasets: if dataset in line: change_next = True print " ** " + dataset
else:
if:
但这是不可能使用的
对于-elif:
只有
for-else:如果:
在此代码中:
for line in source:
change_next = False
for dataset,artnr,revision in datasets:
if dataset in line:
change_next = True
print " ** " + dataset + " found"
datasets.remove((dataset,artnr,revision))
break
else:
if line.startswith("DstID:"):
print line.replace("DstID:","").rstrip()
if change_next and "Partno:" in line:
destination.write("Partno: " + artnr + "\n")
print "Partno: " + artnr
elif change_next and "Revno:" in line:
destination.write("Revno:" + revision + "\n")
print "Revno:" + revision
else:
destination.write(line)
谢谢你到目前为止的回复,我现在的问题是:这样做吗?如果一行中没有任何(已知)数据集,那么如果它是数据集,我想打印它?正确。这同样适用于
try中的else
。。除了else
是一种特殊情况用法,与结构不同elif
在for
的上下文中没有任何意义,因为for
else
的含义是“如果我们完成了循环而没有中断,就做这件事”。这是二进制逻辑elif
在这个二进制决策的上下文中没有意义。elif:
不是一个扩展到的宏,否则:如果
,它是一个语法元素,仅在一个二进制决策的上下文中有效。通常,else:if
将打开一个新的if
块;但是,elif:
不会这样做。您引用的“else”与“for”命令绑定,而不是与“if”命令绑定elif'仅在与'if'命令一起使用时才有意义
对于“for”命令,“else”块只有在“for”块没有被“break”命令过早结束时才被执行,请参见。我编写Python大约7年了,我从来都不知道
for
语句中的else
子句…@AndrewJaffe:这是可以理解的。它不是特别有用。我想我只使用过几次。@JoelCornett我一直都在使用它。这是幸运的,因为否则我们不能在一个if
语句中包含多个elif
子句,这太糟糕了!(…我想除非后续的扩展到越来越缩进的,否则:如果块,这会很奇怪…哇,我现在需要漂白我的大脑。)但是在之后有elif
是有意义的,对吗?对我来说,我们可以为……做。。。else
,但对于。。。埃利夫。。。埃利夫。。。。。。。。。。。否则
似乎不一致。在
的后面加上elif
有什么意义?循环后的else
与if
做的事情不一样(这让人困惑)。还有while
else
,但它的使用频率甚至比for
else
的@MRABelif
在中没有上下文意义,而else
中也没有上下文意义。或者在中尝试
除了
其他
。关键是elif
在这些上下文中不存在,因为它在逻辑上没有意义。对我来说elif
在中对。。。埃利夫。。。else
上下文。将其视为等同于。。。否则如果。。。else
。有什么是没有意义的?我知道python语法不允许这样做。我是说,从语义上讲,它是有意义的。