Python - Глобальная переменная не передается в функцию - PullRequest
0 голосов
/ 08 мая 2020

DefTest.py

def fun1():
    print x

test.py

import DefTest

x = 1

DefTest.fun()

Почему я получаю сообщение «NameError: глобальное имя 'x' не определено» при выполнении test.py? Как мне правильно настроить это, чтобы я мог использовать эту функцию

Ответы [ 4 ]

1 голос
/ 08 мая 2020

Каждый модуль имеет свою глобальную область видимости. fun использует DefTest.x, а не test.x.

>>> import DefTest
>>> DefTest.x = 5
>>> DefTest.fun()
5

Вы можете подумать, что следующее будет также работать

from DefTest import x
x = 5
DefTest.fun()

, но это не так, потому что from DefTest import x создает новая глобальная переменная в модуле test, которая инициализируется с использованием значения DefTest.x, вместо создания «псевдонима» для DefTest.x.

0 голосов
/ 08 мая 2020

Вы должны передать имя переменной x с помощью Package DefTest в файле test.py

DefTest.x = 1
DefTest.func1()
0 голосов
/ 08 мая 2020

Кажется, есть пара ошибок, которые мешают запуску вашего кода. Во-первых, fun1 не принимает никаких параметров. Попробуйте изменить его так, чтобы он принимал параметр x, или используйте: global x Во-вторых, вы вызвали неопределенную функцию - fun не существует. Попробуйте их и посмотрите, работает ли это.

0 голосов
/ 08 мая 2020

в test.py используйте полное имя: deftest.x = 1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...