반응형
모듈
파이썬 모듈은 변수, 함수, 클래스 등을 따로 모아놓은 파일이다.
모듈을 사용하는 이유
다른 파일에서 모듈에 있는 함수 등의 재사용이 가능하다.
파이썬의 len()함수 등을 직접 구현하지 않아도 사용할 수 있는건 파이썬이 함수를 모듈로 구현해놨기 때문이다.
모듈을 불러오는법
# my_module.py
my_module_var = 7
my_module.py라는 모듈을 만들고 그 안에 my_module_var를 정의했다.
import 모듈명
이 변수를 다른 파일에서 불러오려면 import를 사용하면 된다.
# main.py
import my_module # .py는 붙이지 않는다
그리고 사용할 때는 임포트한 모듈 이름.사용할 변수/함수/클래스 이름을 적어주면 된다.
# main.py
import my_module
print(my_module.my_module_var)
# 결과
# 7
from 모듈명 import ...
그리고 import 대신 from 모듈이름 import 사용할 함수/변수/클래스 이름을 이용해 임포트 할 수도 있다.
# main.py
from my_module import my_module_var
print(my_module_var)
# 결과
# 7
이 경우는 앞에 모듈 이름을 적지 않고 바로 모듈 안 함수/변수/클래스명을 사용할 수 있다.
모듈 전체의 함수/변수/클래스명을 임포트해서 바로 사용하고 싶다면
from 모듈명 import *
을 사용하면 된다.
import 모듈명으로 모듈 불러오고 잘못 사용한 예
현재 장고 프로젝트 안에 products 앱이 있고 그 안에 models.py에
class Menu(models.Model):
name = models.CharField(max_length=45)
class Meta:
db_table = 'menu'
이렇게 Menu 클래스가 정의되어 있다.
manage.py에서 products.models.py를 import하고
import products.models
Menu.objects.create(name=”음료”)
이렇게 바로 Menu 클래스를 사용하려고 했는데
이런 오류가 났다.
Traceback (most recent call last):
File "<console>", line 1, in <module>
NameError: name 'Menu' is not defined
Menu라는게 없다는 내용.
import 모듈이름 을 하면 안의 클래스를 사용할 때 모듈이름.클래스명을 다 적어줘야 하기 때문에
products.models.Menu.objects.create(name=”음료”)
이렇게 사용해야 정상적으로 데이터가 생성된다.
Menu.objects.create(name="음료")
위 방식으로 바로 Menu클래스를 사용하고 싶다면
from roducts.models import *
from roducts.models import Menu # Menu클래스만 임포트
이 둘중에 하나로 모듈 임포트를 해야한다.
반응형
'Python' 카테고리의 다른 글
파이썬 | for 요소 in 리스트 (0) | 2022.07.14 |
---|---|
파이썬 오류 | "{" was not closed Pylance (0) | 2022.07.12 |
파이썬 | print(i, end='') 개행 없이 한줄로 출력 (0) | 2022.07.07 |
파이썬 | 삼항연산자 (0) | 2022.07.01 |
파이썬 | 모듈 패키지 절대경로 상대경로 (0) | 2022.06.26 |