모듈.변수 , 모듈.함수(), 모듈.클래스()
패키지.모듈.변수 / 패키지.모듈.함수()/ 패키지.모듈.클래스()
__init__.py
?import 패키지
형식으로 패키지만 불러와서 모듈을 사용하려면?from .operation import add, mul # 현재 패키지에서 operation 모듈 내 특정 함수를 가져옴
from .geometry import triangle_area, ~ # 현재 패키지에서 geometry 모듈 내 특정 함수를 가져옴
__all__ = ['add', 'triangle_area']
from .operation import * # 현재 패키지에서 operation 모듈 내 모든 것을 가져옴
from .geometry import * # 현재 패키지에서 geometry 내 모든 것들을 가져옴
from . import operation # 현재 패키지에서 operation 모듈을 가져옴
from . import geometry # 현재 패키지에서 geometry 모듈을 가져옴
__init__.py
파일은 패키지를 초기화하는 역할도 합니다.__init__.py
가 실행됩니다.if __name__== __main__
?__name__
은 모듈의 이름이 저장되는 변수이지만, 모듈이 직접 실행되었을 때는 `__main__
으로 들어갑니다.if __name__== __main__
는 현재 실행되고 있는 모듈이, 시작점인지 판단합니다.__name__
은 '패키지.모듈' 입니다.print('[child] __name__:', __name__)
import child
print('[parent] __name__:', __name__)
python3 parent.py
[child] __name__: child)
[parent] __name__: __main__)
python3 child.py
[child] __name__: __main__)
import sys
sys.path
['C:\\project',
'C:\\Users\\dojang\\AppData\\Local\\Programs\\Python\\Python36-32\\Lib\\idlelib',
'C:\\Users\\dojang\\AppData\\Local\\Programs\\Python\\Python36-32\\python36.zip',
'C:\\Users\\dojang\\AppData\\Local\\Programs\\Python\\Python36-32\\DLLs',
'C:\\Users\\dojang\\AppData\\Local\\Programs\\Python\\Python36-32\\lib',
'C:\\Users\\dojang\\AppData\\Local\\Programs\\Python\\Python36-32',
'C:\\Users\\dojang\\AppData\\Local\\Programs\\Python\\Python36-32\\lib\\site-packages']
calcpkg 패키지 안에 operation과 geometry라는 하위 패키지를 만들 수 있다.
import 패키지.하위패키지.모듈
과 같이 쓰면 된다.
import calckg.operation.element
선언 후 -> calcpkg.operation.element.add(10, 20)
만약, import calckpg
만으로 calckpg.add, calckpg.mul, calckpg.triangle_area 등과 같이 쓰고 싶다면 calcpkg/__init__.py
를 아래와 같이 만들어 주면 됩니다.
from .operation.element import *
from .operation.logic import *
from .geometry.shape import *
from .geometry.vector import *
# shape.py
from ..operation import element # from ..operation.element import mul로도 가능
def triangle_area(base, height):
return element.mul(base, height) / 2 # mul(base, height)로도 가능
def rectangle_area(width, height):
return element.mul(width, height) # mul(width, height)로도 가능
패키지.__doc__
을 쓰면, 패키지의 독스트링이 출력됩니다.# Correct:
import os
import sys
# Wrong:
import os, sys
# 이런식으로 모듈에서 내부 요소들을 호출할 떄는 한줄로 적어도 괜찮다. (검증 필요)
from subprocess import Popen, PIPE
''' 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
# absoulte import (절대경로)
import mypkg.sibling
from mypkg import sibling
from mypkg.sibling import example
# relative imports (상대경로)
from . import sibling
from .sibling import example
from 모듈 import 클래스명
을 사용합니다.import 모듈
후 모듈.클래스명 으로 사용합니다.