我有以下代码(减去一些其他操作):
def foobar():
msg=None
if foo:
msg='foo'
else:
msg='bar'
return msg
Run Code Online (Sandbox Code Playgroud)
以下是msg变量的更好实践吗?
def foobar():
if foo:
msg='foo'
else:
msg='bar'
return msg
Run Code Online (Sandbox Code Playgroud)
我知道我可以将上述函数简化为三元表达式,但是每个if-else块中都有一些操作我已经遗漏了.
要么应该没事,但我可能会做:
def foobar():
msg='bar'
if foo:
msg='foo'
return msg
Run Code Online (Sandbox Code Playgroud)
为了完整起见,这里有一些 if/else 块的单行替代方案:
msg = 'foo' if foo else 'bar'
msg = foo and 'foo' or 'bar'
msg = ('bar', 'foo')[bool(foo)]
Run Code Online (Sandbox Code Playgroud)
其中第一个绝对是最清楚的,如果您不喜欢单线,我建议您使用第二种方法或 thagorn 的答案。该bool()如果呼叫仅在最后一个必要的foo还不是布尔(或0/1)。
显然,在您的示例函数中,您甚至可以在不使用msg变量的情况下立即返回它:
def foobar():
return 'foo' if foo else 'bar'
Run Code Online (Sandbox Code Playgroud)