Python中的EAFP原理是什么?

What is the EAFP principle in Python?

在Python中,"使用EAFP原则"是什么意思?你能举些例子吗?


从术语表:

Easier to ask for forgiveness than permission. This common Python coding style assumes the existence of valid keys or attributes and catches exceptions if the assumption proves false. This clean and fast style is characterized by the presence of many try and except statements. The technique contrasts with the LBYL style common to many other languages such as C.

例如,尝试访问字典键。

EAFP:

1
2
3
4
try:
    x = my_dict["key"]
except KeyError:
    # handle missing key

LBYL:

1
2
3
4
if"key" in my_dict:
    x = my_dict["key"]
else:
    # handle missing key

lbyl版本必须在字典中搜索两次键,也可能被认为是可读性稍差。


我称之为"乐观编程"。我们的想法是,大多数时候人们会做正确的事情,错误应该很少。因此,首先对发生的"正确的事情"进行编码,如果没有,则捕获错误。

我的感觉是,如果一个用户要犯错误,他们应该是那个遭受时间后果的人。正确使用工具的人会快速通过。