당신은 멋쟁이, 우리는 장고쟁이~

0%

PEP8 Code Layout - Source File Encoding

Source File Encoding (소스파일 인코딩)



이번 토픽은 소스파일 인코딩 입니다.



파이썬 배포에 사용되는 코드는 항상 UTF-8 을 사용해야 합니다.

파이썬2 에서는 ASCII


https://namu.wiki/w/UTF-8


UTF-8 은 가장 많이 사용되는 가변길이 유니코드 인코딩이다.

GO 언어를 만든 켄 톰슨과 롭 파이크가 만들었다



[https://namu.wiki/w/%EC%95%84%EC%8A%A4%ED%82%A4%20%EC%BD%94%EB%93%9C?from=ASCII](https://namu.wiki/w/아스키 코드?from=ASCII)


ASCII 코드는 미국 ANSI 에서 표준화한 정보 교환용 7비트 부호체계

2 바이트 이상의 코드를 표현할수 없기 때문에.

국제 표준에서는 유니코드로 넘어감.



PEP8에 따르면, 파이썬2에서 ASCII 를 사용하는 파일들이나 혹은 파이썬3에서 UTF-8을 사용하는 파일들 모두

인코딩 선언이 되어 있지 않아야 합니다.



*참고로 *

encoding 선언이 되어 있지 않으면,

기본 인코딩은 UTF-8 입니다.

from Python3 공식문서



파이썬 표준 라이브러리에서는, 기본 인코딩이 아닌 문자는 아래의 경우만 사용합니다


a) 테스트 목적

b) comment 나 docstring 에서 게시자의 이름이 non-ASCII 문자를 포함하고 있을때



PEP에서는 특별히 Non-ASCII 문자가 포함되어 있는 경우가 아니면

아래의 escapes 를 사용하여 문자열에 있는 non-ASCII 데이터를 표현하는 방식을 선호합니다.



1
2
3
4
\x 	# Character with hex value e.g. \xhh
\u # Unicode Character with 16-bit hex value xxx e.g. u'\u004D'
\U # Unicode Character with 32-bit hex value xxxxxxxx e.g. u'\U0000004D'
\N # Character named name in the Unicode database e.g. \N{name}


PEP3131 에 파이썬 3.0 과 그 이후 버전에 대한 원칙이 나와 있습니다.



PEP8 에서 정리하는 바는 다음과 같습니다


1) 파이썬의 표준 라이브러리 안에 있는 모든 식별자는 ASCII-Only 식별자여야 하고. 가능하면 영문으로 씁니다.

2) 추가로 문자열과 주석들도 ASCII 형식으로 되어 있어야만 합니다. 이부분에 대한 예외는 아래와 같습니다.

a) ASCII 방식이 아닌것을 테스트 하고자 할때.

b) 게시자의 이름이 라틴 알파벳으로 되어 있지 않은 경우, Non-ASCII로 표현 되어도 됩니다.



마치며..


저는 아직도 ASCII 와 UTF-8 인코딩 방식에 대해서 깊게 알지 못합니다.

두가지의 인코딩 방식에 대해서 정확하게 이해해야지만, PEP8 에서 이야기 하는 부분을 정확하게 이해할것 같습니다.