간결한 개요
1. 인코딩
파일은 모두 UTF-8 인코딩을 사용합니다.
특별한 사정이 없으면 #-*-코딩 파일 헤더에 추가해야 합니다: UTF-8-*-Idential
2, 코드 형식
2.1, 축소
들여쓰기에 4개의 빈 그리드를 균일하게 사용
2.2 , width
코드 줄은 80자를 넘지 않도록 노력해야 합니다(특수한 경우 80자를 약간 넘을 수 있지만 최대 길이는 120을 넘지 않아야 합니다)
이유:
옆에서 볼 때 도움이 됩니다- by-side diffs
콘솔 아래에서 코드를 보는 것이 편리합니다
너무 길면 디자인 하자일 수 있습니다
2.3, 인용 부호
간단히 말하면 자연어 큰따옴표를 사용하고 기계 표시는 작은따옴표를 사용하므로 코드에서 대부분은 작은따옴표
를 사용해야 합니다. 자연어는 큰따옴표 "..."
예를 들어, 오류 메시지; 대부분의 경우 여전히 유니코드입니다. u"Hello World"
기계 식별 '...'에 작은따옴표를 사용하세요. 예를 들어 dict
정규식의 키는 기본 큰따옴표 r"..을 사용합니다. ."
문서 문자열(docstring)은 큰따옴표 세 개를 사용합니다. """.... .."""
2.4. 빈 줄
모듈 수준 함수와 사이에 두 개의 빈 줄
클래스 멤버 함수 사이에 하나의 빈 줄이 있습니다.
class A: def __init__(self): pass def hello(self): pass def main(): pass
여러 개의 빈 줄을 사용하여 관련 함수의 여러 그룹을 구분할 수 있습니다.
빈 줄을 사용하여 논리적으로 관련된 코드를 구분할 수 있습니다. 함수
2.5, 인코딩
파일이 UTF-8 인코딩을 사용합니다
파일 헤더에 #-*-conding:utf-8-*-로고를 추가하세요
3. import 문
import 문은 별도의 줄에 작성해야 합니다
# 正确的写法 import os import sys # 不推荐的写法 import sys,os # 正确的写法 from subprocess import Popen, PIPE import语句应该使用 absolute import # 正确的写法 from foo.bar import Bar # 不推荐的写法 from ..bar import Bar
import 문은 모듈 설명 및 문서 문자열 뒤, 전역 변수 앞에 배치되어야 합니다.
import 문은 각 그룹을 구분하는 빈 줄을 사용하여 순서대로 정렬되어야 합니다.import os import sys import msgpack import zmq import foo
from myclass import MyClass
import bar import foo.bar bar.Bar() foo.bar.Bar()
네임스페이스를 사용할 수 있습니다. 이항 연산자 [=,-,+= ,==,>,in,is not, and]:
# 正确的写法 i = i + 1 submitted += 1 x = x * 2 - 1 hypot2 = x * x + y * y c = (a + b) * (a - b) # 不推荐的写法 i=i+1 submitted +=1 x = x*2 - 1 hypot2 = x*x + y*y c = (a+b) * (a-b)
# 正确的写法 def complex(real, imag): pass # 不推荐的写法 def complex(real,imag): pass
함수 매개변수 목록에서 기본값인 등호 양쪽에 공백을 추가하지 마세요
# 正确的写法 def complex(real, imag=0.0): pass # 不推荐的写法 def complex(real, imag = 0.0): pass
왼쪽 괄호 뒤, 오른쪽 괄호 앞에 공백을 추가하지 마세요
# 正确的写法 spam(ham[1], {eggs: 2}) # 不推荐的写法 spam( ham[1], { eggs : 2 } )
사전 개체의 왼쪽 괄호 앞에 추가 공백이 없습니다
# 正确的写法 dict['key'] = list[index] # 不推荐的写法 dict ['key'] = list [index]
할당문을 정렬하는 데 추가 공백이 사용되지 않습니다
# 正确的写法 x = 1 y = 2 long_variable = 3 # 不推荐的写法 x = 1 y = 2 long_variable = 3
5 줄 바꿈
Python은 줄 바꿈을 지원합니다. 괄호 안에. 이때 상황은 두 가지입니다.
1. 두 번째 줄은 괄호 시작 부분까지 들여쓰기됩니다.
foo = long_function_name(var_one, var_two, var_three, var_four)
2. 두 번째 줄은 공백 4개로 들여쓰기됩니다. 이는 시작 괄호가 개행인 상황에 적합합니다.
def long_function_name( var_one, var_two, var_three, var_four): print(var_one)
개행에는 백슬래시를 사용하세요. 이진 연산 기호 + . 등은 줄 끝에 나타나야 합니다. 긴 문자열은 이 방법을 사용하여 줄 바꿈할 수도 있습니다.
session.query(MyTable).\ filter_by(id=1).\ one() print 'Hello, '\ '%s %s!' %\ ('Harry', 'Potter')
복합 문은 금지됩니다. 즉, 여러 문이 한 줄에 포함됩니다.
# 正确的写法 do_first() do_second() do_third() # 不推荐的写法 do_first();do_second();do_third();
if/for/while은 줄바꿈되어야 합니다:
# 正确的写法 if foo == 'blah': do_blah_thing() # 不推荐的写法 if foo == 'blah': do_blash_thing()
6 , docstring
docstring 사양의 가장 기본적인 두 가지 사항:
1 모든 공개 모듈, 함수, 클래스 및 메서드는 docstring으로 작성되어야 합니다. . Private 메소드가 반드시 필요한 것은 아니지만 def 뒤에 블록 주석을 제공해야 합니다.
2. 이 독스트링에 한 줄만 있는 경우를 제외하고 독스트링의 끝 """은 자체 라인을 차지해야 합니다.다음 섹션