python - 如何检查变量是否存在?

标签 python arrays variables

我想检查名为 component + "_STATUS"或 + "_DESC"的变量是否存在。

我尝试了以下方法,但它不起作用。所以,这是我的代码:

Components = ['SAVE_DOCUMENT', \
'GET_DOCUMENT', \
'DVK_SEND', \
'DVK_RECEIVE', \
'GET_USER_INFO', \
'NOTIFICATIONS', \
'ERROR_LOG', \
'SUMMARY_STATUS']

for Component in Components:
    try:
        eval(Component + "_STATUS")
        eval(Component + "_DESC")
    except NameError:
        print "Missing component " + Component + " information!"
        sys.exit(StateUnknown)

最佳答案

我可能是错的,但我认为你可以通过以下方式做到这一点(没有 usign eval - 因为它不是很好用):

Components = ['SAVE_DOCUMENT', 'GET_DOCUMENT', 'DVK_SEND', 'DVK_RECEIVE', 'GET_USER_INFO', 'NOTIFICATIONS', 'ERROR_LOG', 'SUMMARY_STATUS']
missed = [x for x in Components if x + "_STATUS" not in locals() or x + "_DESC" not in locals()]
if missed:
    print "Missing components: {0:}".format(missed)
    sys.exit(StateUnknown)        

如果您需要检查变量在本地范围内的存在,您可以使用 locals() , 否则你可以使用 globals()

关于python - 如何检查变量是否存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6895748/

相关文章:

python - 如何使用Scrapy的MapCompose输入处理器

python - 安装 PyQt

c - 为什么一个函数可以返回一个由 malloc 设置的数组而不是一个由 "int cat[3] = {0,0,0};"设置的数组

variables - Mod_Rewrite 用于具有多个变量的 URL

python - 使用 ctypes 在 Python 中调用 Fortran 共享库

python - Windows 上的 pycurl 安装

arrays - IDL - 数组结构到结构数组

python - 如何在 swig 中使用 numpy.i?

java - 用户在 java 中从一系列行输入的二维数组,以行输入 "end"结尾

mysql - 在 MySQL 8.0+ 中使用 MySQL 驱动程序在 MySQL 语句中传递 C++ 变量