将函数变量从一个python文件导入另一个python文件

时间:2015-11-24 20:06:19

标签: python scope

我想将函数中定义的变量导入另一个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

3 个答案:

答案 0 :(得分:1)

ae1中的模块全局变量。除了在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