pep8 python 编码规范_实用的python编码规范

编码规范在程序开发中是一项很重要要求,良好的编码规范对程序的可读性、代码的可维护性都有很大的提高,从而提高开发效率。下面总结了python中一些实用的开发规范,供大家借鉴和参考。

1.每行不超过80个字符

每行代码太长既不美观也影响可读性,当需要写一行长代码时,可以使用圆括号将这行代码包起来,并在适当的地方换行。这样易读且美观。像下面这样:

7a4483235cb1700180a305f196a68429.png

不要使用反斜杠连接多行。

这种方式在导包时也适用,如果一个库中需要导入很多模块,可以使用圆括号将需导入的模块包起来,并在适当的地方换行,像下面这样:

331818564f828a37afce7b564492ae9f.png

2.使用4个空格缩进代码

你可能遇到过这种情况,在Pycharm中写好的代码上传到Linux服务器上,运行后会提示代码缩进错误。这是因为在Pycharm中,你使用的是Tab进行缩进,导致在Linux服务器上出错。

所以,要使用4个空格,而不是Tab键进行缩进。

3.适当的使用条件表达式

适当的使用条件表达式,可以使代码看起来简洁,像下面这样:

flag = request.POST.get(“flag”)flag = 1 if flag == 1 else 2

4.列表推导和生成器表达式

适当的使用列表推到和生成器表达式,也可以使代码看起来简洁,像下面这样:

students = [1, 2, 3, 4, 5, 6, 7, 8]group = [ id for id in students if id%2 == 0 ]

Lambda函数也适用于单行函数

5.使用隐式的False

在python中,0、None、[]、{}、“”这些都是False,所以我们在判断某个变量是否是这些值时,可以直接这样判断:

if param:

而不是

if param != []:

上面的方式看起来简洁多了。但是注意,0会被当作False来处理,如果你要判断一个值是否是0,就不要用上面的方式了,只能这样写:

if param == 0:

6.字符串的拼接

避免在循环中用+和+=操作符来累加字符串. 由于字符串是不可变的, 这样做会创建多余的临时对象, 作为替代方案, 你可以将每个子串加入列表, 然后在循环结束后用 .join 连接列表。

7.函数参数设置默认值

你可以在函数参数列表的最后指定变量的值, 例如

def foo(a, b = 0):

但是可能出现问题:

默认参数只在模块加载时求值一次. 如果参数是列表或字典之类的可变类型, 这可能会导致问题. 如果函数修改了对象(例如向列表追加项), 默认值就被修改了.

尽量不要在函数或方法定义中使用可变对象作为默认值。

8.函数中使用文档字符串

定义一个函数时,同时应该给它加上文档字符串,文档字符串中包含函数功能、函数入参、函数出参等信息,像下面这样:

e0f99c735b588594e3319e46c8c6569f.png

调用者通过文档字符串就能知道函数的功能、入参、出参等信息。

9.字符串格式化

可以使用下面几种方法格式化字符串

str1 = "hello %s, 今年%s岁" % (name, age)str2 = "hello {}, 今年{}岁".format(name, age)

或者:

2ce0f6c419c7d8ad52ceac7138253100.png

今天就到这里,本文的总结还有不全之处,欢迎大家来补充。

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

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

相关文章

JAVA进阶教学之(产生随机数)

import java.util.Random;代码演示: package com.lbj.javase.random;import java.util.Random;public class RandomTest01 {public static void main(String[] args) {//创建随机数对象Random randomnew Random();int num1random.nextInt();System.out.println(num…

python中char的用法_如何从C++返回char **并使用cType在Python中填充它?

我一直试图从C返回一个字符串数组到Python,如下:// c codeextern "C" char** queryTree(char* treename, float rad, int kn, char*name, char *hash){//.... bunch of other manipulation using parameters...int nbr 3; // number of strin…

python txt转json_实战篇 | 用Python来找你喜欢的妹子(二)

用Python做有趣的事情最近整理一个爬虫系列方面的文章,不管大家的基础如何,我从头开始整一个爬虫系列方面的文章,让大家循序渐进的学习爬虫,小白也没有学习障碍.爬虫篇:使用Python动态爬取某大V微博,再用词…

yoga710怎么进入bios_【解读YOGA——BIOS篇】找回消失掉的BIOS,YOGA BIOS详解!

本帖最后由 Harrisheagle 于 2012-11-1 09:51 编辑相信每位机油在拿到新本本的时候,都有开机进入BIOS逛一逛的习惯。这个我也不例外,拿到YOGA的那一刻,我就迫不及待地想看看这款如此特别的YOGA,究竟它的BIOS会给我带来什么惊喜呢&…

JAVA进阶教学之(Enum枚举类)

首先,我们为什么要学习Enum枚举类 我们引入一段代码: package com.lbj.javase.enumTest;public class EnumTest01 {public static void main(String[] args) {int retValuedivide(10,2);System.out.println(retValue);int retValue2divide(10,0);Syste…

python中的get函数_python之函数用法get()

# -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函数用法get() #http://www.runoob.com/python/att-dictionary-get.html #dict.get(key, defaultNone) #说明:返回指定键的值,如果值不在字典中返回默认值. #key:要查找的键 #default:如果指定键…

vscode生成vue模板快捷键_VSCode写vue项目一键生成.vue模版,修改定义其他模板的方法...

1. 安装一个插件,识别vue文件2.新建代码片段文件–>首选项–>用户代码片段–>点击新建代码片段–取名vue.json 确定3.粘贴入自己写的.vue模板{"Print to console": {"prefix": "vue","body": ["","…

Exception in thread “main“ java.io.FileNotFoundException: C:\Temp (拒绝访问。)

Exception in thread "main" java.io.FileNotFoundException: C:\Temp (拒绝访问。) at java.io.FileInputStream.open0(Native Method) at java.io.FileInputStream.open(FileInputStream.java:195) at java.io.FileInputStream.<init>(FileInput…

linux 切换root账号_Linux 服务器的安全保障,看看这些

作为一种开放源代码的操作系统&#xff0c;Linux 服务器以其安全&#xff0c;高效和稳定的显著优势而得以广泛应用&#xff0c;但是&#xff0c;若不加以控制&#xff0c;也不见得安全到哪里&#xff0c;这篇博文主要从账号安全控制、系统引导和登录控制的角度&#xff0c;来进…

打印纸张尺寸换算_纸张尺寸与开(K)数换算

开本按照尺寸的大小&#xff0c;通常分三种类型&#xff1a;大型开本、中型开本和小型开本。以7871092的纸来说&#xff0c;12开以上为大型开本&#xff0c;16&#xff5e;36开为中型开本&#xff0c;40开以下为小型开本&#xff0c;但以文字为主的书籍一般为中型开本。开本形状…

JAVA进阶开发之(异常类)

保姆级别的异常类教学&#xff08;附代码&#xff09; 目录 1、什么是异常&#xff1a; 2、 java语言中异常以什么形式存在的呢&#xff1f; 3、异常对应的现实生活中是怎样的&#xff1f; 4、异常处理机制 5、异常处理的具体方式 6、运行时异常编写程序时可以不处理 7…

bat文件打开一闪就没了_window文件夹目录树的创建

问题描述当我们的项目文件夹逐渐丰满&#xff0c;各类文件种类繁多&#xff0c;为了增强项目资料的自明性&#xff0c;便于资料管理和交接&#xff0c;有必要对项目文件进行汇总说明。要进行文件汇总&#xff0c;首先要提取文件的目录树。什么是目录树呢&#xff1f;在cmd黑窗口…

python中和为k的个数_程序查找在python中总计为k的不同组合的数量

假设我们有一个称为nums和另一个数字k的不同数字的列表&#xff0c;我们必须找到总计为k的不同组合的数量。您可以在创建组合时重复使用数字。因此&#xff0c;如果输入像nums [2&#xff0c;4&#xff0c;5] k 4&#xff0c;那么输出将是2&#xff0c;因为我们可以将两个这样…

JAVA进阶开发之(异常练习题)

编写程序模拟用户注册&#xff1a; 1、程序开始执行的时候&#xff0c;提示用户输入“用户名”和“密码”信息 2、输入信息之后&#xff0c;后台JAVA程序模拟用户注册 3、注册时用户名要求长度在【6-14】之间&#xff0c;小于或者大于都表示异常 注意&#xff1a; 完成注册的…

boolean 默认_MySQL数据类型测试:BOOLEAN、TINYINT测试数据总结(第八节)

前面几节Amy给大家分享了STE集合类型和枚举类型ENUM的测试数据&#xff0c;还没来得及看到的读者可以点击这里查看往期文章。之前看到一些平台上很多人咨询mysql是否提供布尔类型的问题。MySQL数据库确实提供布尔类型&#xff0c;此数据类型的关键字可以写成&#xff1a;布尔类…

flex vue 垂直居中居上_推荐几种在移动端实现垂直居中的方法

推荐几种在移动端实现垂直居中的方法。方法1:table-cellhtml结构垂直居中CSS.box1{display: table-cell;vertical-align: middle;text-align: center;}方法2&#xff1a;display:flex.box2{display: flex;justify-content:center; align-items:Center;}12345方法3&#xff1…

JAVA进阶开发之(数组练习题)

1、题目&#xff1a; 写一个Army类&#xff0c;代表一支军队这个类有一个属性&#xff0c;Weapon[ ] w 数组&#xff0c;用来存储该军队所有武器Army类提供一个构造方法&#xff0c;构造方法里面通过传递一个int类型的参数来限定该类所能拥有的最大武器数量&#xff0c;并用…

python读单行文本求平均值_利用Python读取json数据并求数据平均值

要做的事情&#xff1a;一共十二个月的json数据(即12个json文件)&#xff0c;json数据的一个单元如下所示。读取这些数据&#xff0c;并求取各个(100多个)城市年、季度平均值。 { "time_point": "2014-01", "area": "***", "aqi&…

netty cpu 占用率 高_Netty 是如何支撑高性能网络通信的?

作为一个高性能的 NIO 通信框架&#xff0c;Netty 被广泛应用于大数据处理、互联网消息中间件、游戏和金融行业等。大多数应用场景对底层的通信框架都有很高的性能要求&#xff0c;作为综合性能最高的 NIO 框架 之一&#xff0c;Netty 可以完全满足不同领域对高性能通信的需求。…

JAVA进阶教学之(单链表数据结构)

什么是链表&#xff1a; 内存地址不连续&#xff0c;基本单元是节点对象Node&#xff0c;单链表尾结点默认是null 什么是链表中的节点&#xff1a; 节点是单链表中的基本单元&#xff0c;每一个节点都有两个属性 属性一&#xff1a;存储的数据 属性二&#xff1a;下一个节点的内…