零基础小白看过来:你不得不知道的Python 代码规范

Python编码规范及测试规范 前言 本文引用 https://python-guide.gitbooks.io/python-style-guide/content/style-guide/overview.html 中的内容,以及在末尾添加了一个完整的代码样例 编码规范 如无特殊情况, 文件一律使用UTF-8编码 如无特殊情况, 文件头部必须加入#-*-coding:utf-8-*-标识 一般格式 缩进 l 统... 阅读详情

通用的标准

价值观

  • "给别人写的工具要达到自己也愿意用的标准。" - Kenneth Reitz
  • "简单比功能更重要。" - Pieter Hintjens
  • "适合90%的用例,忽略那些说话的人。" - Kenneth Reitz
  • "优美的总比丑的好。" - PEP 20
  • 为开源贡献 (为不开源的项目也贡献) 。

通用的开发指导

  • "明确好于不明确。" - PEP 20
  • "可读性很重要。" - PEP 20
  • "代码写完以后任何人都能来解决任何问题。" - Khan Academy Development Docs
  • 发现 broken window(破窗理论那个破窗) (坏的设计, 不对的决定, 或者不好的代码) 就马上解决。
  • "现在着手去做比不做要强。" - PEP 20
  • 用全力去测试,为新特性写文档。
  • 测试驱动的开发--人驱动的开发,是很重要的。
  • 这些指导方针会,并且很可能会,改变。

如果大家在学习中遇到困难,想找一个python学习交流环境,可以加入我们的python裙,裙号930900780,可领取python学习资料,会节约很多时间,减少很多遇到的难题。

关于 Python 的标准

风格

聪明的孩子都遵循 PEP 8。

命名

(命名我觉得还是英文更清晰你说是吧)

  • Variables(变量), functions, methods, packages, modules
    • lower_case_with_underscores
  • Classes and Exceptions
    • CapWords
  • Protected methods and internal functions
    • _single_leading_underscore(self, ...)
  • Private methods
    • __double_leading_underscore(self, ...)
  • Constants(常量)
    • ALL_CAPS_WITH_UNDERSCORES

通用命名指南

避免单个字母的变量 (尤其是, l, O, I)。

除非: 在非常短的代码块中,变量意义上下文直接可见

下面的代码就是可以的

for e in elements:
    e.mutate()

避免变量名冗余。

正确

import audio

core = audio.Core()
controller = audio.Controller()

错误

import audio

core = audio.AudioCore()
controller = audio.AudioController()

最好要 "反向标记"。

正确

elements = ...
elements_active = ...
elements_defunct = ...

错误

elements = ...
active_elements = ...
defunct_elements ...

避免用 getter, setter 方法

正确

person.age = 42

错误

person.set_age(42)

缩进排版

都说那么多次了,用 4 下空格键 -- 别用 tab。

Imports 方法

导入整个 module,别导入其中一个或几个 symbol。例如, 对于 module canteen 来说有文件 canteen/sessions.py,

正确

import canteen
import canteen.sessions
from canteen import sessions

错误

from canteen import get_user  # Symbol from canteen/__init__.py
from canteen.sessions import get_session  # Symbol from canteen/sessions.py

例外: 有的第三方代码文档中说明要直接导入单个 symbol的。

原因: 避免循环导入。 看 这里。

把所有的 imports 放在代码最上面,并且分成三类用空格隔开,顺序如下

  1. System imports(系统自带的)
  2. Third-party imports (第三方的)
  3. Local source tree imports (本地的)

原因:开发者能更清晰地读出 models 的来源。

注释

遵循 PEP 257 的注释准则。 reStructured Text 和 Sphinx 能帮助你更好地执行这些标准。

用一行来注释显而易见的方法

"""Return the pathname of ``foo``."""

多行注释应该包括

  • 概要
  • 用例(如果可以的话)
  • Args (参数)
  • 返回的类型
"""Train a model to classify Foos and Bars.

Usage::

    >>> import klassify
    >>> data = [("green", "foo"), ("orange", "bar")]
    >>> classifier = klassify.train(data)

:param train_data: A list of tuples of the form ``(color, label)``.
:rtype: A :class:`Classifier <Classifier>`
"""

Notes

  • 用动词 ("Return") 而不是用名词 ("Returns").
  • 注释 class 中的 __init__ 方法。
class Person(object):
    """A simple representation of a human being.

    :param name: A string, the person's name.
    :param age: An int, the person's age.
    """
    def __init__(self, name, age):
        self.name = name
        self.age = age

注解

减少使用注解,一般来说多用一些 small methods 比注解更有效。

错误

# If the sign is a stop sign
if sign.color == 'red' and sign.sides == 8:
    stop()

正确

def is_stop_sign(sign):
    return sign.color == 'red' and sign.sides == 8

if is_stop_sign(sign):
    stop()

当你写注解时, 想想: "Strunk and White apply."(我也不知道这是啥,摊手) - PEP 8

每一行的长度

莫慌。 80-100 个字符差不多。

可以把长的字串加上小括号。

wiki = (
    "The Colt Python is a .357 Magnum caliber revolver formerly manufactured "
    "by Colt's Manufacturing Company of Hartford, Connecticut. It is sometimes "
    'referred to as a "Combat Magnum". It was first introduced in 1955, the '
    "same year as Smith & Wesson's M29 .44 Magnum."
)

测试

争取 100% 的覆盖率。不过也别太钻牛角尖。

通用测试指南

  • 可以用长的,描述性的命名方式。这样可以不需要对 test methods 注释。
  • 测试是独立的。别用真实的网络或数据库,可以用分离的用模拟数据的测试数据库。
  • Prefer factories to fixtures. (感觉是一个用于测试的 model)
  • 别让没完成的测试通过,不然你很可能把它忘了。此外,你应该加上一个 placeholder: assert False, "TODO: finish me"。

单元测试

  • 专注于一小部分功能。
  • 最好要快,不过即使慢也不能不测试。
  • 对于单个 class 或 model 可以提供一个专门的测试用例。
import unittest
import factories

class PersonTest(unittest.TestCase):
    def setUp(self):
        self.person = factories.PersonFactory()

    def test_has_age_in_dog_years(self):
        self.assertEqual(self.person.dog_years, self.person.age / 7)

功能测试

功能测试是更高一个级别的测试,更贴近用户操作你的应用的场景。一般用于 web 和 GUI 的应用。

  • 把测试写的场景化。测试用例和测试方法名称应该对一个场景的描述。
  • 在代码前用注释写出这句代码的故事(功能)。
import unittest

class TestAUser(unittest.TestCase):

    def test_can_write_a_blog_post(self):
        # Goes to the her dashboard
        ...
        # Clicks "New Post"
        ...
        # Fills out the post form
        ...
        # Clicks "Submit"
        ...
        # Can see the new post
        ...

注意测试用例以及方法名连起来读就是: "Test A User can write a blog post",是不是很好用。

Inspired by...

 

最后多说一句,想学习Python可联系小编,这里有我自己整理的整套python学习资料和路线,想要这些资料的都可以进q裙930900780领取。

本文章素材来源于网络,如有侵权请联系删除。

Python的pep8(代码规范) 主要是学习一下python的代码规范,根据官方文档翻译而来 阅读详情

相关推荐

学习Python:从Codeacademy学习Python

学习Python:从Codeacademy学习Python

使用Python编写自动化测试代码规范整理

​ 大家好,我们平时在写自动化测试脚本或者性能测试脚本时,需要注意代码规范,提高代码的可读性与维护性,之前给大家分享过pycharm的两个插件,大家可以参考:Pycharm代码规范与代码格式化插件安装,本文中主要从自动化测试代码与性能测试代码的功能性、可读性、维护性和版本控制出发,和大家一起探讨一下规范与需要注意的点,希望能给大家带来一点帮助。

若不知道要驶向哪个码头,那么任何风都不会是顺风。 2049

python编码规范.doc

python编码规范,根据谷歌编码规范 https://google.github.io/styleguide/pyguide.html整理而成,帮助python程序员规范代码书写

用Python做测试——测试人员需要掌握的Python基础(一)

a、字符串的定义方法 使用单引号(') 你可以用单引号指示字符串,就如同'Quote me on this'这样。所有的空白,即空格和制表符都照原样保留。 使用双引号(") 在双引号中的字符串与单引号中的字符串的使用完全相同,例如"What's your name?"。 使用三引号('''或""") 利用三引号,你可以指示一个多行的字符串。你可以在三引号中自由的使用单引号和双引号。例如

文山 1万+

保姆级QFIL线刷教程:从驱动安装到成功刷机的完整避坑指南(Win10/11实测)

本文提供了一份详细的QFIL线刷教程,涵盖从驱动安装到成功刷机的完整流程,特别针对Win10/11系统进行了实测。文章重点解决了EDL模式下的常见问题,如Download Fail和COM Port识别错误,并提供了实用的避坑技巧和故障排除方案,帮助用户实现零失误操作。

weixin_29245767的博客 765

CDO批量处理nc文件:5分钟搞定CMIP6数据双线性插值(附完整代码)

本文详细介绍了如何使用CDO工具链中的`remapbil`命令,快速实现CMIP6数据的批量双线性插值处理。通过环境配置、核心操作步骤、高级优化技巧及典型报错解决方案,帮助科研人员高效处理大规模nc文件,显著提升气象数据处理效率。

weixin_29267307的博客 294

python测试demo编写规范

今天学习jieba分词的源码,看到了他书写的还是很简洁的。因为python写的不多,所以要从这方面着手训练下。print('='*40) print('2. 添加自定义词典/调整词典') print('-'*40)

dataastron的博客 399

Dify DSL文件分享 Dify讨论群 大模型token资源等(持续收集更新)

基于LLMOps平台-Dify的一站式学习平台。包含不限于:Dify案例、DSL文件分享、模型接入、Dify交流讨论等各类资源分享。

同名公众号:dify实验室 3717

python测试

今天看了下同事在苦逼的测试代码,前段时间其他项目组的也在问我要不要过去做测试开发,于是便对测试稍微了解了下,而测试的目的,也就是用来证明错误的存在,而不是证明程序有没有错误。即使最简单的程序,也有无数种输入的可能,就像下面一样: def isBigger(x,y): ''' x和y是证书,如果x&amp;amp;lt;y则返回True,否则返回False ''' 毫不夸张地说,使用所有整数对运行这个程序会...

查理曹的博客 12万+

AXI backpressure反压机制代码

本文将xilinx的axi读写代码进行修改,实现吞吐量达到50%

m0_64636251的博客 1766

Synopsys SCL许可证服务器搭建详解:从安装到生成.dat文件

本文详细解析了Synopsys SCL许可证服务器的完整搭建流程,从系统环境准备、SCL安装到生成.dat文件。重点阐述了如何正确获取HOST ID、配置License文件以及调试常见故障,为数字芯片设计工程师提供了一套从零到一的实战避坑指南,确保EDA工具链稳定运行。

weixin_29306011的博客 612

Python PEP8 代码规范常见问题及解决方法

之前一直用 Python IDLE 写代码,最近换成 PyCharm 写代码总是会出现波浪号,这才了解到 Python 的 PEP8 代码规范,所以将常见的 PEP8 代码规范问题和解决方法记录一下,学习一下,遇到了再持续更新,养成良好的习惯,编写规范的代码! PEP 8: no newline at end of file 解决方法:代码末尾需要另起一行,光标移到最后回车即可 PEP...

BOB'S BLOG 11万+

微信小程序 - 详细实现随机生成订单号,微信小程序创建订单号思路,不重复订单号生成的方法,小程序自动生成固定规则的订单号流水号(必须是唯一不重复的订单号,生成唯一订单号)详细生成方法,示例代码教程最新

微信小程序,vue2,vue3,订单号,流水号思路,微信小程序 详细实现随机生成订单号(JavaScript),随机生成商户订单号,根据当前时间随机生成流水号或者订单号,微信小程序之商家订单,订单号随机生成器,自动生成固定规则的订单号(前缀+采购日期+6位流水号)微信小程序 生成外卖顺序号,生成订单号或流水号简单方法,实现订单号生成唯一的解决方案,如何按日期生成订单号,14位编号=8位日期(+6位流水号),自动生成订单号(固定+日期+数字),销售订单号自动生成。在微信小程序开发中,详解实现随机生成创建订单号

🏆 前端领域优质创作者 1189

Python代码规范:大神写代码规范

本文介绍了代码规范的各个方面,包括命名规范、缩进和空格、行长度和换行、空行、导入规范、注释规范、函数规范、异常处理规范、代码格式化工具以及代码审查和团队合作。当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

xiaoganbuaiuk的博客 2044

无人船 | 基于ROS的轻量级多无人艇自主导航仿真框架

无人水面艇USV是海上自主无人系统的关键组成部分,在民用、军用领域应用广泛,例如海上救援、水质测量、扫雷反潜等,因此对USV导航算法的研究具有重要意义。为了便于进行USV相关算法的验证与部署,本文介绍的这套基于ROS的多无人艇的自主导航仿真平台,轻量化地实现了建图、规划、控制等多种功能,同时自研框架保证了功能的高度可拓展和可定制

FRIGIDWINTER的博客 8014

ValueError:Using a `device_map`, `tp_plan`, `torch.device` context manager or setting `torch.set解决方案

本文主要介绍了ValueError:Using a `device_map`, `tp_plan`, `torch.device` context manager or setting 'torch.set_default_device(device)` requires `accelerate`解决方案,希望能对使用transformers的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 3万+

Python 代码规范

前言 Python 学习之旅,先来看看 Python 的代码规范,让自己先有个意识,而且在往后的学习中慢慢养成习惯 目录 Python代码规范 一、简明概述 1、编码 如无特殊情况, 文件一律使用 UTF-8 编码 如无特殊情况, 文件头部必须加入#-*-coding:utf-8-*-标识 2、代码格式 2.1、缩进 统一使用 4 个空格进行缩进 2.2、行宽 每行代码尽量不超过 80 个...

weixin_34049032的博客 3688

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

python零基础能学吗 知乎,python零基础可以自学吗

代码规范:这是一个非常好的习惯,如果开始不养好好的代码规划,以后会很痛苦。多动手,多实践:很多人学 Python 就一味的看书,学习 Python 主要是学习编程思想。勤练习:学完新的知识点,一定要记得如何去应用,不然学完就会忘,学我们这行主要都是实际操作。学习要有效率:如果自己都觉得效率非常低,那就停一停,找一下原因,去问问过来人这是为什么。

Fixf4556的博客 951

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Python代码规范!详细说明!

综上,是一些常用的代码风格规范说明。

千天夜的博客 3729

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Python入门:零基础认识Python,搞懂它能做什么

本文是《Python从入门到精通教程》的开篇章节,主要介绍Python的基础知识和应用场景。文章从Python的核心概念入手,解释其简洁易读、面向对象、跨平台等特点,并展示基本语法示例。重点讲解了Python在数据处理、自动化任务、Web开发和数据分析等领域的应用。通过具体代码示例演示了Python的基本用法、面向对象编程等关键技术点,并提供了常见问题的解决方案。文章旨在帮助零基础学习者快速理解Python的基本概念和实际应用价值,为进一步学习打下坚实基础。

未来 95% 的 AI 应用将变得隐形,广泛融入日常生活。 1万+

Python代码规范:企业级代码静态扫描-代码规范、逻辑、语法、安全检查,以及代码规范自动编排(1)

适用于企业实际使用Python或Python框架(Tornado、Django、Flask等)开发的项目作为扫描目标,进行代码规范、逻辑、语法、安全检查。代码风格规范主要有几个方面:命名规范、语言规范、格式规范。其中大部分命名规范和语言规范主要需要开发者编写代码的时候遵循。规范检测方面涉及到的主要工具:pylint、flake8、pyproject-flake8、pyflakes、mypy、autoflake、yapf、black。

SteveRocket's-Blog 4206

Python常见的 PEP8 代码规范问题和解决方法

Python常见的 PEP8 代码规范问题和解决方法

土豆同学的博客 9819

Python代码规范

转自:微点阅读 https://www.weidianyuedu.comPython 学习之旅,先来看看 Python 的代码规范,让自己先有个意识,而且在往后的学习中慢慢养成习惯Python代码规范如无特殊情况, 文件一律使用 UTF-8 编码如无特殊情况, 文件头部必须加入标识统一使用 4 个空格进行缩进每行代码尽量不超过 80 个字符(在特殊情况下可以略微超过 80 ,但最长不得超过 120)理由:这在查看 side-by-side 的 diff 时很有帮助方便在控制台下查看代码太长可能是设计有缺陷

xiaoweids的博客 4536

Python代码规范pep8

Python代码规范pep8

uncle_ll的博客 1672

【Python---代码规范 】

我们有句老话叫“干一行,爱一行”,我们不是为了考研(疯狂的赛车烂哏),而是要做一个高级的程序员。高级!写出能完成功能的程序每个程序员都可以搞定,但能写出优雅的程序的程序员却寥寥无几,因此程序写的优雅与否则是区分顶级程序员与一般程序员的终极指标所在。为了保证代码的易读性,可维护性,稳定性,以及提高脚本的美观度,运行性能,并提前发现一些隐藏的BUG,特制定这一系列通用的规则来统一大家的编写风格,各自业务组可以制定更详细的规则,如模块的划分,引用关系等。

qq_45832651的博客 1998
上一篇: 零基础学习:Python入门之字符串常用操作TOP40
下一篇: 如何使用Python进行异常检测?我来教你呀~
python阿喵
博客等级 码龄6年 169粉丝 127原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值