Из-за правил определения области видимости 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
готовым к использованию за пределами этого раздела функции.
Я видел, как последняя конструкция использовалась несколько раз в других вопросах, таких как:
Какая конструкция будет более приемлемой?