【问题标题】:How to refer to the local module in Python?如何在 Python 中引用本地模块?
【发布时间】:2009-12-02 22:42:21
【问题描述】:
假设我们有一个模块m:
var = None
def get_var():
return var
def set_var(v):
var = v
这不会按预期工作,因为set_var() 不会将v 存储在模块范围的var 中。它将创建一个局部变量var。
所以我需要一种从set_var() 中引用模块m 的方法,它本身就是模块m 的成员。我该怎么做?
【问题讨论】:
标签:
python
import
module
packages
【解决方案1】:
def set_var(v):
global var
var = v
global 关键字将允许您从函数内部更改全局变量。
【解决方案2】:
正如Jeffrey Aylesworth's answer 所示,您实际上不需要引用本地模块来实现 OP 的目标。 global 关键字可以达到这个目的。
不过为了回答OP标题,Python中如何引用本地模块?:
import sys
var = None
def set_var(v):
sys.modules[__name__].var = v
def get_var():
return var
【解决方案3】:
作为 Jeffrey 回答的后续,我想补充一点,在 Python 3 中,您可以更普遍地从最近的封闭范围访问变量:
def set_local_var():
var = None
def set_var(v):
nonlocal var
var = v
return (var, set_var)
# Test:
(my_var, my_set) = set_local_var()
print my_var # None
my_set(3)
print my_var # Should now be 3
(警告:我没有测试过这个,因为我没有 Python 3。)