我刚刚开始使用python作为脚本语言,但我很难理解如何从另一个文件中调用对象。这可能只是因为我对使用属性和方法不太熟悉。
例如,我创建了这个简单的二次公式脚本。
qf.py
#script solves equation of the form a*x^2 + b*x + c = 0
import math
def quadratic_formula(a,b,c):
sol1 = (-b - math.sqrt(b**2 - 4*a*c))/(2*a)
sol2 = (-b + math.sqrt(b**2 - 4*a*c))/(2*a)
return sol1, sol2
因此,在python shell中或从其他文件访问此脚本非常简单。如果我导入函数并调用它,我可以将脚本输出为一组。
>>> import qf
>>> qf.quadratic_formula(1,0,-4)
(-2.0, 2.0)
但我不能简单地从导入的函数中访问变量,例如返回集合的第一个成员。
>>> print qf.sol1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'sol1'
如果我将名称空间与导入的文件
合并,也会发生同样的情况>>> from qf import *
>>> quadratic_formula(1,0,-4)
(-2.0, 2.0)
>>> print sol1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'sol1' is not defined
是否有更好的方法从导入的文件中调用这些变量?我认为sol1&amp; sol2取决于给定的参数(a,b,c)使得调用它们变得更加困难。
答案 0 :(得分:1)
我认为这是因为sol1
和sol2
是仅在函数中定义的局部变量。你能做的就像是
import qf
sol1,sol2 = qf.quadratic_formula(1,0,-4)
# sol1 = -2.0
# sol2 = 2.0
但此sol1
和sol2
与qf.py
中的变量不同。