функция импорта python из файла - глобальное имя '' не определено - PullRequest
0 голосов
/ 10 мая 2018

У меня проблема с импортом одной функции из файла и выполнением ее в другой. Я не могу передать переменную 'efgh' в fun_a ().

#cat fun_a.py 
def fun_a(abcd):
    print '%s - %s'%(abcd, efgh)
if __name__ == "__main__":
    pass

#python
Python 2.7.5 (default, Oct 11 2015, 17:47:16) [GCC 4.8.3 20140911 (Red Hat 
4.8.3-9)] on linux2 Type "help", "copyright", "credits" or "license" for 
more information.
>>> from fun_a import *
>>> efgh = 'test2'
>>> fun_a('test1')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "fun_a.py", line 2, in fun_a
    print '%s - %s'%(abcd, efgh)
NameError: global name 'efgh' is not defined

Я ожидаю, что результатом будет 'test1 - test2'.

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

Это не может работать. global в Python означает «внутри одного модуля»; [*] невозможно определить глобальную переменную в оболочке, которая бы влияла на импортируемый скрипт.

Вы должны сделать efgh параметром для функции.

[*] хорошо, вы можете сделать обезьяну-патч, но не делайте этого.

0 голосов
/ 10 мая 2018

Объявите global efgh и затем используйте его

Ex:

global efgh
efgh = 'test2'
def fun_a(abcd):
    print '%s - %s'%(abcd, efgh)

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