我实际上使用Python和Flask作为我的devblog。我知道根据语言的不同,建议使用明确的else
,但这不是强制性的,但我不知道它在Python中是如何工作的。
例如,我有一个带有if
的函数,如果该语句为真,则返回一些内容。因此,else
不是必需的,因为有或没有它,执行继续正常。
def foo(bar):
if not isinstance(foo, list):
return "an error"
else: # not necessary
return "something"
所以,我应该像这样使用它,或者像:
def foo(bar):
if not isinstance(foo, list):
return "an error"
return "something"
答案 0 :(得分:4)
在第一种情况下,Python会在函数末尾添加一个显式的return None
- 尽管我们可以看到它并不是真正需要的。在第二种情况下它没有。
我认为else:
没有任何优势
>>> import dis
>>> def f():
... if 1>2:
... return 2
... return 3
...
>>> def g():
... if 1>2:
... return 2
... else:
... return 3
...
>>> dis.dis(f)
2 0 LOAD_CONST 1 (1)
3 LOAD_CONST 2 (2)
6 COMPARE_OP 4 (>)
9 POP_JUMP_IF_FALSE 16
3 12 LOAD_CONST 2 (2)
15 RETURN_VALUE
4 >> 16 LOAD_CONST 3 (3)
19 RETURN_VALUE
>>> dis.dis(g)
2 0 LOAD_CONST 1 (1)
3 LOAD_CONST 2 (2)
6 COMPARE_OP 4 (>)
9 POP_JUMP_IF_FALSE 16
3 12 LOAD_CONST 2 (2)
15 RETURN_VALUE
5 >> 16 LOAD_CONST 3 (3)
19 RETURN_VALUE
20 LOAD_CONST 0 (None)
23 RETURN_VALUE
答案 1 :(得分:3)
这已经在这里讨论过:If-Else-Return or just if-Return?
基本上,这两种形式在效率方面是等价的,因为无论如何机器都必须跳跃。所以它归结为编码风格,你必须自己(或与你的团队)决定。
就个人而言,我更倾向于使用 else 语句来提高可读性。
答案 2 :(得分:1)
这真的没什么区别。无论哪种方式都会做同样的事情。
我更喜欢后者,因为它只是一行代码。
Jepréfèrecettedernière
答案 3 :(得分:0)
我对编程很陌生,在这个问题的背景下,我被提醒说,通常情况下我不确定是否应该使用“else”或“elif”,例如,在类似的场景中这一点。
1)
if numA < numB:
print('numA is smaller')
elif numB < numA:
print('numB is smaller')
else:
print('both numbers are equal')
2)
if numA < numB:
print('numA is smaller')
elif numB < numA:
print('numB is smaller')
elif numA == numB:
print('both numbers are equal')
我认为这不会产生巨大的影响,或者我错了?在其他例子中,我认为第二种变体可能更“强大”。
答案 4 :(得分:0)
来自Chromium's样式指南:
返回后不要使用其他:
# Bad
if (foo)
return 1;
else
return 2;
# Good
if (foo)
return 1;
return 2;
return foo ? 1 : 2;