2025-01-20T02:26:20
This commit is contained in:
121
doc/07_module.md
Normal file
121
doc/07_module.md
Normal file
@@ -0,0 +1,121 @@
|
||||
# 모듈
|
||||
|
||||
모듈은 파이썬 코드를 논리적으로 분리하고 재사용하기 위한 기본 단위입니다. 하나의 파이썬 파일(.py)이 하나의 모듈에 해당하며, 함수, 변수, 클래스 등을 정의하여 다른 파이썬 파일에서 불러와 사용할 수 있습니다.
|
||||
|
||||
* 코드 재사용: 한 번 작성한 코드를 여러 곳에서 반복적으로 사용할 수 있습니다.
|
||||
* 코드 관리: 복잡한 프로그램을 작은 단위로 나누어 관리하기 쉽습니다.
|
||||
* 명명 공간 관리: 다른 모듈과의 변수 이름 충돌을 방지할 수 있습니다.
|
||||
* 코드 공유: 다른 사람들과 코드를 공유하거나 오픈 소스 프로젝트에 참여할 수 있습니다.
|
||||
|
||||
### 모듈 파일 생성
|
||||
새로운 파이썬 파일을 만들고, 원하는 함수, 변수, 클래스 등을 정의합니다.
|
||||
파일 이름이 모듈 이름이 됩니다.
|
||||
|
||||
### 모듈 가져오기
|
||||
```python
|
||||
import 모듈명
|
||||
from 모듈명 import 함수명, 변수명 # 특정 함수나 변수만 가져오려는 경우
|
||||
```
|
||||
|
||||
모듈 파일은 먼저 현재 디렉토리에서 찾습니다. 모듈을 찾지 못한 경우에는 `PYTHONPATH` 환경 변수에 지정된 경로에서 찾고, 그 다음에는 `/usr/local/lib/python/` 경로에서 찾습니다.
|
||||
|
||||
|
||||
```python
|
||||
# module1.py
|
||||
def greet(name):
|
||||
print("Hello,", name)
|
||||
|
||||
# main.py
|
||||
import module1
|
||||
module1.greet("Alice")
|
||||
```
|
||||
|
||||
```python
|
||||
import math
|
||||
|
||||
from math import sqrt, sin
|
||||
|
||||
from math import *
|
||||
|
||||
import math as x
|
||||
```
|
||||
|
||||
## 내장 모듈과 외부 모듈
|
||||
* 내장 모듈: 파이썬 설치 시 기본적으로 제공되는 모듈입니다. math, random, os 등이 있습니다.
|
||||
* 외부 모듈: 별도로 설치해야 하는 모듈입니다. pip 명령어를 사용하여 설치합니다. 예를 들어, numpy, pandas, matplotlib 등이 있습니다.
|
||||
|
||||
### 내장 모듈
|
||||
* os : 운영 체제와 상호 작용하는 기능 제공 (파일 시스템, 환경 변수 등)
|
||||
- `os.getcwd()`: 현재 작업 디렉토리 반환
|
||||
- `os.listdir()`: 디렉토리 내 파일 목록 반환
|
||||
* string : 문자열 처리 관련 함수
|
||||
* re : 정규 표현식을 사용하여 문자열 처리
|
||||
- `re.search()`: 문자열에서 패턴 검색
|
||||
- `re.sub()`: 문자열에서 일치하는 부분을 다른 문자열로 치환
|
||||
* math : 수학 관련 함수 제공
|
||||
- `math.sqrt(x)`: x의 제곱근 반환
|
||||
- `math.sin(x)`: x의 사인 값 반환
|
||||
* cmath
|
||||
* datetime : 날짜와 시간 관련 기능 제공
|
||||
- `datetime.datetime.now()`: 현재 날짜와 시간 가져오기
|
||||
- `datetime.timedelta`: 두 날짜 간의 차이 계산
|
||||
* time : 시간 관련 함수
|
||||
* gc
|
||||
* asyncio
|
||||
* collections : 다양한 컨테이너 자료형 제공 (Counter, defaultdict 등)
|
||||
* functools
|
||||
* operator
|
||||
* pickle : 파이썬 객체 직렬화
|
||||
* socket
|
||||
* sqlite3
|
||||
* statistics
|
||||
* typing
|
||||
* venv
|
||||
* json : JSON 데이터를 파싱하고 생성하는 기능 제공
|
||||
- `json.loads()`: JSON 문자열을 파이썬 객체로 변환
|
||||
- `json.dumps()`: 파이썬 객체를 JSON 문자열로 변환
|
||||
* csv: CSV 파일 처리
|
||||
* wsgiref
|
||||
* unittest
|
||||
* random : 난수 생성 함수 제공
|
||||
- `random.randint(a, b)`: a 이상 b 이하의 임의의 정수 반환
|
||||
- `random.random()`: 0.0 이상 1.0 미만의 임의의 실수 반환
|
||||
* sys : 파이썬 인터프리터와 관련된 변수와 함수 제공
|
||||
- `sys.argv`: 명령줄 인수 리스트
|
||||
- `sys.exit()`: 프로그램 종료
|
||||
* requests
|
||||
* itertools : 반복 가능한 객체를 위한 유용한 함수 제공 (combinations, permutations 등)
|
||||
* urllib : 웹 페이지를 다운로드하고 URL을 처리하는 기능 제공
|
||||
|
||||
|
||||
## 패키지
|
||||
여러 개의 관련된 모듈을 하나의 디렉토리에 모아 놓은 것을 패키지라고 합니다. 패키지는 점(.)으로 구분된 계층 구조를 가질 수 있습니다.
|
||||
|
||||
```
|
||||
mypackage/
|
||||
__init__.py
|
||||
module1.py
|
||||
module2.py
|
||||
```
|
||||
|
||||
```python
|
||||
# main.py
|
||||
import mypackage.module1
|
||||
mypackage.module1.greet("Alice")
|
||||
```
|
||||
위 예시에서 mypackage는 패키지 이름이고, module1은 모듈 이름입니다.
|
||||
|
||||
### 패키지 생성
|
||||
원하는 디렉토리에 `__init__.py` 파일을 생성해서 패키지를 정의합니다. `__init__.py` 파일은 이 디렉토리가 패키지임을 나타내는 역할을 합니다.
|
||||
|
||||
해당 디렉토리에 모듈 파일들을 추가합니다.
|
||||
|
||||
```python
|
||||
# phone/__init__.py
|
||||
from Pots import Pots
|
||||
from Isdn import Isdn
|
||||
from G3 import G3
|
||||
```
|
||||
```python
|
||||
import phone
|
||||
```
|
||||
Reference in New Issue
Block a user