Python中的PEP

目录

PEP是什么?

为什么要读PEP?

哪些PEP是必读的?

PEP的中文翻译


PEP是什么?

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

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的中文翻译

几篇中文翻译成果,分享给大家:

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

加油吧,小伙伴们!

<think>我们正在解决PEP8警告W292:文件末尾没有换行符的问题。根据PEP8规范,每个文件末尾都应该有一个换行符。这个警告通常是因为文件的最后一行后面没有空行(即换行符)导致的。解决方法很简单:在文件的最后一行之后添加一个空行(即换行符)。步骤:1.打开出现警告的Python文件。2.将光标移动到文件的最后一行。3.按Enter键(回车键)添加一个空行(实际上是在最后一行内容后面添加一个换行符)。4.保存文件,警告就会消失。注意:有些编辑器会自动在文件末尾添加换行符,但有些不会。PyCharm通常会在保存时自动修复这个问题,但如果手动关闭了相关设置,可能会遇到此警告。在PyCharm中,我们可以通过以下步骤确保自动添加换行符:1.打开设置:File->Settings(或者按Ctrl+Alt+S)。2.在设置中,找到Editor->General->EnsurelinefeedatfileendonSave(确保保存时在文件末尾添加换行符)。3.勾选这个选项,然后点击Apply和OK。这样,每次保存文件时,PyCharm会自动在文件末尾添加换行符(如果还没有的话)。另外,我们也可以使用PyCharm的代码检查工具来修复:1.当出现警告时,将鼠标放在警告上,按Alt+Enter(或者点击灯泡图标)。2.选择“Insertfinalnewline”(插入末尾换行符)即可。引用说明:根据引用[1]中提到的PEP8代码规范,我们应当养成良好的编码习惯,包括在文件末尾添加换行符[^1]。示例:假设文件内容如下(没有换行符):```pythonprint("Hello,World!")<EOF>```其中<EOF>表示文件结束,没有换行符。这会导致W292警告。修改后:```pythonprint("Hello,World!")#这里有一个换行符(空行),但注意:最后一行是空行,实际上就是最后一行后面有一个换行符```注意:最后一行是空行,表示在内容后面有一个换行符。也可以是非空行后面加换行符,例如:```pythonprint("Hello,World!")#这一行后面有换行符```只要在文件末尾有换行符即可。总结:解决W292警告的方法就是确保文件末尾有一个换行符。在PyCharm中,我们可以手动添加,也可以设置自动添加。§§相关问题§§1.如何配置PyCharm自动遵循PEP8规范?2.PEP8规范中关于空行的其他要求有哪些?3.如何批量修复多个Python文件的PEP8警告?</think>### 解决Python PEP 8 W292警告:文件末尾缺少换行符 #### 问题原因 W292警告表示您的Python文件**末尾缺少换行符**。根据PEP 8规范: > "所有文本文件都应该以换行符结束" > 这是UNIX标准做法,确保文件在终端显示时格式正确[^1]。 #### 解决方法 ##### 1. PyCharm自动修复(推荐) - **快捷键操作**:将光标定位在文件末尾 → 按 `Ctrl + Alt + L`(Windows/Linux)或 `Cmd + Option + L`(macOS) - **菜单操作**:`Code` → `Reformat Code` - **自动修复效果**:PyCharm会自动在文件末尾添加空行 ##### 2. 手动添加换行符 1. 滚动到文件最后一行 2. 将光标放在最后一行末尾 3. 按 `Enter` 键添加新行 4. 保存文件(`Ctrl + S`) ##### 3. 配置PyCharm自动处理 ```markdown 1. 打开设置:`File` > `Settings` (Windows/Linux) 或 `PyCharm` > `Preferences` (macOS) 2. 导航到:`Editor` > `General` 3. 勾选:`Ensure line feed at file end on Save` 4. 点击 `Apply` 并 `OK` ``` ![PyCharm设置截图](https://resources.jetbrains.com/help/img/idea/2022.3/ensure_line_feed.png) *启用后每次保存文件都会自动添加末尾换行符[^1]* ##### 4. 使用命令行工具修复 对于多个文件,可用以下命令批量修复: ```bash # 使用autopep8(需先安装:pip install autopep8) autopep8 --select W292 -i your_script.py # 使用sed命令(Linux/macOS) sed -i -e '$a\' *.py ``` #### 验证修复 修复后文件末尾应显示空白行标志: ![PyCharm空白行标识](https://resources.jetbrains.com/help/img/idea/2023.1/editor_whitespaces.png) #### 为什么需要这个换行符? 1. **POSIX标准要求**:文本文件必须以换行符结尾 2. **版本控制友好**:避免`No newline at end of file`的git警告 3. **终端显示正确**:防止命令行提示符与最后一行输出粘连 ```bash # 无换行符时 $ python script.py Output▶ # 提示符紧贴输出 # 有换行符时 $ python script.py Output ▶ # 提示符在独立行 ``` > **专业提示**:在PyCharm中启用`Editor > General > Appearance > Show whitespaces`可直观看到换行符(显示为`¶`符号)[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值