[pep8] import 스타일 가이드

[pep8] import 스타일 가이드

1. import는 별도의 줄로 되어있어야합니다.

# Correct: import os import sys # Wrong: import os, sys # 이런식으로 쓰는 것은 괜찮음 from subprocess import Popen, PIPE

2. import는 모듈의 주석이나 docstring 뒤에 최상단에 와야합니다.

import는 Standart library - Related third party - Local application/library 순서대로 그룹화 되야합니다.

''' Doc string ''' # Standard library imports import datetime import os # Third party imports from flask import Flask from flask_restful import Api from flask_sqlalchemy import SQLAlchemy # Local application imports from local_module import local_class from local_package import local_function

3. 절대경로를 사용하여 import 되는 것을 권장합니다.

- 가독성이 증가합니다.

- 에러가 발생될 때에도 에러메시지가 더 좋게 표시됩니다.

- 복잡한 패키지 레이아웃에선 상대경로로 import 하는 것이 허용됩니다.

- standard library 는 복잡한 패키지 레이아웃을 피해야 하고, 언제나 절대경로를 사용해야합니다.

# absoulte import (절대경로) import mypkg.sibling from mypkg import sibling from mypkg.sibling import example # relative imports (상대경로) from . import sibling from .sibling import example

4. 클래스가 포함된 모듈에서 클래스를 가져올 때, from 모듈 import 클래스명 을 일반적으로 사용합니다.

만약 클래스명이 로컬 클래스명과 충돌시, import 모듈을 사용하여 모듈.클래스명으로 직접 명시해줍니다.

from myclass import MyClass from foo.bar.yourclass import YourClass a = Myclass( ) b = YourClass( ) # 위의 예제에서 MyClass, YourClass 가 충돌 될 시, 모듈.클래스명을 사용합니다. import myclass import foo.bar.yourclass a = myclass.MyClass( ) b = foo.bar.yourclass.YourClass( )

5. Wildcard import (from 모듈 import * )을 사용하는것을 피해야합니다. 이것을 사용할 시 헷갈리게 됩니다. 내부 인터페이스를 public API 로 재발행 할때 사용하지만 기본적으로 사용을 피하세요 ( 쓰지말자)

from http://cuorej.tistory.com/15 by ccl(A) rewrite - 2021-03-07 18:26:56