繁体   English   中英

如何检查 Python 是否已分配变量

[英]How to check in Python if a variable has been assigned or not

我想检查是否已分配变量。 Based on the answers in this question Referring to the null object in Python , I tried it with if outputVariable==None but this does not work and throws the error "UnboundLocalError: local variable 'outputVariable' referenced before assignment".

我有以下代码:

def testMethod(assignVariable):
    if assignVariable == True:
        outputVariable = 5
        
    if outputVariable==None:
        outputVariable = 0
 
    return outputVariable


returnValue = testMethod(False)

如果outputVariable有值,我知道如何在 return 语句之前检查。 如果不是,则应将其赋值为 0

更新:根据此处接受的答案如何检查变量是否存在? ,我尝试了以下但也没有成功:

def testMethod(assignVariable):
    if assignVariable == True:
        outputVariable = 5
        
    if outputVariable in locals():
        pass
    else:
        outputVariable = 0       

    return outputVariable


returnValue = testMethod(False)

这个问题已经在这里回答了。

如果变量没有值,则它不存在,因为您无法在没有任何初始化的情况下声明变量。

这里有一个简单的方法来帮助你:

def tryVar(var):
    try:
        val = var
    except NameError:
        return None
    return val

在您的代码中,只需在要获取变量的任何地方使用 tryVar(--) ,您就可以通过简单地检查所述变量是否存在:

if tryVar(X) is None:
   >>>DO WHATEVER

python 3.8+ 的解决方案,如果要分配变量,如果它不存在,则在一行中分配 0:

Z = x if tryVar(x) is None else x:=0

如果未分配变量,则分配该变量,并返回其值,此外,如果您不想对这些值做任何事情,您也可以:

x if tryVar(x) is None else x:=0

您无法检查未定义的变量。 即使None是 object 的明确值; 在许多情况下,这是一个很好的默认值。

这是实现您想要的惯用方式:

def testMethod(assignVariable):

    return assignVariable or 0

returnValue = testMethod(False)

您可以避免使用该中间变量,因为它除了作为占位符之外没有添加任何值; function 是一次性使用的可选。 Python 在内部负责所有这些检查。 如果您需要,还有一个三元运算符

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM