강좌
클라우드/리눅스에 관한 강좌입니다.
프로그램 분류

파이썬기초78 : 모듈(module)과 패키지(package)

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

#모듈과 패키지

 . 모듈(module)은 파이썬 프로그램 소스파일이며, 확장자로서 .py를 사용한다. 

 . 패키지(package)는 모듈을 묶은 것이며, 파일시스템 상으로는 디렉토리이다. 

   (참고 : python2에서는 __init__.py 파일이 있는 디렉토리가 패키지이다. )


#모듈화, 패키지


'''

패키지=> /mod : 폴더 내부에는 하위 버전 호환을 위해 

               통상 __init__.py 파일을 생성해 둔다



모듈명=> a.py라면 a가 모듈명

        모듈의 이름을 정할때는 .가 이름에 포함되면 안된다!! 

        (포함되면 참조할때 패키지로 인식함)


# 참조하기 -------------------------------------------------

from... import  문

 . 모듈이나 패키지를 다른 모듈이나 인터프리터에서 불러오는 구문

 . import문 : 모듈이나 패키지, 모듈의 객체를 불러옴

 . from문으로 경로를 지정하고  import문으로 불러올 대상을 특정함. 

 . from문이 생략되면 현재경로를 의미함.

 . from datetime import date  <== datetime에서.. date를 가져와라 라는 의미임.

 . from my.utils.prog import say <== my디렉토리의 utils디렉토리의 prog디렉토리내에 있는 say파일을 가져와라라는 의미임.


# from 패키지(__init__.py가 존재할때) ~

# from 모듈명 ~

# from 패키지.모듈명 ~

# from 패키지.패키지.모듈명 ~


# from (패키지명.패키지명...)(모듈명) import 변수, 함수, 클레스, 모듈명 (as 별칭)

# or

# import 패키지명(모듈명) 함수, 변수, 클레스등등 하위로 내려갈수 있다 (as 별칭)


 a

│  a_sub.py

│  __init__.py

├─b

│  │  b_sub.py

│  │  __init__.py



a디렉토리의 __init__.py파일내용

PI1 = 3.14


a디렉토리의 a_sub.py 파일내용

PI2 = 3.142


b디렉토리의 __init__.py 파일내용

PI3 = 3.143

b디렉토리의 b_sub.py 파일내용

PI4 = 3.144


# 패키지를 지칭하면 __init__.py가 대응된다 고로 __init__.py안에 있는 

# 변수, 함수, 클레스등등을 참조할수 있다

from a import PI1

print( PI1 )


# 패키지.모듈으로 타고 가서 해당 모듈의 변수, 함수, 클레스등등을 참조할수 있다

from a.a_sub import PI2

print( PI2 )


# b 패키지 밑에 있는 __init__.py가 대응된다 고로 __init__.py안에 있는 

# 변수, 함수, 클레스등등을 참조할수 있다

from a.b import PI3

print( PI3 )


# 패키지.패키지.모듈으로 타고 가서 해당 모듈의 변수, 함수, 클레스등등을 참조할수 있다

from a.b.b_sub import PI4

print( PI4 )


import a.b.b_sub as m1

print( m1.PI4 )


import a.b as m2

print( m2.PI3 )

'''



# 직접실행인지 모듈로 불러들인 것인지 체크하기


if __name__ == '__main__':

    print("You run module Directly")

else:

    print("You import module")



# 직접만든 simpleset 모듈 import하여 사용하기위한 simpleset.py 모듈파일

# from functools import *


def intersect(*ar):

    return reduce(__intersectSC,ar)


def __intersectSC(listX, listY):

    setList = []

    for x in listX:

        if x in listY:

            setList.append(x)

    return setList


def difference(*ar):

    setList = []

    intersectSet = intersect(*ar)

    unionSet = union(*ar)

    for x in unionSet:

        if not x in intersectSet:

            setList.append(x)

    return setList


def union(*ar):

    setList = []

    for item in ar:

        for x in item:

            if not x in setList:

                setList.append(x)

    return setList


def sspark(*):

    pass


관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,157 명
  • 현재 강좌수 :  36,515 개
  • 현재 접속자 :  226 명