python:创建一个接收全局变量作为参数并测试其是否定义的函数

0 投票
1 回答
1701 浏览
提问于 2025-04-17 07:13

我遇到了一个问题:在我的Python模块里,有几个全局变量。我想用一个通用的函数来检查这些变量是否被定义,而不是对每一个变量都用常规的try - except方法。我想到了这个方法:

def isDefined(variable):    
    try:
        variable
        return True        
    except NameError as error:        
        return False

但是这个方法不管用。有没有人知道怎么做呢?谢谢!

1 个回答

4

当然,你必须把变量以字符串的形式传入,否则它会一直报NameError错误。

在Python中,globals这个内置函数会返回一个模块字典——全局变量就存储在这里面。

def is_defined(variable):
    return variable in globals()

tomato = 42

is_defined ("tomato")

(如果你觉得不能把变量名作为字符串,请提供更多背景信息,这样我可以相应地调整答案。)

要设置一个带默认值的全局变量:

def set_var(variable, value=0):
     globals()[variable] = value

撰写回答