문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 이동문서 삭제토론 Python (문단 편집) === 명확한 권장 코드 스타일 === 특유의 철학 때문에 코딩 스타일에 엄격한 편이다. 잘 작동하는지와는 별개로 가독성을 위해 이렇게 쓰기를 권장한다는 스타일 가이드까지 있다. Python 공식 문서에서는 Python에 맞는 코딩 스타일을 지키기를 권장하는데, 이것이 바로 [[https://www.python.org/dev/peps/pep-0008/|PEP 8]]이다. 1. '''블록 처리 규칙''' 보통 다른 언어에서는 중괄호를 블록 단위로 사용하지만,[* 모아놓고 보면 굉장히 지저분할 뿐더러, 당장 입력해야 하는 괄호가 2개나 되고, 괄호 하나라도 잘못 넣으면 블록이 다 꼬여버리는 귀찮은 존재이지만, 블록들을 이리저리 만질 때에는 매우 편리한 존재이다. 특히 C 코드를 종이에 출력해보면 중괄호 있고 없고의 가독성 차이가 의외로 크다. Python에서 쓰는 방식에 대해 다른 언어에서 넘어온 사람은 블록의 시작과 끝 지점을 찾는 부분에서 꽤 불편함을 느끼기도 한다. 대신 괄호를 2개나 일일이 다 넣고, 잘못 넣지 않게 점검도 해 줘야 하는 수고가 없다는 엄청난 장점이 있다.] Python에서는 중괄호 대신 들여쓰기를 사용한다. 이 들여쓰기 문법 때문에 PEP 8에 명시된 공식 코딩 가이드에서는 소스 코드 들여쓰기에 탭([[Tab]]) 문자 대신 '''공백(Space) 4문자'''를 넣기를 매우 강력히 권장한다.[* Python의 형제 언어라 불리는 [[Ruby]]는 블록의 끝을 end 키워드로 구분하기 때문에 이런 문제에서는 자유로운 편이다.][* 사족으로 구글 코랩은 들여쓰기에 4문자 대신 2문자가 기본으로 세팅되어 있으나 설정에서 4문자로 변경하면 된다.] [[탭]] 문자는 사용자나 시스템의 설정에 따라 서로 다른 폭의 공백이 생긴다. 문제는 Python 인터프리터가 탭 문자 하나를 공백 1문자로 처리한다는 것이다. 탭 문자로 들여쓰기를 처리하면 자신과 다른 탭 설정을 가진 편집기에서 코드를 열어 볼 경우 코드 들여쓰기가 높은 확률로 망가져 버리고, 그걸 교정해 보겠다고 들여쓰기에 공백 문자를 혼용하는 순간 해당 소스 코드는 사람이 고칠 수 없는 형태로(시각적으로는 블록이 맞지만 Python 인터프리터는 다른 블록으로 인식) 망가져 버린다. 물론 이렇게 스페이스 바를 네 번이나 치는 귀찮은 행위를 프로그래머들이 가만 놔둘 리가 없다. PyCharm, VSCode 등 Python 개발자들이 애용하는 편집기는 탭 키 누르면 공백 4개로 자동 변환되어 입력되는 기능이 지원되므로 이들 편집기를 이용하면 공백 4개를 번거롭게 칠 필요가 없어진다.[* 웃긴 건 Python 2는 [[Tab]] 키를 권장했다는 것. 탭 키를 사용하지 말 것을 요구하는 건 Python 3에서 해당하는 이야기. 물론 Python 2에서도 "탭 키를 쓸 경우에는 잊어버리지 말 것"을 이야기하긴 하나, 그렇다면 처음부터 탭 키를 막았어야 말이 된다. --첨에는 탭이 그렇게 똥인 줄 몰랐어....-- [[PyCharm]] 등의 주요 편집기에는 탭 키를 썼는지 스페이스 바를 썼는지 시각적으로 구분하여 보여주는 기능이 있으므로 참고.] {{{#!syntax python def factorial(x): if x == 0: return 1 else: return x * factorial(x - 1) }}} 1. '''작명 규칙''' Python에서는 변수나 클래스 이름을 어떻게 짓든 잘 작동한다. 그렇지만 PEP 8 에서는 이에 대한 권장 스타일도 명시하고 있다.[*예외 기존에 짠 방대한 패키지 코드를 수정하기가 매우 까다로우면 하지 않는다. 다른 사람들이 그 패키지를 사용할 때에 사용하던 코드까지 전부 수정해야 하기 때문에, 비단 패키지를 관리하는 사람만의 문제가 아니라 어쩔 수 없다.] Python을 코딩할 때에는 가독성을 위해 이 권장 스타일을 따르는 것이 좋다. 아래는 '''이름에 대한 대표적인 스타일 가이드'''이다. * 일반적으로 스네이크 표기를 쓰되, 특정한 종류에는 파스칼 표기를 쓴다. 표기법은 [[코딩 스타일]] 참고. * 변수는 소문자로 시작하며 [* 대문자로 써도 상관은 없지만 소문자로 쓰는것이 관례이다.], 내부변수(internal)는 맨 앞에 밑줄(underbar, _) 1개로 시작하며, 숨은변수(hidden)은 밑줄 2개로 시작한다. * attribute_name = 0 * _protected_attribute_name = 0 * __hidden_attribute_name = 0 || 종류 || 규칙 || 예시 || || 패키지(package) || 스네이크() || || || 모듈(module) || 스네이크() || import module_name || || 클래스(class) || 파스칼() || class ClassName() || || 예외(exception) || 파스칼 || || || 함수(function) || 스네이크() || def function_name() || || 상수(constant) || '''대문자'''+밑줄 || MODULE_CONSTANT_NAME = 0 || || 변수(variable) ||<|4> 스네이크 ||<|4> variable_name = 0 || || 매개변수(parameter) || || 지역변수 || || 인스턴스 변수(instance variable) || || 메서드(method) || 스네이크() || method_name() || 1. '''문법 규칙''' 아래는 권장되는 대표 유형이다. * 한 줄은 79글자로 제한하기 * import는 파일의 맨 위에 적고 내장 모듈, 제3자 모듈, 직접 만든 모듈 순서로 불러들이기 * 인스턴스 메서드의 첫 인자는 self로 쓰고, 클래스 메서드의 첫 인자는 cls로 쓰기 * 할당 연산자(=)의 앞뒤로 공백 넣기 작성한 코드가 PEP8 스타일 가이드를 지키는지 확인해 주는 Python 패키지도 있는데, Pylint와 Flake8 등이 대표적이다. 코드 스타일을 자동으로 권장 사항에 맞추어 수정해 주는 Python 패키지도 있는데, [[https://github.com/psf/black|Black]][* 이건 무려 Python 소프트웨어 재단이 직접 만들고 관리하는 패키지다! Python 코드의 가독성을 위해 재단에서 얼마나 노력하는지가 느껴진다.]이 대표적이다. PyCharm이나 Visual Studio Code 등의 IDE는 이들 도구를 확장 기능으로 제공하여 에디터 GUI 화면 상에서 편리하게 사용할 수 있다. vscode는 [[https://marketplace.visualstudio.com/items?itemName=ms-python.vscode-pylance|pylance]]를 공식으로 권장하고 있다.저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기