从另一个脚本访问函数内的变量

时间:2015-04-15 23:29:21

标签: python variables global

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'

这可能吗?

1 个答案:

答案 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"