从另一个脚本访问函数内的变量
Accessing a variable inside a function from another script
comodin.py
def name():
x = "car"
comodin_1.py
import comodin
print comodin.x
错误:
Traceback (most recent call last):
File "./comodin_2.py", line 4, in <module>
print comodin.x
AttributeError: 'module' object has no attribute 'x'
这可能吗?
在您编写的代码中,"x" 不存在于 "comodin" 中。 "x"属于函数name(),comodin看不到。
如果你想像这样访问一个变量,你必须在模块范围(而不是函数范围)定义它。
在comodin.py中:
x = "car"
def name():
return x
在comodin_1.py中:
import comodin
print comodin.name()
print comodin.x
最后两行将打印相同的内容。第一个将执行 name() 函数并打印它的 return 值,第二个只打印 x 的值,因为它是一个模块变量。
有一个问题:如果要从函数编辑值 "x",则必须使用 'global' 语句(在 comodin.py 末尾添加):
def modify_x_wrong():
x = "nope"
def modify_x():
global x
x = "apple"
在comodin_1.py中:
print comodin.name() # prints "car"
comodin.modify_x_wrong()
print comodin.name() # prints "car", once again
comodin.modify_x()
print comodin.name() # prints "apple"
comodin.py
def name():
x = "car"
comodin_1.py
import comodin
print comodin.x
错误:
Traceback (most recent call last):
File "./comodin_2.py", line 4, in <module>
print comodin.x
AttributeError: 'module' object has no attribute 'x'
这可能吗?
在您编写的代码中,"x" 不存在于 "comodin" 中。 "x"属于函数name(),comodin看不到。
如果你想像这样访问一个变量,你必须在模块范围(而不是函数范围)定义它。
在comodin.py中:
x = "car"
def name():
return x
在comodin_1.py中:
import comodin
print comodin.name()
print comodin.x
最后两行将打印相同的内容。第一个将执行 name() 函数并打印它的 return 值,第二个只打印 x 的值,因为它是一个模块变量。
有一个问题:如果要从函数编辑值 "x",则必须使用 'global' 语句(在 comodin.py 末尾添加):
def modify_x_wrong():
x = "nope"
def modify_x():
global x
x = "apple"
在comodin_1.py中:
print comodin.name() # prints "car"
comodin.modify_x_wrong()
print comodin.name() # prints "car", once again
comodin.modify_x()
print comodin.name() # prints "apple"