由于 Python 的范围规则,一旦在范围内初始化的所有变量此后都可用。由于条件不引入新的范围,因此不一定需要其他语言的构造(例如在该条件之前初始化变量)。例如,我们可能有:
def foo(optionalvar = None):
# some processing, resulting in...
message = get_message()
if optionalvar is not None:
# some other processing, resulting in...
message = get_other_message()
# ... rest of function that uses message
或者,我们可以改为:
def foo(optionalvar = None):
if optionalvar is None:
# processing, resulting in...
message = get_message()
else:
# other processing, resulting in...
message = get_other_message()
# ... rest of function that uses message
当然,get_message
和get_other_message
函数可能是很多行代码,基本上是无关紧要的(你可以假设程序在每条路径之后的状态是相同的);这里的目标是使 message
准备好在函数的这一部分之外使用。
我在其他问题中多次看到后一种构造,例如:
哪种结构更容易被接受?
最佳答案
Python 还有一个非常有用的 if 语法模式,您可以在这里使用
message = get_other_message() if optional_var else get_message()
或者如果你想和None严格比较
message = get_other_message() if optional_var is not None else get_message()
与您发布的示例 1) 不同,它不会不必要地调用 get_message()。
关于python - 条件变量初始化的pythonic方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8404856/