이 글은 코딩 표준과 관련된 문제를 주로 정리한 Python에 대한 관련 지식을 제공합니다. Python 코드를 잘 작성하려면 Python 관련 코딩 표준을 이해해야 합니다. 이 축복을 받으면 코드를 작성할 수 있을 뿐만 아니라. 해당 기능이 구현되지만 간단하고 읽기 쉬우며 논리가 명확하여 모든 사람에게 도움이 되기를 바랍니다.
[관련 추천: Python3 동영상 튜토리얼 ]
파이썬 코드를 잘 작성하려면, 파이썬 관련 코딩 사양을 이해해야 합니다. 이를 통해 여러분이 작성하는 코드는 해당하는 것만 달성할 수 있는 것이 아닙니다. 기능은 간단하고 읽기 쉬우며 논리가 명확합니다. 스킬 트리의 이 섹션은 해당 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 모드 기본값(들여쓰기 수준당 공백 4개)을 사용하는 것이 좋습니다. 탭을 사용하지 말고 탭과 공백을 혼합하지 마세요
올바른 샘플 코드:
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 $
这些应该包含在模块的文档字符串之后,所有代码之前,上下用一个空行分割。
【相关推荐:Python3视频教程 】
위 내용은 Python 코딩 표준 지식 포인트 편집의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!