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

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"