由于 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
在此函数段之外也能够使用。
我在其他问题中也看到过类似的结构,例如:
哪种结构更可接受?
get_message
有条件地运行还是无条件地运行,不是吗? - user395760