PEP是什么

article/2025/10/10 22:55:47

转载 :https://www.cnblogs.com/abella/p/10056875.html

PEP是什么?

PEP的全称是Python Enhancement Proposals,其中Enhancement是增强改进的意思,Proposals则可译为提案或建议书,所以合起来,比较常见的翻译是Python增强提案Python改进建议书

我个人倾向于前一个翻译,因为它更贴切。Python核心开发者主要通过邮件列表讨论问题、提议、计划等,PEP通常是汇总了多方信息,经过了部分核心开发者review和认可,最终形成的正式文档,起到了对外公示的作用,所以我认为翻译成“提案”更恰当。

PEP的官网是:https://www.python.org/dev/peps/,这也就是PEP 0 的地址。其它PEP的地址是将编号拼接在后面,例如:https://www.python.org/dev/peps/pep-0020/ 就是PEP 20 的链接,以此类推。

第一个PEP诞生于2000年,现在正好是18岁成年。到目前为止,它拥有478个“兄弟姐妹”。

官方将PEP分成三类:

I - Informational PEP

P - Process PEP

S - Standards Track PEP

其含义如下:

信息类:这类PEP就是提供信息,有告知类信息,也有指导类信息等等。例如PEP 20(The Zen of Python,即著名的Python之禅)、PEP 404 (Python 2.8 Un-release Schedule,即宣告不会有Python2.8版本)。

流程类:这类PEP主要是Python本身之外的周边信息。例如PEP 1(PEP Purpose and Guidelines,即关于PEP的指南)、PEP 347(Migrating the Python CVS to Subversion,即关于迁移Python代码仓)。

标准类:这类PEP主要描述了Python的新功能和新实践(implementation),是数量最多的提案。例如我之前提到过的f-string方式,它出自PEP 498(Literal String Interpolation,字面字符串插值)。

每个PEP最初都是一个草案(Draft),随后会经历一个过程,因此也就出现了不同的状态。以下是一个流程图:

640?wx_fmt=pngPEP process flow diagram

A – Accepted (Standards Track only) or Active proposal 已接受(仅限标准跟踪)或有效提案

D – Deferred proposal 延期提案

F – Final proposal 最终提案

P – Provisional proposal 暂定提案

R – Rejected proposal 被否决的提案

S – Superseded proposal 被取代的提案

W – Withdrawn proposal 撤回提案

在PEP 0(Index of Python Enhancement Proposals (PEPs))里,官方列举了所有的PEP,你可以按序号、按类型以及按状态进行检索。而在PEP 1(PEP Purpose and Guidelines)里,官方详细说明了PEP的意图、如何提交PEP、如何修复和更新PEP、以及PEP评审的机制等等。

为什么要读PEP?

无论你是刚入门Python的小白、有一定经验的从业人员,还是资深的黑客,都应该阅读Python增强提案。

依我之见,阅读PEP至少有如下好处:

(1)了解Python有哪些特性,它们与其它语言特性的差异,为什么要设计这些特性,是怎么设计的,怎样更好地运用它们;

(2)跟进社区动态,获知业内的最佳实践方案,调整学习方向,改进工作业务的内容;

(3)参与热点议题讨论,或者提交新的PEP,为Python社区贡献力量。

说到底,学会用Python编程,只是掌握了皮毛。PEP提案是深入了解Python的途径,是真正掌握Python语言的一把钥匙,也是得心应手使用Python的一本指南。

哪些PEP是必读的?

如前所述,PEP提案已经累积产生了478个,我们并不需要对每个PEP都熟知,没有必要。下面,我列举了一些PEP,推荐大家一读:

PEP 0 -- Index of Python Enhancement Proposals
PEP 7 -- Style Guide for C Code,C扩展
PEP 8 -- Style Guide for Python Code,编码规范(必读)
PEP 20 -- The Zen of Python,Python之禅
PEP 202 -- List Comprehensions,列表生成式
PEP 274 -- Dict Comprehensions,字典生成式
PEP 234 -- Iterators,迭代器
PEP 257 -- Docstring Conventions,文档注释规范
PEP 279 -- The enumerate() built-in function,enumerate枚举
PEP 282 -- A Logging System,日志模块
PEP 285 -- Adding a bool type,布尔值(建议阅读《Python对象的身份迷思:从全体公民到万物皆数》)
PEP 289 -- Generator Expressions,生成器表达式
PEP 318 -- Decorators for Functions and Methods,装饰器
PEP 342 -- Coroutines via Enhanced Generators,协程
PEP 343 -- The "with" Statement,with语句
PEP 380 -- Syntax for Delegating to a Subgenerator,yield from语法
PEP 405 -- Python Virtual Environments,虚拟环境
PEP 471 -- os.scandir() function,遍历目录
PEP 484 -- Type Hints,类型约束
PEP 492 -- Coroutines with async and await syntax,async/await语法
PEP 498 -- Literal String Interpolation Python,字符串插值
PEP 525 -- Asynchronous Generators,异步生成器
PEP 572 -- Assignment Expressions,表达式内赋值(最争议)
PEP 3105 -- Make print a function,print改为函数
PEP 3115 -- Metaclasses in Python 3000,元类
PEP 3120 -- Using UTF-8 as the default source encoding
PEP 3333 -- Python Web Server Gateway Interface v1.0.1,Web开发
PEP 8000 -- Python Language Governance Proposal Overview,GvR老爹推出决策层后,事关新决策方案

关于PEP,知乎上有两个问题,推荐大家关注:哪些PEP值得阅读(https://dwz.cn/7CHMBlLu),如何看待PEP 572(https://dwz.cn/L46jpzMB)。

对PEP的贡献

虽无确切数据作证,我国Python开发者的数量应该比任何国家都多。然而,纵观PEP 0 里面列举的200多个PEP作者,我只看到了一个像是汉语拼音的国人名字(不排除看漏,或者使用了英文名的)。反差真是太大了。

我特别希望,国内的Python黑客们的名字,能越来越多地出现在那个列表里,出现在Python核心开发者的列表里。

此外,关于对PEP的贡献,还有一种很有效的方式,就是将PEP翻译成中文,造福国内的Python学习社区。经过一番搜索,我还没有看到系统性翻译PEP的项目,只找到了零星的对于某个PEP的翻译。

我用心搜集了几篇中文翻译成果,分享给大家:

PEP8 --  https://dwz.cn/W01HexFD
PEP257 --  https://dwz.cn/JLctlNLC
PEP328 --  https://dwz.cn/4vCQJpEP
PEP333 --  https://dwz.cn/TAXIZdzc
PEP484 --  https://dwz.cn/dSLZgg5B
PEP492 --  http://t.cn/EALeaL0
PEP541 --  https://dwz.cn/ce98vc27
PEP3107 --  http://suo.im/4xFESR
PEP3333 --  https://dwz.cn/si3xylgw

最后,表达一下我的私心:

(1)希望本文能给大家带来知识和见识的增长,激发一些小伙伴的学习热情

(2)希望有小伙伴去翻译更多的PEP,造福Python中文社区


http://chatgpt.dhexx.cn/article/YyHaZS9I.shtml

相关文章

企业级无线渗透之PEAP

0x00 前言 上月,受邀在C-SEC上海快递行业安全会议上做了关于无线安全威胁的议题分享。介绍了家庭级的无线网络薄弱环节及攻击方法,同时列举了乌云上因无线边界被突破,造成内网沦陷的诸多例子。后半部分,简要的介绍了企业级无线网络…

深度讲解linux中fputc()函数

字符写入fputc函数 int fputc(int char, FILE *stream) 返回值 如果没有发生错误,则返回被写入的字符。如果发生错误,则返回 EOF,并设置错误标识符。 ch 为要写入的字符,fp 为文件指针。fputc() 写入成功时返回写入的字符&…

文件操作之函数fputc(),fgetc()

目录 引言 一、fputc()与putchar()的联系 二、fgetc()与getchar()的联系 总结 引言 引用自《C程序设计-清华大学出版社 (2017)》 一、fputc()与putchar()的联系 fputc(ch,fp)是将ch输出到fp所指的文件里面putchar(ch)是将ch输出到屏幕 FILE*fpfopen("text.txt",…

文件操作:fgetc与fputc函数的使用

在成功打开文件后,我们便可以对文件进行操作,以下是字符输入函数fgetc和字符输出函数fputc的简单使用说明。 如果还不知道如何打开文件的可以看看我的另一篇文章。 点我 fputc函数的使用 当我们以读的形式打开文件的时候,便可以使用fputc函数…

c语言中fputc函数的作用是,C语言中fputc函数的用法_后端开发

Python画ROC曲线和AUC值计算(附代码)_后端开发 ROC(Receiver Operating Characteristic)曲线和AUC常被用来评价一个二值分类器的优劣。这篇文章将先简单的介绍ROC和AUC,而后用实例演示如何python作出ROC曲线图以及计算AUC。 C语言中fputc函数的用法 C语言中fputc函数…

C语言文件操作入门:fopen、fclose、fputc、fgetc、fputs、fgets、fprintf、fscanf、fwrite、fread详解

本篇文章主要讲解4组函数: 字符读写:fputc和fgetc。文本行读写:fputs和fgets。格式化读写:fprintf和fscanf。二进制读写:fwrite和fread。 预备知识:fopen和fclose 如果我们要读写一个文件,就必…

linux fputc fgetc fseek rewind 函数

目录 前言fputc 函数fgetc 函数fseek函数rewind函数 前言 <sprintf fprintf 函数 > 前一节讲了 sprintf fprintf 函数 的缓存问题 在他们的基础上加了一个while&#xff08;1&#xff09;&#xff1b; 来验证 结果都是输出的 不管怎么样 都会写入到内核态 内核态在输出…

c语言中fputc函数的作用是,C语言中fputc函数的用法

C语言中fputc函数的用法 C语言中fputc函数的用法为“int fgetc (FILE *fp)”&#xff0c;该函数的作用是从指定的文件中读取一个字符&#xff0c; 读取成功时会返回读取到的字符&#xff0c;读取到文件末尾或读取失败时返回EOF。推荐教程&#xff1a;《C语言》 示例代码#includ…

STM32重写fputc

操作步骤 01、在项目中&#xff0c;加上以下函数即可&#xff08;作用&#xff1a;重写fputc&#xff09; 库函数版 int fputc( int ch, FILE *f ){ USART_SendData(USART1,(u8) ch ); while(USART_GetFlagStatus(USART1,USART_F…

STM32重写fputc汇总

1. 在工程项目中加上函数fputc 例如&#xff1a; 库函数版 int fputc( int ch, FILE *f ) {USART_SendData(USART2,(u8) ch );while(USART_GetFlagStatus(USART2,USART_FLAG_TXE)RESET);return ch; }寄存器版 int fputc(int ch, FILE *f){ while((USART2->SR&0X40)0)…

Keil 重定向 fputc 函数 以及 printf 函数的代码尺寸测试

本文的开发环境为 Keil Cortex-M3 内核处理器。 重定向 fputc 函数方法 如果想使用库函数 printf &#xff0c;必须要将 fputc 重定向到自己的串口上。 术语 重定向 可以理解为用户重写 fputc 函数&#xff0c;在重写的函数体内调用自己硬件的串口发送函数。 在 Keil 环境中…

fputc函数

/****************************************功能&#xff1a;写一个字节到文件流中*参数&#xff1a;* c 写入的字符* stream 流指针*返回值&#xff1a;* 成功返回字符* 失败返回EOF或errno*************************************/ int fputc(int c, FILE *stre…

标准c库:fputc,fgetc,feof

1、了解标准c库fopen等用法&#xff08;点击跳转&#xff09; 2、fputc写一个字符到文件 #include <stdio.h>int main() {FILE *fp;fp fopen("./test.txt","w");//int fputc(int c, FILE *stream);fputc(a,fp);fclose(fp);return 0; }3、fputc写一…

文件的输入输出函数

文章目录 前言字符输入输出函数 - fgetc和fputc文本输入输出函数 - fgets和fputs格式化输入输出函数 - fscanf和fprintf二进制输入输出函数 - fread和fwrite 前言 在文件操作函数&#xff08;一&#xff09;中&#xff0c;我们已经学会了怎样正确地打开和关闭一个文件&#xf…

计算机网络 | 传输层的两个重要协议——TCP、UDP

目录 传输层概述 传输层的作用 运输层端口号、复用与分用的概念 发送方的复用和接收方的分用 UDP和TCP的对比 TCP的流量控制 TCP的拥塞控制 TCP的差错控制 UDP的差错控制的和流控 TCP的封装格式 TCP主要特点 TCP的连接 可靠传输的工作原理 TCP连接的三次握手和四次挥…

以太网协议

以太网(Ethernet) 以太网是一种局域网技术,其规定了访问控制方法、传输控制协议、网络拓扑结构、传输速率等,完成数据链路层和物理层的一些内容,它采用一种称作CSMA/CD的媒体接入方法,其意思是带冲突检测的载波侦听多路接入(Carrier Sense, Multiple Access with Collisi…

传输层TCP协议和UDP协议

传输层协议 文章目录 传输层协议传输层&#xff1a;传输层协议&#xff1a;UDP协议&#xff1a;TCP协议&#xff1a;UDP协议和TCP协议的比较&#xff1a;适用场景&#xff1a; 传输层&#xff1a; 传输层是OSI中最重要&#xff0c;最关键的一层,是唯一负责总体的数据传输和数据…

文件传输协议FTP

文件传输协议FTP(File Transfer Protocol)是因特网中使用最广泛的文件传输协议。FTP使用交互式的访问&#xff0c;允许客户指定文件的类型和格式(如指明是否使用ASCII码)&#xff0c;并允许文件具有存取权限(如访问文件的用户必须经过授权&#xff0c;并输入有效的口令)。 文件…

传输层协议详解

一、传输层的概念和服务 1、传输层的基本概念 传输层负责端到端之间的数据传输控制传输层依赖于网络层的服务&#xff0c;对应用层提供传输服务 2、传输层的功能 跟踪会话 跟踪源主机和目的主机上应用程序间的每次通信 数据分段 将数据分段&#xff0c;并管理每个分段 …

TCP-面向连接的传输层协议

TCP 主要特点工作方式建立连接---三次握手为什么 TCP 建立连接需要三次握手&#xff0c;而不是两次&#xff1f;连接终止---四次挥手为什么要四次挥手为什么要等待2MSL TCP流量控制TCP拥塞控制1.慢开始和拥塞避免2.快重传和快恢复 传输控制协议&#xff08;TCP&#xff0c;Tran…