【发布时间】:2013-06-01 08:17:01
【问题描述】:
我知道这个标题看起来很疯狂,但这是真的。这是我的困境。首先,我仍然是 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。
【问题讨论】:
-
"Python 会按照您的预期执行并返回 false"。如果
name是一个普通的字典,而"foo"不是该字典中的键,我不希望它返回false。我期待一个KeyError。如果你想检查密钥是否存在,你应该使用if "foo" not in name。 -
您为什么希望它在
if中返回 false 并自行引发异常?
标签: python parsing exception if-statement