我想将函数中定义的变量导入另一个python文件
e1.py
def abc():
global a
a=10
e2.py
import e1
def defi():
c=e1.abc.a
print(c)
defi()
我搜索过但没有得到正确答案
以下是错误 -
Traceback (most recent call last):
File "C:\Users\gkaur\Documents\MSO Editor Tool\e2.py", line 1, in <module>
from e1 import abc
File "C:\Users\gkaur\Documents\MSO Editor Tool\e1.py", line 2
global a
SyntaxError: name 'a' is parameter and global
答案 0 :(得分:1)
a
是e1
中的模块全局变量。除了在abc
中设置之外,它与该功能无关; abc.a
是一个错误。
import e1
def defi():
c = e1.a
print(c)
# This should produce an error
defi()
但是,除非您在a
的全局范围内提供e1
值,否则在您致电abc
之前它不存在。
import e1
def defi():
c = e1.a
print c
e1.abc()
defi()
答案 1 :(得分:1)
您没有正确使用文件1中的函数:
def abc():
a = 10
return a
您应该返回该值。对于第二个文件,它应该是:
import e1
def defi():
c = e1.abc()
print(c)
defi()
在()
末尾没有e1.abc()
它实际上并没有告诉函数执行它的特定任务。
答案 2 :(得分:1)
在您致电a
之前,您的变量abc()
尚未定义。
正如您在repl中看到的dir(e1)
或help(e1)
,e1
没有变量a
,只有函数abc
。然后在致电abc()
后,a
就在这里并设置为10.
>>> import e1
>>> dir(e1)
['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'abc']
>>> e1.abc()
>>> dir(e1)
['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'a', 'abc']
>>> e1.a
10