python module 이해하기

eunji hwang·2020년 4월 3일
0

module

my_module.py
변수, 함수, 클래스 등을 모아 놓은 파일이며, 아래와 같은 이유로 만든다.

  • 다른 파일, 프로젝트에서 재사용 가능하도록 코드모음
  • 전체 코드가 너무 길어졌을때, 나누어 정리하기 위해

import

모듈은 import <모듈이름> 을 통해 불러사용 한다. 한가지 유의점은 확장자 .py는 빼고 파일명 == 모듈이름 만 사용한다!

import my_module

my_new_var = my_module.my_var
my_new_func = my_module.my_func()
my_new_class = my_module.MyClass()

모듈 변수 사용 :뉴변수 = 모듈이름.변수명
모듈 함수 사용 : 뉴함수 = 모듈이름.함수명()
모듈 클래스 사용 : 뉴클래스 = 모듈이름.클래스명()

name space

위 예제 코드에서처럼 모듈파일 전체를 불러들일때는 네임스페이스를 따라야 한다.
네임스페이스는 모듈명.함수명 과 같이 모듈명을 항상 작성한느 것을 말하는데, 어느파일(모듈)애서 해당 함수, 변수, 클래스를 찾으라 지정하는 것이다. 만약 네임스페이스 없이 사용한다면 현재 작성중인 파일내에서만 해당코드를 찾게 되며 에러를 발생하게 된다.

1) from - import -,-,-

from <모듈명> import <함수/변수/클래스명>, <함수/변수/클래스명> ...

  • 만약 네임스페이스 없이 특정 변수/함수/클래스를 불러오고 싶다면 from - import- 키워드를 사용하자. 아래 예제코드와 같이 간결하게 사용가능하다.
from my_module import my_var, my_func(), MyClass()

print(my_var)
my_func()
new_class = MyClass()

2) from - import *

from - import - 키워드를 사용할때, 불러들일 자식들이 많다면 이또한 불편하다 느끼게 되는대. *을 사용하면 모든 파일을 불러들이게 된다. 하지만 추천하지는 않는다. 이름이 충돌나는 경우가 많이 때문이다.

3) from - import - as -

모듈과 현작업 파일에서 이름 충돌이 날경우에는 from - imoprt - as - 키워드를 사용하자.

from my_module  import my_func as f1
from my_module2 import my_func as f2
from my_module3 import function_with_name_too_long as f3

f1()
f2()
f3()

모듈명 자체를 변경할때도 사용한다

import my_module as m1

m1.my_module_func()
profile
TIL 기록 블로그 :: 문제가 있는 글엔 댓글 부탁드려요!

0개의 댓글