Почему переменные недоступны для подфункции при запуске? [дубликат]Python

Программы на Python
Ответить
Anonymous
 Почему переменные недоступны для подфункции при запуске? [дубликат]

Сообщение Anonymous »

Этот скрипт определяет переменную внутри main(), но эта переменная недоступна для func(), который выполняется внутри main(). Почему?

Код: Выделить всё

#!/usr/bin/env python3
# vars_in_func.py
# Test script for variables within a function.

def func():
print(greeting)

def main():
greeting = "Hello world"
func()

main()
Ошибка:

Код: Выделить всё

Traceback (most recent call last):
File "./vars_in_func.py", line 11, in 
main()
File "./vars_in_func.py", line 9, in main
func()
File "./vars_in_func.py", line 5, in func
print(greeting)
NameError: name 'greeting' is not defined
Если я конвертирую скрипт в Python2, ошибка будет той же, за исключением того, что вместо имени будет указано глобальное имя.

Я предполагаю, что мне просто не хватает ключевой концепции. Я только начал изучать Python после изучения Bash.

Изменить: прочитав ответы, я понял свою ошибку: я все еще думаю в терминах Bash, где функции выполняются либо в той же оболочке, что и вызывающая сторона (с теми же переменными), либо в подоболочке вызывающей стороны (наследуемые переменные).

Подробнее здесь: https://stackoverflow.com/questions/413 ... ion-on-run
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»