Python中的EAFP原理
EAFP 是Python社区中的一条 gem 建议,其他社区的程序员可能不熟悉。很快, EAFP或“请求宽恕比许可更容易”意味着对您正在处理的代码持乐观态度,如果抛出异常,请抓住它并在以后处理它。
“Always remember that it’s much easier to apologize than to get permission. In this world of computers, the best thing to do is to do it.” — Grace Hopper
它不同于传统的LBYL方法或“跳前检查” ,在这种方法中,当且仅当没有错误时,您检查您的代码是否会成功并继续。
示例:假设您要打开一个文件并读取其内容。
“许可”代码:
import os
# Race condition
File_name ="test.txt"
if os.access(File_name, os.R_ok):
with open(File_name) as f:
print(f.read())
else:
print("No such file accessed")
当您请求读取文件的权限时,答案是“是”,但是当您实际阅读时,答案已经改变。这是您向竞赛条件敞开心扉的地方。
“宽恕”代码:您应该做的是继续流程并请求宽恕,即使用异常处理捕获错误。
# No Race condition
File_name ="test.txt"
try:
f = open(File_name)
except IOError:
print("No such file accessed")
else:
with f:
print(f.read())
EAFP 方法的优点:
- 显式优于隐式
- 失败,但失败快,成功快
- 失败,但失败便宜
- 不要重复自己
在评论中写代码?请使用 ide.geeksforgeeks.org,生成链接并在此处分享链接。