了解Python编码风格,让你的代码更好看

和其他编程语言不同,Python有一套独特的编码风格,掌握Python的编码风格对于编写优美的代码至关重要。

微信搜索关注《Python学研大本营》,加入读者群,分享更多精彩

本文是一篇快速了解Python编码风格的指南,了解Python编码风格将有助于写出清晰、一致、易懂的代码。

目录

  • 简介

  • 命名规则

  • 是否使用空格?

  • 一般准则

  • 使用autopep8

PEP简介

PEP是Python Enhancement Proposal的缩写。PEP是向Python社区提供信息或描述Python或其过程或环境的新特性的设计文档。

有大量的PEP列表涉及不同的Python相关主题,但本文将只关注PEP 8,它是涉及Python编码风格约定的指南。它的目的是通过定义一套命名规则、制表符与空格的用法、最大行长度等准则,使代码更易读和一致。

然而,请记住,这些并不是规则,有时不遵循某个特定的准则是有意义的,可以通过链接查看一个示例:A Foolish Consistency is the Hobgoblin of Little Minds(https://peps.python.org/pep-0008/#a-foolish-consistency-is-the-hobgoblin-of-little-minds)

命名规则

首先来看一个简单的例子。对这两个函数有什么看法?

def sumEvenNumbers(numbers):even_sum = 0for ListNumber in numbers:if ListNumber % 2 == 0:even_sum += ListNumberreturn even_sumdef sum_odd_nums(nums):OddSum = 0for n in nums:if n% 2 == 0:OddSum+= nreturn OddSum

如上所示,这个例子的最大问题是不一致。示例中有两个函数,一个是mixedCase的,另一个是snake_case的。在每个函数中定义的局部变量也有混合的命名方式。如果在一个大项目中,这种混合的不同的命名方式是不应该出现的。

这种情况的问题在于以下几个原因:

  • 阅读代码的次数往往多于编写代码的次数,所以保持代码的简洁和易懂是很重要的。

  • 在创建一个新的变量/函数/类时,可以少操心一件事,因为已经知道它应该是什么样子的,只需要想出一个描述性的名字。

  • 当到处都是相同的命名模式时,写静态分析或自动化脚本会更容易。

由于这些原因,需要定义一些大家都能遵循的标准。

在PEP 8中,它为变量、类、函数和其他的推荐命名标准提供了一个准则。下面是其中的一些:

  • 类:使用CamelCase风格(例如:class InputManager)。

  • 函数和变量:使用snake_case风格(例如:def sum_even_numbers(numbers)sum_even = 0)

  • 方法:与函数相同,如果是一个非公开的方法,则使用一个前导下划线(例如:def _calculate_intermediate_sum(self))。

  • 常量:使用所有大写字母和下划线来分隔单词(例如:MAX_WIDTH = 10)

是否使用空格?

下一个内容是空格的使用与否。这一点纯属美学范畴。

使用空格:

  • 在二元运算符(=+=-=>>=<<===,等)的两侧留一个空格(例如:sum += 5)。

  • 在元组/列表中的逗号后使用一个空格(例如:ages= [12, 13, 14]coordinates = (4, 3))

  • 在函数类型的提示中:在冒号后加一个空格,并在->的两边加一个空格(例如:def sum_even(nums: List) -> int:)

  • 在函数签名中,当默认值与类型提示结合使用时,在=周围使用白色空格(例如,def draw(scale: int = 1) -> None:)。

不使用空格:

  • 不要添加额外的空格来对齐运算符。

  • 在元组/列表中的逗号之前。

  • 紧靠小括号、大括号或圆括号内。

  • 避免尾部使用空格。

如下所示是一些好与坏的例子:

# 好例子
age = 20
social_security_number = 1111info[0] = (names[0], {'address': 'somewhere'})heights = [180, 178, 195]# 坏例子
age                    = 20
social_security_number = 1111info[ 0] = ( names[ 0 ], { 'address': 'somewhere' } )heights = [180 , 178 , 195]

一般准则

受限于篇幅,还有很多其他的准则本文仅简短提示一下内容(更详细的描述可以在PEP 8文档中找到)(https://peps.python.org/pep-0008/):

  • 导入应该在单独的行中进行。

  • 使用空格而不是制表符 (除非在代码库中已经使用了制表符,因为Python不允许混合使用空格和制表符)。

  • 建议代码的最大行长为79个字符,注释或文档字符串为72个字符。

  • 每个缩进级别使用4个空格。

使用autopep8

偶尔需要一些帮助,当涉及到遵循讨论过的标准时,首选库是autopep8。这个工具会自动格式化Python代码以符合PEP 8风格指南,还可以指定格式化的程度以及在格式化时是否应该忽略一些规则 (由autopep8修复的规则:https://pypi.org/project/autopep8/#features)。

安装它:

pip install autopep8

使用它:

autopep8 --in-place --aggressive <filename>

如果在Visual Studio Code上开发,建议使用Python扩展中的自动格式化功能,当保存文件时,它会在文件上运行autopep8

只需要在VSCode settings.json文件中添加几行代码。下面是一个示例片段:

"python.formatting.autopep8Args": ["--max-line-length=79","--ignore","E402"],"editor.formatOnSave": true,

推荐书单

《Python从入门到精通(第2版)》

《Python从入门到精通(第2版)》从初学者角度出发,通过通俗易懂的语言、丰富多彩的实例,详细介绍了使用Python进行程序开发应该掌握的各方面技术。全书共分23章,包括初识Python、Python语言基础、运算符与表达式、流程控制语句、列表和元组、字典和集合、字符串、Python中使用正则表达式、函数、面向对象程序设计、模块、异常处理及程序调试、文件及目录操作、操作数据库、GUI界面编程、Pygame游戏编程、网络爬虫开发、使用进程和线程、网络编程、Web编程、Flask框架、e起去旅行网站、AI图像识别工具等内容。所有知识都结合具体实例进行介绍,涉及的程序代码都给出了详细的注释,读者可轻松领会Python程序开发的精髓,快速提升开发技能。除此之外,该书还附配了243集高清教学微视频及PPT电子教案。

《Python从入门到精通(第2版)》【摘要 书评 试读】- 京东图书京东JD.COM图书频道为您提供《Python从入门到精通(第2版)》在线选购,本书作者:明日科技,出版社:清华大学出版社。买图书,到京东。网购图书,享受最低优惠折扣!icon-default.png?t=N5K3https://item.jd.com/13284890.html

精彩回顾

《领略数学之美,使用Python创建分形图案》

《使用Python进行自动化录屏》

《轻松完成异步任务,一文搞懂Python Celery》

《ChatGPT插件使用攻略,解锁互联网新体验》

《使用Python轻松创建Flask API后台任务》

《使用ChatGPT API创建Python文档,竟然如此简单》

《16 个必知必会的 Python 技巧,助你高效编程》

微信搜索关注《Python学研大本营》,加入读者群

访问【IT今日热榜】,发现每日技术热点

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/64032.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

国家电网可视化平台完工交付给客户!

国家电网可视化平台完工交付给客户&#xff0c;助力电网信息化&#xff01; 转载于:https://www.cnblogs.com/shuzikeji/p/7844358.html

2019年南方电网和国家电网考纲对比(通信类)

最近在准备关于国家电网和南方电网的校园招聘笔试&#xff0c;整理了如上内容&#xff0c;仅供参考&#xff0c;小结如下&#xff1a; 南方电网&#xff1a; 批次&#xff1a;南方电网校园招聘考试一般每年只有一批&#xff0c;比重&#xff1a;比较注重面试环节&#xff0c;面…

国家电网 计算机 《信息新技术》 整理

信息新技术概论 分布式处理基础分布式数据库&#xff08;DDB,Distributed Database)︰分布式文件系统(DFS&#xff0c;Distributed File System)区块链(Blockchain)&#xff1a; 物联网基础基本概念 大数据基础人工智能基础神经网络(NNsNeural Networks)机器学习 典型硬件技术基…

【NLP】千呼万唤始出来——GPT-3终于开源!

文 | 小戏编 | 小轶 GPT3终于开源&#xff01;不过&#xff0c;不是官方开的&#xff08;别打我 Eleuther AI推出的名为GPT-Neo的开源项目&#xff0c;于今晨4点于twitter正式宣布&#xff1a;已经开源了复现版GPT-3的模型参数&#xff08;1.3B和2.7B级别&#xff09;&#xff…

属于自己的贾维斯

属于自己的贾维斯之Python学习 人生第一次写博客&#xff0c;想记录下自己的学习过程&#xff0c;以便以后复习简单(毕竟自己的博客总想知道有没有人来看,就可以顺便过来复习了)&#xff0c;因为用笔的记录感觉都没怎么去看,所以就想用这种方法来记录。因为本人比较懒再加上精神…

七夕送女友什么礼物有意义、送女朋友实用的七夕礼物清单

在即将到来的中国传统情人节——七夕节当中&#xff0c;怎样送女朋友实用又用心的礼物呢&#xff1f;想必有不少男生朋友们不知道怎么选择吧&#xff01;要知道合适的礼物可以在改善生活质量的同时也为彼此的感情带来惊喜&#xff0c;今天就为大家带来送女朋友实用的5个礼物推荐…

七夕节送女朋友什么礼物、能让女生感动到哭的礼物推荐

七夕作为我国的传统情人节马上就要到来了。在这一天也是恋爱中人相互向对方表达爱意的好时机&#xff0c;精心为对方准备一份七夕礼物也是情理之中的事&#xff0c;但是咱们很多男性小伙伴在面对市面上令人眼花缭乱礼物的时候&#xff0c;在挑选问题上却是不知从何下手了。别担…

程序员如何哄女朋友开心的秘籍,定制给女朋友一个应用(生日礼物)

这算是我写的安卓比较完整的一个应用了吧&#xff0c;不过其实也还不怎么完整&#xff0c;还有好多功能没有加进去&#xff0c;但是由于昨天是女朋友的生日&#xff0c;所以就送给他了&#xff0c;这也是我学习安卓半个月来的第一个应用了“音乐播放器”&#xff01; 制作&…

女朋友过生日送什么礼物好?

观察她喜欢什么 平日里陪她逛街购物时&#xff0c;你留意到她很喜欢一件衣服或是饰品之类的&#xff0c;她可能因为各种原因&#xff0c;没买。你记在心里面&#xff0c;生日前买下了&#xff0c;作为生日礼物送个她&#xff0c;她会非常的欢喜。 如果离过生日还有很长一段时间…

如何做一个网页送给女朋友做生日礼物!感动到哭!

如何做一个网页送给女朋友做生日礼物 本文里面涉及到python&#xff0c;HTML &#xff0c;css,JavaScript的知识&#xff0c;是基于python的flask框架做的一个小型网站&#xff0c;里面可以实现跳转功能&#xff0c;怎么配置flask的环境变量&#xff0c;去官方文档看就好了&am…

情人节送女朋友什么礼物最好?五大首选礼物排行榜单!

一年一度的情人节又要到了&#xff0c;各位男生有没有因为不知道给女朋友们挑选什么礼物而心慌慌&#xff1f;情人节礼物绝对能反映出你对女朋友平时喜好的了解程度&#xff0c;选对了情人节礼物&#xff0c;可以让你们的感情更加甜蜜。今天就来说说有哪几款非常适合送女孩子的…

如何做一个网页送给女朋友做生日礼物!这应该是最好的礼物了!

如何做一个网页送给女朋友做生日礼物 本文里面涉及到python&#xff0c;HTML &#xff0c;css,JavaScript的知识&#xff0c;是基于python的flask框架做的一个小型网站&#xff0c;里面可以实现跳转功能&#xff0c;怎么配置flask的环境变量&#xff0c;去官方文档看就好了&am…

这是我送给兄弟女朋友的六一礼物

这是我送给兄弟女朋友的六一礼物 1. 写在前面2. 前期准备2.1. 需要安装的库2.2. 安装库的命令2.3. 库的介绍 3. 代码展示4. 运行结果展示5. 总结 1. 写在前面 事情是这样的&#xff0c;最近不是六一儿童节嘛&#xff0c;好像我身边充斥着大量大龄儿童。我兄弟就是木讷&#xf…

给女友的网页小惊喜,(生日,周年,表白通用) ☞谁说程序员不懂浪漫

有女朋友的拿去给女朋友一个惊喜&#xff0c;没女朋友的拿去表白&#xff0c;或者NEW它10000000个&#xfeff;ε≡٩(๑>₃<)۶ 文章目录 前言适用范围网页展示登录界面文字界面图片界面尾部界面 获取源码 前言 前些日子是女友的一周年&#xff0c;康康想用一种特殊的方…

520送什么给男朋友最好?送男朋友礼物排行榜

520要到啦&#xff0c;还没给男朋友准备好礼物的小伙伴儿们就赶紧收藏好这份超级礼物清单吧&#xff01;就我个人而言&#xff0c;有意义的礼物无非是让他感受到你的心意&#xff0c;大多数男生一般都不太会期待女生送来多珍贵的礼物&#xff0c;相反的是&#xff0c;他们更期待…

520送男朋友什么礼物比较好、520给男朋友的实用性礼物

520节日马上来临&#xff0c;各位女生朋友有没有想好给男票准备爱的礼物呢&#xff1f;对于男生来说&#xff0c;最关注的莫过于数码产品和游戏&#xff0c;所以准备礼物的时候往这个方向靠拢准没错&#xff01;但是部分女生对于这方面可能还是小白&#xff0c;所以小编在这里也…

七夕送女朋友什么礼物比较有意义!女生都拒绝不了的礼物推荐篇

马上就是七夕啦&#xff01;是不是很多朋友们都在想着到底送什么礼物给对方才会更合适呢&#xff01;别担心&#xff0c;身为一个好物推荐博主&#xff0c;在各种节日已经来去自由&#xff0c;对于女孩子喜欢的东西&#xff0c;那当然是女孩子更懂女孩子啦&#xff01;下面就是…

python程序员怎么给女朋友准备礼物

先来展示一下效果图&#xff1a; 不知道大家给女朋友的备注是什么&#xff1f;下面看看我的备注。 这是我给女朋友的备注&#xff1a; 再来看看给女朋友一个发射爱心的图片&#xff0c;这个叫“既许一人以偏爱&#xff0c;愿尽余生之慷慨”&#xff0c; 看完了发射爱心&#x…

生日快乐送女朋友的网页生日礼物模版

生日快乐送女朋友的网页生日礼物模版 Demo: http://sylvanding.online/happy-birthday-20221120 仓库&#xff1a;https://github.com/sylvanding/happy-birthday-20221120 参考 背景 https://codepen.io/arcs/pen/XKKYZW蛋糕 https://codepen.io/fixcl/pen/AaBNZB卡片 http…

520情人节到了,作为程序猿的我用代码给女朋友送了一个礼物「可以拿去送给自己喜欢的人」

写在前面&#xff1a; 我是「扬帆向海」&#xff0c;这个昵称来源于我的名字以及女朋友的名字。我热爱技术、热爱开源、热爱编程。技术是开源的、知识是共享的。 这博客是对自己学习的一点点总结及记录&#xff0c;如果您对 Java、算法 感兴趣&#xff0c;可以关注我的动态&…