我知道这个标题看起来很疯狂,但这是事实。这是我的困境。首先,我还是Python的初学者,所以请体谅。我正在尝试测试变量是否存在。现在变量来自于 yaml 解析的文件。每当我尝试这段代码时,
if not name['foo']:
print "No name given."
return False
Python 按照您的预期执行并返回 false。但是,当我尝试将其更改为这段代码时,
try:
name['foo']
except:
print "ERROR: No name given."
raise
该异常永远不会出现。我搜索了又搜索,但找不到任何可以向我解释这一点的问题或网站。我唯一的想法是解析器正在“欺骗”异常处理程序,但这对我来说实际上没有意义。
我已确保正在解析的文档的名称字段中没有空格。该字段的格式为:
*name: foo
*ver: bar
就像我说过的,我确保 foo 以及行间的任何空格都被完全删除。如果有人可以提供帮助,我们将不胜感激。
编辑:
对于 if 语句中的否定逻辑,我深表歉意。该功能必须经过一系列检查。我能想到的确保所有检查均已执行的最佳方法是在最后返回 true,如果任何单个检查失败则返回 false。
最佳答案
一些事情:
这不应该引发异常!您在两个地方执行
name['foo']
并期望不同的行为。name
的行为不像字典,如果是的话,在第一个示例中您将不会得到False
的返回,您会得到一个异常(exception)。尝试这样做:name = {} name['foo']
然后你会得到一个
KeyError
异常永远不要有
except:
block !始终捕获您要处理的特定异常,例如IndexError
或其他
关于Python:变量 "tricking"try-exception,但适用于 if 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16943179/