TIL21 | Python_모듈 사용
1. 모듈이란?
파이썬에서 모듈은 변수나 함수 그리고 클래스 등을 모아놓은 파일이다.
모듈을 사용하는 이유
- 다른 파일에서 재사용이 가능하다.
- 코드가 너무 길 때 여러 파일로 나눠서 정리가 가능
이미 만들어진 모듈을 사용하거나 직접 만들어서 사용이 가능하다.
2. 모듈 만들기
- 파일을 만든후 그 안에 재사용 하고 싶은 함수나 클래스 혹은 변수등을 구현하면 된다.
## my_module.py
my_module_var = 7
def my_module_func():
return "Hello!"
class MyModuleClass:
pass
그 후 다른파일에서 불러와 사용하면 된다.
3. 모듈 사용 <import>
# import 모듈이름
import my_module # 파일확장자 .py는 제외
원하는 모듈을 import 한 후에는, 다음과 같이 모듈의 원하는 변수/함수/클래스를 사용 가능
import my_module
#모듈이름.원하는 함수/변수/클래스
my_module.my_module_var
print(my_module.my_module_var)
>>> 7
모듈 2개 사용하기
4. from.. import..
모듈이름 없이 바로 함수, 변수, 클래스 등등 사용 가능하다.
# from 모듈이름 import <함수/변수/클래스1>, <함수/변수/클래스2>, ..., <함수/변수/클래스N>
from my_module import my_module_func, my_module_var
print(my_module_var)
print(my_module_func())
>>> 7
>>> "Hello!"
# "*" 을 사용하면 해당 모듈의 모든 요소가 import 된다.
from my_module import *
print(my_module_var)
>>> 7
하지만 *
사용을 권장하지 않음
왜냐하면 local scope를 가지고 있는 다른 변수/함수/클래스 들과 이름 충돌이 날 수 있는데, 만일 이름 충돌이 일어났을 경우 알기가 쉽지 않을수 있기 때문이다.
5. 새로운 이름 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()
6-1. Packages
모듈을 묶어서 관리하는 패키지
dot notation(.) 으로 해당 package의 원하는 모듈을 import
import pkg.mod1
from pkg.mod2 import func2
pkg.mod1.func2()
func2()
6-2. Package Initialization
파이썬은 __init__.py
파일을 통해 package 초기 설정을 가능하게 해준다.
Package 안에 __init__.py
파일이 있으면 package가 import 될때 __init__.py
파일의 코드들이 자동으로 실행된다.
초기설정이 왜 필요할까?
- Import 할때 경로의 총 길이 줄여주기
- Package에서 import 할 수 있는 변수/함수/클래스 제한하기
- 그 외 package가 import될때 꼭 먼저 실행되어야 하는 코드들
7. 다른 사람의 package 사용하기
다른 사람이 만든 package를 import 하여 사용하기 위해서는 먼저 package를 설치를 해야 한다.
예를 들어, Django 라는 package를 사용하기 위해서는
pip
라는 툴을 사용하면 된다.
터미널로 이동 후
pip install Django
Author And Source
이 문제에 관하여(TIL21 | Python_모듈 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@wjddk97/TIL21-Python모듈-사용저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)