什么是Python 中的EAFP 哲学

简介: 什么是Python 中的EAFP 哲学

摄影:产品经理产品经理心心念念的海胆水饺

Python 有一套自己的哲学,其中 EAFP 是其中比较有名的。它的全称是Easier to Ask for Forgiveness than Permission——寻求原谅比获得授权更容易

在开发的过程中,我们经常遇到需要多次判断的情况,比如说,使用 requests请求一个接口,首先要判断请求返回的HTTP Code是不是200,接下来要判断请求返回的数据是不是 JSON 格式,接下来要判断数据解析成字典以后,里面有没有某个字段:

import json
import requests
resp = requests.get('https://xxx.com/xxx')
if resp.status == 200:
    resp_text = resp.content.decode('utf-8')
    if resp_text.startswith('{'):
        resp_info = json.loads(resp_text)
        if 'data' in resp_info:
             data = resp_info['data']
             print(data)

这种写法,会带来大量的 if 判断。而且 if 嵌套也会导致代码很难看。

但是如果使用 EAFP 哲学来写代码,就变得非常简单了:

import requests
try:
    resp_info = requests.get('https://xxx.com/xxx').json()
    data = resp_info['data']
    print(data)
except Exception:
    print('请求失败')

EAFP 哲学让你在写代码的过程中,先假设条件成立。如果不成立,用 try…except 把异常捕获住即可。

与 EAFP 相对应的是 LBYL:Look Before You Leap——你跳之前先看看。这种开发风格一般适用于 C 语言。也就是在各种操作之前频繁用 if 先做检查。

当然,EAFP虽然是 Python 推荐的一种编码风格,但使用的时候还是需要看具体情况。我们日常生活中,经常听到某某渣男追女神一直追不上,于是直接把事情办了,再跪下来一边打自己脸,一边哭,一边求原谅。结果竟然有不少人能得到了原谅。所以说,EAFP 有用是有用,但是不应该在什么地方都用。

我之前有一批文章就特别讲到了,不应该滥用 try … except: 脱离苦海,从避免滥用try…except…开始

目录
相关文章
|
2月前
|
Java Python
python代码大全
python代码大全(小白篇)
|
19天前
|
Python
python常用代码大全分享
python常用代码大全分享
17 0
|
2月前
|
Python
Python小姿势 - # Python相关技术知识点
Python小姿势 - # Python相关技术知识点
|
SQL 缓存 开发框架
Python 基本功问答21题
Python 基本功问答21题
88 0
|
存储 Java Python
【Python】2_入门Python必要的常识
​ Life is short , you need Python! 人生苦短,我用Python!😜😝 一、在书写上, 1、Python不需要“;”做结尾 2、在输出语句中,可以用单引号也可以用双引号 print('hello world') 二、注释 单行注释是: # # 单行注释 ''' 多行注释 ''' """ 多行注释 """ 在注释方面,Python对空格有着很多的要求。 在单行注释上,需要在#号后面空一格,再书写内容。否则会有下划波浪线(但不影响程序的运行) 在多行注释中,需要三个单引号或三个双引号 并且注释都需要有下一行(就是保证注释的内容不在最后一行)
72 0
|
机器学习/深度学习 人工智能 Java
最近Python那么火,学习Python究竟能干些什么?
Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言, 随着版本的不断更新和语言新功能的添加,逐渐被用于独立的、大型项目的开发。
244 0
最近Python那么火,学习Python究竟能干些什么?
|
数据采集 移动开发 安全
这才是使用Python的正确姿势!
前段时间,被儿子鄙视了,为了找回作为父亲的尊严,我豁出去了,本以为是根硬骨头,结果,太出乎意外了……
121 0
这才是使用Python的正确姿势!
|
Web App开发 测试技术 程序员
【观点】如何成为Python高手
导读:本文是从《How to become a proficient Python programmer》这篇文章翻译而来。译文来自外刊IT评论《如何成为Python高手》。 内容如下: 这篇文章主要是对我收集的一些文章的摘要。
1055 0
|
人工智能 大数据 开发者
经济学人:Python为什么是编程语言中最skr的?
Python的出现让计算机编程语言不再是生僻的专业技能,而是常人都能学习和使用的万金油。
2074 0