python tab和空格混用_我的 Python 编码规范

python 文件的组成

为了便于描述,先上一个 demo

#!/usr/bin/env python# -*- coding: utf-8 -*-"""通常这里是关于本文档的说明(docstring),须以半角的句号、 问号或惊叹号结尾!本行之前应当空一行,继续完成关于本文档的说明如果文档说明可以在一行内结束,结尾的三个双引号不需要换行;否则,就要像下面这样"""import os, timeimport datetimeimport mathimport numpy as npimport xlrd, xlwt, xlutilsimport youth_mongodbimport youth_curlBASE_PATH = r"d:YouthGit"LOG_FILE = u"运行日志.txt"class GameRoom(object):    """对局室"""    def __init__(self, name, limit=100, **kwds):        """构造函数!        name        对局室名字        limit       人数上限        kwds        参数字典        """        passdef craete_and_start():    """创建并启动对局室"""    passif __name__ == '__main__':    # 开启游戏服务    start()
cf0aaab37683c596e476e9b9d32c63f2.png

Linux 平台上,一个 python 源码文件应该以下部分组成。Windows 平台上,可以省略第一项。

  1. 解释器声明
  2. 编码格式声明
  3. 模块注释或文档字符串
  4. 模块导入
  5. 常量和全局变量声明
  6. 顶级定义(函数或类定义)
  7. 执行代码

编码格式声明

通常,编码格式声明是必需的。如果 python 源码文件没有声明编码格式,python 解释器会默认使用 ASCII 编码,一旦源码文件包含非ASCII编码的字符,python 解释器就会报错。以 UTF-8 为例,以下两种编码格式声明都是合乎规则的。

# -*- coding: utf-8 -*-
# coding = utf-8

我一直 UTF-8 编码格式,喜欢使用第一种声明方式。
Windows 平台上,编码格式声明必须位于 python 文件的第一行。Linux 平台上,编码格式声明通常位于 python 文件的第二行,第一行是 python 解释器的路径声明。

#!/usr/bin/env python# -*- coding: utf-8 -*-

缩进

统一使用 4 个空格进行缩进。绝对不要用tab, 也不要tab和空格混用。对于行连接的情况,我一般使用4空格的悬挂式缩进。例如:

var_dict = {    'name': 'xufive',    'mail': 'xufive@sdysit.com'}

引号

  • 自然语言使用双引号
  • 机器标识使用单引号
  • 正则表达式使用双引号
  • 文档字符串 (docstring) 使用三个双引号

注释

(#)号后空一格,段落件用空行分开(同样需要#号):

    # 块注释    # 块注释    #    # 块注释    # 块注释

行内注释,至少使用两个空格和语句分开:

age += 1  # 年龄增加一岁

比较重要的注释段, 使用多个等号隔开, 可以更加醒目, 突出重要性:

    server= gogame(room, options)    # =====================================    # 请勿在此处倾倒垃圾!!!    # =====================================    if __name__ == '__main__':        server.run()

空行

  • 编码格式声明、模块导入、常量和全局变量声明、顶级定义和执行代码之间空两行
  • 顶级定义之间空两行,方法定义之间空一行
  • 在函数或方法内部,可以在必要的地方空一行以增强节奏感,但应避免连续空行

空格

  • 在二元运算符两边各空一格,算术操作符两边的空格可灵活使用,但两侧务必要保持一致
  • 不要在逗号、分号、冒号前面加空格,但应该在它们后面加(除非在行尾)
  • 函数的参数列表中,逗号之后要有空格
  • 函数的参数列表中,默认值等号两边不要添加空格
  • 左括号之后,右括号之前不要加添加空格
  • 参数列表, 索引或切片的左括号前不应加空格

文档字符串

文档字符串是包、模块、类或函数里的第一个语句。这些字符串可以通过对象的doc成员被自动提取,并且被pydoc所用。文档字符串的使用三重双引号(""")。如果文档字符串内容不能在一行内写完,首行须以句号、 问号或惊叹号结尾,接一空行,结束的三重双引号必须独占一行。

导入模块

导入总应该放在文件顶部,位于模块注释和文档字符串之后,模块全局变量和常量之前。导入应该按照从最通用到最不通用的顺序分组,分组之间空一行:

  1. 标准库导入
  2. 第三方库导入
  3. 应用程序指定导入

应当避免使用以下的导入方法:

from math import *

命名规范

  • 模块尽量使用小写命名,首字母保持小写,尽量不要用下划线
  • 类名使用驼峰(CamelCase)命名风格,首字母大写,私有类可用一个下划线开头
  • 函数名一律小写,如有多个单词,用下划线隔开
  • 私有函数可用一个下划线开头
  • 变量名尽量小写, 如有多个单词,用下划线隔开
  • 常量采用全大写,如有多个单词,使用下划线隔开

最后,小编想说:我是一名python开发工程师,整理了一套最新的python系统学习教程,想要这些资料的可以关注私信小编“01”即可,希望能对你有所帮助。

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

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

相关文章

Twitter创始人Jack Dorsey的每日必做和不做清单

Twitter创始人Jack Dorsey显然是这段时间以来技术界的中心人物,不仅发表了一系列的文章,而且一本反映Twitter早期岁月的书也即将出版。今天,他又在Y Combinator的Startup School上发表了讲话,不过在谈话中Dorsey回避了一切不必要及…

JSR-308和Checker框架为jOOQ 3.9添加了更多类型安全性

Java 8引入了JSR-308,它为Java语言添加了新的注释功能。 最重要的是:键入注释。 现在可以像下面这样设计怪物了: 比注解更疯狂的是类型注解。 在数组上。 谁认为这是有效的Java代码? pic.twitter.com/M9fSRRerAD — Lukas Eder&…

Linux NTP服务配置 for Oracle RAC

安装Oracle 11g RAC时,我们需要配置ntp服务。在使用虚拟机的情况下对于时钟同步方式的配置有很多种方式,可以使用vmware自带的时钟同步功能,也可以直接将本地的一个节点用作时间服务器。本文介绍直接配置ntp方式的时钟服务器。1、查看两节点的…

java字符编码方式总结

java字符编码方式总结一、概要在JAVA应用程序特别是基于WEB的程序中,经常遇到字符的编码问题。为了防止出现乱码,首先需要了解JAVA是如何处理字符的,这样就可以有目的地在输入/输出环节中增加必要的转码。其次,由于各种服务器有不…

按键扫描

unsigned char Trg,cont,num;void key_sm(void) { uchar Read;ReadP0^0xff;TrgRead&(Read^cont);contRead; } void key_hs(){  switch(Trg)   {     case 0x01:       num;     break;     case 0x02:       num--;     break;     d…

Mathematica函数大全

一、运算符及特殊符号 Line1; 执行Line&#xff0c;不显示结果 Line1,line2 顺次执行Line1&#xff0c;2&#xff0c;并显示结果 ?name 关于系统变量name 的信息 ??name 关于系统变量name 的全部信息 !command 执行Dos 命令 n! N 的阶乘 !!filename 显示文件内容 <<fi…

oem是代工还是贴牌_食用油OEM贴牌代工业务要注意哪些问题?

近年来食用油OEM业务逐渐增加&#xff0c;OEM是英文 Original Equipment Manufacturer的缩写&#xff0c;被译为代工生产或贴牌生产&#xff0c;通常是指品牌商委托有生产能力且品质有保证的油脂加工厂来生产食用油产品&#xff0c;对自己及对方的品牌不会有冲突&#xff0c;且…

java 简化判断_简化Java内存分析

java 简化判断作为一名典型的Java开发人员&#xff0c;除了遵循关闭连接&#xff0c;流等典型的最佳实践外&#xff0c;我从未监视过应用程序的内存使用情况。最近&#xff0c;我们在JBoss服务器中遇到了一些问题&#xff0c;不得不深入研究内存管理Java中最好的事情之一是&…

DRF的序列化组件

rest rest下的url url唯一代表资源&#xff0c;http请求方式来区分用户行为 url的设计规范 GET&#xff1a; 127.0.0.1:9001/books/       # 获取所有数据 GET: 127.0.0.1:9001/books/{id}      # 获取单条数据 POST&#xff1a; 127.0.0.1:9001/books/      # 增…

15crmo焊接后多长时间探伤_承压设备渗透探伤检测方法简单操作思路

啥是渗透检测渗透检测俗称渗透探伤&#xff0c;是一种以毛细管作用原理为基础用于检查表面开口缺陷的无损检测方法。它与射线检测、超声检测、磁粉检测和涡流检测一起&#xff0c;并称为5种常规的无损检测方法&#xff0c;渗透检测始于本世纪初&#xff0c;是目视检查以外最早应…

SpringBoot实战(五)之Thymeleaf

Thymeleaf同jsp、volocity、freemarker等共同的职能是MVC模式中的视图展示层&#xff0c;即View。 当然了&#xff0c;SpringBoot中也可以用jsp,不过不推荐这种用法&#xff0c;比较推崇的就是使用Thymeleaf。 关于Thymeleaf学习&#xff0c;建议参考官方文档:https://www.thym…

Arrays.sort()

今天在做一个按更新时间搜寻出某个文件夹里面的所有文件&#xff0c;由于自己写算法比较花费时间&#xff0c;干脆就用j2se提供的类Arrays提供的sort&#xff08;&#xff09;方法&#xff0c;这样就比较省力。对于基本数据类型只要Arrays.sort(数组)[“注&#xff1a;数组是声…

Thymeleaf 3 – Thymeleaf 3和Spring MVC快速入门

Thymeleaf 3发布到达。 新版本带来了许多新功能&#xff0c;例如HTML5支持以及不带标记的文本模板支持– [# th:utext"${thymeleaf.version}" /] &#xff0c;改进的内联功能– <p>Thymeleaf [[${thymeleaf.version}]] is great!</p> &#xff0c;性能改…

rmi远程代码执行漏洞_【最新漏洞简讯】WebLogic远程代码执行漏洞 (CVE202014645)

↑ 点击上方“SecMind安全管家”关注我们 情报编号&#xff1a;W1120200715漏洞概述WebLogic是Oracle公司出品的用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器&#xff0c;全球使用广泛。WebLogic的远程方法调用RMI通信使用T3协议&#…

python 的内存回收,及深浅Copy详解

一、python中的变量及引用1.1 python中的不可变类型&#xff1a;数字(num)、字符串(str)、元组(tuple)、布尔值(bool<True,False>) 接下来我们讲完后你就懂了为什么它们是不可变对象了。 都知道python中一切都是对象&#xff0c;而变量就是这些对象的引用&#xff0c;什么…

不是技术牛人,如何拿到国内IT巨头的Offer

不久前&#xff0c;byvoid面阿里星计划的面试结果截图泄漏&#xff0c;引起无数IT屌丝的羡慕敬仰。看看这些牛人&#xff0c;NOI金牌&#xff0c;开源社区名人&#xff0c;三年级开始写Basic...在跪拜之余我们不禁要想&#xff0c;和这些牛人比&#xff0c;作为绝大部分技术屌丝…

layui列表筛选列_Shopify搜索产品并筛选产品列表功能介绍

搜索产品并筛选产品列表 您的所有产品都列在 Shopify 的产品区域中。每个页面列出 50 种产品。要整理产品列表&#xff0c;并在跨多个页面的列表中查找产品&#xff0c;您可以对列表进行排序、搜索和筛选。默认情况下&#xff0c;产品列表按产品名称的字母顺序(从 A 到 Z)进行排…

远程调用 quartz_如何远程管理Quartz

远程调用 quartz选项1&#xff1a;JMX 许多人问他们是否可以通过JMX管理Quartz&#xff0c;但我不确定为什么Quartz doc甚至不会提及它。 是的&#xff0c;您可以使用quartz.properties的以下命令启用石英中的JMX org.quartz.scheduler.jmx.export true之后&#xff0c;您可以…

DOM解析器

1.DOM标准 DOM&#xff08;Document Object Model&#xff0c;文档对象模型&#xff09;是W3C制定的一套规范标准&#xff0c;即规定了解析文件的接口。各种语言可以按照DOM规范去实现这些接口&#xff0c;给出解析文件的解析器。 各种基于DOM规范解析器必须按照DOM规范在内…

批量打印pdf并合并_批量打印CAD图(无删减版)

前面两期小编出的PDF教程想必用了的人都觉得还不错吧&#xff1f;(此处应有掌声)上一期提到的CAD批量打印今天放出来了&#xff0c;擦亮眼睛往下看很多时候大批量的一堆图纸要输出&#xff0c;比如下面这个当然这批图纸并不多&#xff0c;也只是局部的&#xff0c;通常一个项目…