Maison > Article > développement back-end > Compilation de points de connaissance des normes de codage Python
Cet article vous apporte des connaissances pertinentes sur Python, qui organise principalement les problèmes liés aux normes de codage. Si vous voulez bien écrire du code python, vous devez comprendre les normes de codage liées à python. Avec cette bénédiction, vous pouvez non seulement écrire du code. les fonctions correspondantes soient implémentées, mais il est également simple et facile à lire et a une logique claire. Jetons-y un coup d'œil, j'espère que cela sera utile à tout le monde.
[Recommandation associée : Tutoriel vidéo Python3 ]
Si vous voulez bien écrire du code Python, vous devez comprendre les spécifications de codage liées à Python. Avec la bénédiction de cela, le code que vous écrivez peut non seulement atteindre le correspondant. fonctions, mais aussi être simple et facile à lire, la logique est claire. Cette section de l'arbre de compétences partage principalement les spécifications de codage Python correspondantes. Amis qui apprennent Python, veuillez la lire attentivement. Cela améliorera certainement votre écriture de code Python ! ! !
# -- coding: utf-8 --
import sys reload(sys) sys.setdefaultencoding('utf-8')
N'ajoutez pas de point-virgule à la fin de la ligne, et n'utilisez pas de point-virgule pour mettre deux commandes dessus la même ligne.
Pas plus de 80 caractères par ligne
Exception :
N'utilisez pas de barres obliques inverses pour joindre des lignes.
Python connectera implicitement les lignes entre parenthèses, crochets et accolades.
Les expressions entre parenthèses, crochets ou accolades peuvent être divisées en plusieurs lignes physiques sans utiliser de barres obliques inverses. Par exemple :
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
L'épissage de ligne implicite peut être commenté. L'indentation des lignes suivantes n'affecte pas la structure du programme. Les lignes suivantes peuvent également être des lignes vides.
Si nécessaire, vous pouvez ajouter une paire de parenthèses supplémentaires autour de l'expression.
Si une chaîne de texte ne tient pas sur une seule ligne, vous pouvez utiliser des parenthèses pour implémenter une connexion de ligne implicite
x = ('这是一个非常长非常长非常长非常长 ' '非常长非常长非常长非常长非常长非常长的字符串')
Il est recommandé d'utiliser la valeur par défaut du mode Python d'Emacs : 4 espaces par niveau d'indentation. N'utilisez pas de tabulations et ne mélangez pas les tabulations et les espaces
Exemple de code correct :
if a==0: print("正确") # 缩进4个空白占位 else: # 与if对齐 print("错误") # 缩进4个空白占位 或者 # 4 个空格缩进,第一行不需要 foo = long_function_name( var_one, var_two, var_three, var_four)
Exemple de code incorrect :
if a==0: print("正确") else: print("错误") print("end") # 错误的是这行代码前面加了一个空格 或者 # 2 个空格是禁止的 foo = long_function_name( var_one, var_two, var_three, var_four)
Il existe trois formes de commentaires en Python : commentaires de ligne, commentaires de bloc, commentaires de documentation
Commentaires de ligne : les commentaires doivent expliquer ce qu'ils font, pas le code lui-même
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 $
这些应该包含在模块的文档字符串之后,所有代码之前,上下用一个空行分割。
【相关推荐:Python3视频教程 】
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!