내용

글번호 14
작성자 heojk
작성일 2016-04-20 00:00:00
제목 파이썬 코딩규칙
내용 Code lay-out • 들여쓰기는 공백 4칸을 권장합니다. • 한 줄은 최대 79자까지 • 최상위(top-level) 함수와 클래스 정의는 2줄씩 띄어 씁니다. • 클래스 내의 메소드 정의는 1줄씩 띄어 씁니다. Whitespace in Expressions and Statements • 다음과 같은 곳의 불필요한 공백은 피합니다. o 대괄호([])와 소괄호(())안 o 쉼표(,), 쌍점(:)과 쌍반점(;) 앞 • 키워드 인자(keyword argument)와 인자의 기본값(default parameter value)의 = 는 붙여 씁니다. Comments • 코드와 모순되는 주석은 없느니만 못합니다. 항상 코드에 따라 갱신해야 합니다. • 불필요한 주석은 달지 마세요. • 한 줄 주석은 신중히 다세요. • 문서화 문자열(Docstring)에 대한 컨벤션은 PEP 257을 참고하세요. Naming Conventions • 변수명에서 _(밑줄)은 위치에 따라 다음과 같은 의미가 있습니다. o _single_leading_underscore: 내부적으로 사용되는 변수를 일컫습니다. o single_trailing_underscore_: 파이썬 기본 키워드와 충돌을 피하려고 사용합니다. o __double_leading_underscore: 클래스 속성으로 사용되면 그 이름을 변경합니다. (ex. FooBar에 정의된 __boo는 _FooBar__boo로 바뀝니다.) o __double_leading_and_trailing_underscore__: 마술(magic)을 부리는 용도로 사용되거나 사용자가 조정할 수 있는 네임스페이스 안의 속성을 뜻합니다. 이런 이름을 새로 만들지 마시고 오직 문서대로만 사용하세요. • 소문자 L, 대문자 O, 대문자 I는 변수명으로 사용하지 마세요. 어떤 폰트에서는 가독성이 굉장히 안 좋습니다. • 모듈(Module) 명은 짧은 소문자로 구성되며 필요하다면 밑줄로 나눕니다. o 모듈은 파이썬 파일(.py)에 대응하기 때문에 파일 시스템의 영향을 받으니 주의하세요. o C/C++ 확장 모듈은 밑줄로 시작합니다. • 클래스 명은 카멜케이스(CamelCase)로 작성합니다. o 내부적으로 쓰이면 밑줄을 앞에 붙입니다. o 예외(Exception)는 실제로 에러인 경우엔 “Error”를 뒤에 붙입니다. • 함수명은 소문자로 구성하되 필요하면 밑줄로 나눕니다. o 대소문자 혼용은 이미 흔하게 사용되는 부분에 대해서만 하위호환을 위해 허용합니다. • 인스턴스 메소드의 첫 번째 인자는 언제나 self입니다. • 클래스 메소드의 첫 번째 인자는 언제나 cls입니다. • 메소드명은 함수명과 같으나 비공개(non-public) 메소드, 혹은 변수면 밑줄을 앞에 붙입니다. • 서브 클래스(sub-class)의 이름충돌을 막기 위해서는 밑줄 2개를 앞에 붙입니다. • 상수(Constant)는 모듈 단위에서만 정의하며 모두 대문자에 필요하다면 밑줄로 나눕니다. Programming Recommendations • 코드는 될 수 있으면 어떤 구현(PyPy, Jython, IronPython등)에서도 불이익이 없게끔 작성되어야 합니다. • None을 비교할때는 is나 is not만 사용합니다. • 클래스 기반의 예외를 사용하세요. • 모듈이나 패키지에 자기 도메인에 특화된(domain-specific)한 기반 예외 클래스(base exception class)를 빌트인(built-in)된 예외를 서브클래싱해 정의하는게 좋습니다. 이 때 클래스는 항상 문서화 문자열을 포함해야 합니다. class MessageError(Exception): """Base class for errors in the email package.""" • raise ValueError('message')가 (예전에 쓰이던) raise ValueError, 'message'보다 낫습니다. • 예외를 except:로 잡기보단 명확히 예외를 명시합니다.(ex. except ImportError: • try: 블록의 코드는 필요한 것만 최소한으로 작성합니다. • string 모듈보다는 string 메소드를 사용합니다. 메소드는 모듈보다 더 빠르고, 유니코드 문자열에 대해 같은 API를 공유합니다. • 접두사나 접미사를 검사할 때는 startswith()와 endwith()를 사용합니다. • 객체의 타입을 비교할 때는 isinstance()를 사용합니다. • 빈 시퀀스(문자열, 리스트(list), 튜플(tuple))는 조건문에서 거짓(false)입니다. • 불린형(boolean)의 값을 조건문에서 ==를 통해 비교하지 마세요.
첨부파일 파이썬 코딩 컨벤션.docx (25,661byte)