Пример кода, попробуйте игнорировать то, как он кажется излишне сложным - это немного глупо от реального кода, но точно имитирует поток.
def setup():
print("Setting up...")
do_something()
def do_something():
task = str(input("Enter a task to do: "))
try:
print("Doing {}...".format(task))
except:
print("Failed to do {}...".format(task))
finally:
return task
def choose_2(choice):
print("You chose {}".format(choice))
def menu_1():
choice = int(input("Choose 1 or 2: "))
if choice == 1:
setup()
menu_2(task)
menu_1()
Однако программа возвращает "UnboundLocalError: локальная переменная 'task', указанная перед присваиванием"
Почему do_something()
не , возвращая переменную task
в оператор if
в пределах menu_1()
?Как только setup()
(а затем do_something()
) завершит работу, не должно ли возвращаемое значение do_something()
оставаться внутри оператора if
, поскольку это еще не сделано?