我没有编程的背景,所以这可能真的很愚蠢,但我以前从未考虑过这个问题:似乎else
语句基本上是多余的,因为当条件为False时,Python只是移动到下一个没有缩进的行。
例如,通常你会写:(如果不使用elif
)
x=2
if x == 1:
value = "one"
else:
if x == 2:
value = "two"
print value
但这也有效:
x=2
if x == 1:
value = "one"
if x == 2:
value = "two"
print value
有人可以举例说明else:
声明是如何以及何时必不可少的?
答案 0 :(得分:2)
如果条件相互排斥,则else
是多余的。但是,如果条件重叠,则不是这样。
x = 2
if x > 0:
print 'foo'
else: # better -- elif x > 1:
if x > 1:
print 'bar'
此程序打印foo
。
x = 2
if x > 0:
print 'foo'
if x > 1:
print 'bar'
此程序会打印foo
bar
。
答案 1 :(得分:1)
else
记住条件为False
。例如,请考虑以下代码:
if x == 1:
x = 2
print("bar")
else:
if x == 2:
print("foo")
使用 else
,只有" bar"或" foo"将被打印。
没有 else
,两者都是" bar"和" foo"可以打印,因为x
的值可以更改。
这也有助于重叠'条件:
if x > 10:
print("big")
elif x > 5:
print("medium")
elif x > 1:
print("sizable")
else:
print("small")
答案 2 :(得分:0)
其他不是必须的,而是一种便利。以下是一些:
if x == 1:
value = "one"
else:
value = "not_one"
或
if x < 1:
value = "less_than_one"
elif x < 2:
value = "between_one_and_two"
else:
value = "more_than_two"
它们都可以改写为:
if x == 1:
value = "one"
if x != 1:
value = "not_one"
或
if x < 1:
value = "less_than_one"
if 1 <= x < 2:
value = "between_one_and_two"
if 2 <= x:
value = "more_than_two"
答案 3 :(得分:0)
如果您要查找特定案例(使用else
),然后查找if
未涵盖的所有其他内容(使用if
,则else
子句非常有用)。
>>> x=3
>>> value='one' if x==1 else 'not one'
>>> value
'not one'
如果您未在此使用else
(作为条件的一部分或作为if/else
的一部分,则value
将无法定义:
>>> del value # remove the name `value`
>>> x
3
>>> if x==1: value='one'
...
>>> value
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'value' is not defined
因此,如果x不是1,您需要else
类来确保value
收到作业。
BTW,在Python中,您可以使用默认的字典而不是if/elif/elif/else
的长级联:
>>> conditions={1:'one', 2:'two', 3:'three'}
>>> conditions.get(2,'not one, two, or three...')
'two'
>>> conditions.get(19,'not one, two, or three...')
'not one, two, or three...'