我是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()
答案 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()