如何从python中另一个文件中的函数访问变量

时间:2017-03-23 09:37:47

标签: python python-2.7 python-3.x

我是python的新手。作为我的项目的一部分,我正在使用python2.7。我在python中处理多个文件。在这里,我面临一个问题,即从我在当前文件中导入的另一个文件中使用特定函数的变量。 请帮助我实现这一目标。

file1.py
class connect():
    # Contains different definitions
    def output():
        a = "Hello"
        data = // some operations
        return data

file2.py
from file1 import *
# Here I need to access both 'a' and 'data' variable from output()

2 个答案:

答案 0 :(得分:1)

因此,自从我开始编写约定以来,我已经编辑了很多,所以我又重新开始了。

首先,你的return语句是缩进的,它应该缩进到输出方法中。

def output():
    a = "Hello"
    data = // some operations
    return data

其次,Python中关于类名的约定是CamelCase,这意味着你的类应该被称为“Connect”。当你的班级没有继承任何东西时,也没有必要添加圆括号。

第三,现在你只能使用“数据”,因为只返回数据。您可以做的是通过将return语句替换为以下内容来返回a和数据:

return a, data

然后在第二个文件中,您所要做的就是写a_received, data_received = connect.output()

完整代码示例:

file1.py

class Connect:

    def output():
        a = "Hello"
        data = "abc"
        return a, data

file2.py

from file1 import Connect

a_received, data_received = Connect.output()

# Print results
print(a_received)
print(data_received)

第四,还有其他方法可以解决这个问题,例如创建实例变量,然后就不需要返回了。

file1.py

class Connect:

    def output(self):
        self.a = "Hello"
        self.data = "abc"

file2.py

from file1 import Connect

connection = Connect()
connection.output()

print(connection.a)
print(connection.data)

还有类变量版本。

file1.py

class Connect:

    def output():
        Connect.a = "Hello"
        Connect.data = "abc"

file2.py

from file1 import Connect

Connect.output()

print(Connect.a)
print(Connect.data)

最终,“正确”的方式取决于使用方式。

答案 1 :(得分:0)

您拥有的一个选项是从函数中返回所需的所有数据:

file1.py

class connect():
    # Contains different definitions
    def output():
        a = "Hello"
        data = // some operations
        return a,data   # Return all the variables as a tuple

file2.py

from file1 import connect
c = connect()
a,data = c.output()
# Now you have local variables 'a' and 'data' from output()