개요
python 이해도를 높이기 위한 목적으로,
잘 만들어진 library 소스코드(tensorflow)를 보다가 특기할 만한 짧은 내용들을 간략히 소개한다.
__future__
compiler 지시자로 동작한다.
하위 호환성이 없는 기능을 미리 사용하기 위함이다.
링크 : PEP 236 – Back to the __future__
링크 : future statement
__all__
init.py 내에서 작성하는 variable 이다.
package 내의 공개 가능한 submodule 의 범위를 한정하기 위함이다.
복잡한 프로젝트의 구조와 별개로 사용자 인터페이스를 단순하게 하고 싶을 때 사용할 수도 있다.
# tensorflow\__init__.py # tensorflow.python 패키지 하위의 submodule 들을 사용자가 접근할 때 # tensorflow.xxx 으로 사용 가능하도록 한다. from tensorflow.python import *
링크 : importing * from a package
pylint
정적분석 도구다.
PEP8 스타일 가이드를 따르도록 도와준다.
pylint: 로 시작하는 주석으로 message 를 제어할 수 있다.
# pylint: disable=wildcard-import from tensorflow.python import * # pylint: enable=wildcard-import
링크 : PEP8 style guilde for python code
SWIG
python – native code wrapper 다.
같은 목적의 도구로 boost::python 가 있다.
둘 다 써보지 않아서 잘은 모르겠지만
SWIG 는 별도의 인터페이스 file 을 작성하여야 하는 번거로움이 있는 대신
python / tcl / perl / java /c# 등 다양한 타겟으로 인터페이스가 가능하다.
boost 빠인 나로선 boost::python 쪽에 더 마음이 간다.