写好Python代码,有哪些Python编码规范要了解
Admin 2022-11-22 群英技术资讯 311 次浏览
想要写好python代码,必须了解python相关编码规范,有了这个的加持,编写的代码不仅可以实现相应的功能,而且简单易读,逻辑清晰。本节技能树主要分享相应的python编码规范,学习python的小伙伴们请仔细阅读,对你的python代码的编写肯定有质的提高!!!
# -- coding: utf-8 --
登录后复制
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
登录后复制
不要在行尾加分号,也不要用分号将两条命令放在同一行。
每行不超过80个字符
以下情况除外:
不要使用反斜杠连接行。
Python会将 圆括号, 中括号和花括号中的行隐式的连接起来 。
圆括号、方括号或花括号以内的表达式允许分成多个物理行,无需使用反斜杠。例如:
month_names = ['Januari', 'Februari', 'Maart', # These are the
'April', 'Mei', 'Juni', # Dutch names
'Juli', 'Augustus', 'September', # for the months
'Oktober', 'November', 'December'] # of the year
登录后复制
隐式的行拼接可以带有注释。后续行的缩进不影响程序结构。后续行也允许为空白行。
如果需要,可以在表达式外围增加一对额外的圆括号。
如果一个文本字符串在一行放不下, 可以使用圆括号来实现隐式行连接
x = ('这是一个非常长非常长非常长非常长 '
'非常长非常长非常长非常长非常长非常长的字符串')
登录后复制
建议使用 Emacs 的 Python-mode 默认值:4 个空格一个缩进层次。不要用tab,也不要tab和空格混用
正确示例代码:
if a==0:
print("正确") # 缩进4个空白占位
else: # 与if对齐
print("错误") # 缩进4个空白占位
或者
# 4 个空格缩进,第一行不需要
foo = long_function_name(
var_one, var_two, var_three,
var_four)
登录后复制
错误示例代码:
if a==0:
print("正确")
else:
print("错误")
print("end") # 错误的是这行代码前面加了一个空格
或者
# 2 个空格是禁止的
foo = long_function_name(
var_one, var_two, var_three,
var_four)
登录后复制
Python中有三种形式的注释:行注释、块注释、文档注释
行注释:注释应解释自己做了什么,而不是对代码本身的解释
n = input()
m = input()
t = n / 2 # t是n的一半
# 循环,条件为t*m/n 小于n
while (t * m / (n + 1) < n):
t = 0.5 * m + n / 2 # 重新计算t值
print(t)
登录后复制
块注释:
def FuncName(parameter1,parameter2):
"""
描述函数要做的事情
:param parameter1: 参数一描述(类型、用途等)
:param parameter2: 参数二描述
:return: 返回值描述
"""
登录后复制
# We use a weighted dictionary search to find out where i is in
# the array. We extrapolate position based on the largest num
# in the array and the array size and then do binary search to
# get the exact number.
if i & (i-1) == 0: # true if i is a power of 2
登录后复制
文档注释:
class SampleClass(object):
"""Summary of class here.
Longer class information....
Longer class information....
Attributes:
likes_spam: A boolean indicating if we like SPAM or not.
eggs: An integer count of the eggs we have laid.
"""
def __init__(self, likes_spam=False):
"""Inits SampleClass with blah."""
self.likes_spam = likes_spam
self.eggs = 0
def public_method(self):
"""Performs operation blah."""
登录后复制
class Class01:
pass
class Class02:
def function_01(self):
pass
def function_02(self):
pass
登录后复制
使用必要的空行可以增加代码的可读性,通常在顶级定义(如函数或类的定义)之间空两行,而方法定义之间空一行,另外在用于分隔某些功能的位置也可以空一行。
空格使用规则:
正确示例代码:
spam(ham[1], {eggs: 2}, [])
if x == 4:
print x, y
x, y = y, x
dict['key'] = list[index]
def complex(real, imag=0.0): return magic(r=real, i=imag)
登录后复制
错误示例代码:
spam( ham[ 1 ] , { eggs: 2 } , [ ] )
if x == 4 :
print x , y
x , y = y , x
dict ['key'] = list [index]
def complex(real, imag = 0.0): return magic(r = real, i = imag)
登录后复制
模块名命名
# 正确
import decoder
import html_parser
# 不推荐
import Decoder
登录后复制
变量命名
count = 0
this_is_var = 0
登录后复制
常量或者全局变量命名
MAX_CLIENT = 100
登录后复制
函数命名
def run():
pass
def run_with_env():
pass
class Person():
def _private_func():
pass
登录后复制
类命名
class Farm():
pass
class AnimalFarm(Farm):
pass
class _PrivateFarm(Farm):
pass
登录后复制
类里面函数和方法参数
特别注意:
- 不要中英文混编
- 不要有a、b、c这种没有意义的命名
- 不要怕名字长就随便缩写,比如person_info 缩写成pi
- 不要用大小写区分变量类型,比如a是int类型,A是String类型
- 不要使用容易引起混淆的变量名
- bool变量⼀般加上前缀 is_ 如:is_success
- 变量名不要用系统关键字,如 dir type str等等
以下用下画线作前导或结尾的特殊形式是被公认的:
- _single_leading_underscore(以一个下画线作前导):例如,“from M import *”不会导入以下画线开头的对象。
- single_trailing_underscore_(以一个下画线结尾):用于避免与 Python 关键词的冲突,例如“Tkinter.Toplevel(master, class_='ClassName')”。
- __double_leading_underscore (双下画线):从 Python 1.4 起为类私有名。
- __double_leading_and_trailing_underscore__:特殊的(magic) 对象或属性,存在于
用户控制的(user-controlled)名字空间,例如:__init__、__import__ 或 __file__。
字符串引号规则:
正确使用示例:
Tim('Why are you hiding your eyes?')
Bob("I'm scared of lint errors.")
Juy('"Good!" thought a happy Python reviewer.')
登录后复制
正确使用例子:
import os
import numpy
import sys
from types import StringType, ListType
登录后复制
错误使用例子:
import os, numpy, sys
登录后复制
from MyClass import MyClass
from foo.bar.YourClass import YourClass
登录后复制
模块导入建议
示例评价from modu import *差, 不清楚具体从模块中导入了哪些内容from modu import sqrt稍好import modu
import modu.sqrt
最佳 , 调用的时候直接使用modu.sqrt能比较清楚的知道当前方法属于哪个模块import os
import sys
推荐import os, sys
不推荐from subprocess import Popen, PIPE推荐主功能应该放在一个main()函数中。
在Python中,pydoc以及单元测试要求模块必须是可导入的。代码应该在执行主程序前总是检查 if __name__ == '__main__'
, 这样当模块被导入时主程序就不会被执行。
def main():
...
if __name__ == '__main__':
main()
登录后复制
如果要将 RCS 或 CVS 的杂项包含在你的源文件中,按如下格式操作:
__version__ = "$Revision: 1.4 $"
# $Source: E:/cvsroot/python_doc/pep8.txt,v $
登录后复制
对于 CVS 的服务器工作标记更应该在代码段中明确出它的使用说明,如在文档最开始的版权声明后应加入如下版本标记:
# 文件:$id$
# 版本:$Revision$
登录后复制
这样的标记在提交给配置管理服务器后,会自动适配成为相应的字符串,如:
# 文件:$Id: ussp.py,v 1.22 2004/07/21 04:47:41 hd Exp $
# 版本:$Revision: 1.4 $
登录后复制
这些应该包含在模块的文档字符串之后,所有代码之前,上下用一个空行分割。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
决策是根据条件来执行执行程序,并指定对应操作。决策结构计算多个表达式并产生TRUE或FALSE作为结果并退出。您需要确定采取的行动,如果结果是TRUE 要执行哪些语句,或否则返回 FALSE
这篇文章主要介绍了Python数据读写之Python读写CSV文件,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的小伙伴可以参考一下
通用网络爬虫是搜索引擎抓取系统(Baidu、Google、Sogou等)的一个重要组成部分。主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份。为搜索引擎提供搜索支持。
Python 是一个美丽的语言,可以激发用户对它的爱。所以如果你试图加入程序员行列,或者你有点厌倦C++,Perl,Java 和其他语言,我推荐你
字典是Python必用且常用的数据结构,本文主要为大家梳理了一下常用的字典操作:初始化、合并字典、字典转Pandas等,需要的可以参考一下
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008