Python中的EAFP原理是什么?
从glossary:
更容易请求原谅比许可。这种常见的Python编码风格假定存在有效的键或属性,并且如果假设证明是错误的,则捕获异常。这种干净而快速的风格的特点是存在许多
try
和except
陈述。该技术与许多其他语言(例如C)共用的LBYL style形成对比。
一个示例是尝试访问字典密钥。
EAFP:
try:
x = my_dict["key"]
except KeyError:
# handle missing key
LBYL:
if "key" in my_dict:
x = my_dict["key"]
else:
# handle missing key
的LBYL版本有搜索的字典里面的键两次,也可能略少可读性考虑。
简短的很好的例子。 – 2012-07-06 11:12:09
一个增强将是另一个优点是避免竞争条件...例如,只是尝试打开一个文件,如果你得到它,你明白了。而不是看到*,如果你能得到它*,然后试图得到它,并意识到在检查和访问试图之间的极小时间内,你可以更长时间地获得它。 – 2012-07-06 12:17:05
Python还提供了一种避免这两种情况的方法,如果处理程序仅在键不存在时为'x'分配默认值:'x = mydict.get('key')'将返回None '如果'key'不在'my_dict'中;你也可以执行'.get('key',
不根据Guido:https://mail.python.org/pipermail/python-dev/2014-March/133118.html – 2016-04-13 06:51:29