在Python中测试变量是否存在的最佳方法

4 投票
2 回答
1757 浏览
提问于 2025-04-16 02:03

我正在处理超过一百万个文件,想从中提取一些数据。这些文件大致上是相似的,但偶尔会遇到一些问题,比如我期待找到的内容却不在里面。

举个例子,我希望一些sgml代码能帮我找到我需要的值。

for data_line in temp  #temp is a list of lines from a file
    if <VARIABLENAME> in data_line:
        VARIABLE_VAL=data_line.split('>')[-1]

之后我会用到VARIABLE_VAL。但有时候我会遇到一个异常:文件中没有包含

<VARIABLENAME>theName

为了处理这个问题,我在所有行处理完后加了这一行:

try:
    if VARIABLE_VAL:
        pass
except NameError:
    VARIABLE_VAL=somethingELSE

我曾经看到过一个解决方案(但现在找不到了),看起来像是

if not VARIABLE_VAL:
    VARIABLE_VAL=somethingELSE

任何帮助都将不胜感激。

2 个回答

4

Alex的解决方案是对的。不过如果你想测试一个变量是否存在,可以试试下面的代码:

if 'VARIABLE_VAL' in locals():
    ....
9

在循环之前,先把你的变量设置成默认值就行了:

VARIABLE_VAL = somethingELSE
for dataline in temp: ...

这样一来,VARIABLE_VAL 就会保持它最开始的默认值,除非在循环中被赋值为其他东西。这样你就不需要做什么奇怪的测试来确保这一点。

撰写回答