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'
这可能吗?
答案 0 :(得分:2)
在您编写的代码中,“com”中不存在“x”。 “x”属于函数名称(),comodin无法看到它。
如果要访问这样的变量,则必须在模块范围(而不是函数范围)中定义它。
在comodin.py中:
x = "car"
def name():
return x
在comodin_1.py中:
import comodin
print comodin.name()
print comodin.x
最后两行将打印相同的内容。第一个将执行name()函数并打印它的返回值,第二个只打印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"