모듈과 패키지의 이해
패키지(package) : 모듈의 묶음이다. 일종의 디렉터리처럼 하나의 패키지 안에 여러 개의 모듈이 있는데, 이 모듈들이 서로 포함 관계를 가지며 거대한 패키지를 만든다.
모듈(module) : 모듈이란 함수나 변수 또는 클래스를 모아 놓은 파일이다.
- 파이썬 함수나 변수 또는 클래스들을 모아놓은 스크립트 파일
- 이미 수많은 모듈이 존재한다.
import 모듈이름1 [, 모듈이름 2, ...]
- 파이썬 설치와 함께 제공되는 모듈을 파이썬 표준 라이브러리라고 한다.
- 모듈명을 생략하고 함수명만 쓸 때 1행 형식
- from 모듈명 import 함수1, 함수2, 함수3
- from 모듈명 import *
모듈의 종류
- 표준 Module : 파이썬에서 제공하는 모듈
- User define Module : 직접 만들어서 사용하는 모듈
- 3rd Party Module : 파이썬이 아닌 외부 회사나 단체에서 제공하는 모듈
파이썬에서 제공하는 표준 모델의 목록을 일부 확인
import sys
print(sys.builtin_module_names)
import math
dir(math)
dir() : 어떤 객체를 인자로 넣어주면 해당 객체가 어떤 변수와 메소드(method)를 가지고 있는지 나열해준다.
dir(__builtins__)
: 제공하는 모듈과 예약어 확인
모듈 가져오기
1) import로 모듈 가져오기
- import 모듈1, 모듈2
- 모듈1.변수, 모듈1.함수(), 모듈1.클래스()
- 이와 같이 많이 사용한다.
2) import as로 모듈 이름 지정하기
- import 모듈 as 이름
3) from import로 모듈의 일부만 가져오기
- from 모듈 import 변수 (또는 함수, 클래스)
- 이후 모듈 이름을 붙이지 않고, 변수(또는 함수, 클래스) 바로 사용 가능하다.
- from 모듈 import *
- 모듈의 모든 변수, 함수, 클래스를 가져오기
- 왠만하면 쓰지말기
4) from import로 모듈의 일부를 가져온 뒤 이름 지정
- from 모듈 import 변수 (또는 함수, 클래스) as 이름
- from 모듈 import 변수 as 이름1, 함수 as 이름2, 클래스 as 이름3
5) 예외
- import로 가져온 모듈(변수, 함수, 클래스)는 del로 해제할 수 있다.
- 다시 가져오려면 importlib.reload를 사용한다.
import math import importlib del math importlib.reload(math)
값에 의한 전달, 참조에 의한 전달
1) 값에 의한 전달 : 값에 의한 전달은 일반 변수나 값을 전달할 때 함수에 동일한 크키의 별도의 메모리 공간이 확보되어 값이 복사되는 방식이다.
2) 참조에 의한 전달 : 리스트, 튜플, 딕셔너리, 세트를 매개변수로 전달하므로 주소가 전달되어 메모리 공간이 공유되는 방식이다. 따라서 함수에 리스트를 변경하면 메인 코드의 리스트도 변경된다.
def fun(p):
p[0] = 222
print(p, id(p))
y = [111]
func(y)
print(y, id(y))
# [222] 2244068
# [222] 2244068
함수의 심화 내용
패키지
- 모듈이 하나의 *.py파일 안에 함수가 여러 개 들어 있으면, 패키지는 여러 모듈을 모아 놓은 것으로 폴더의 형태로 나타낸다.
- 모듈을 주제별로 분리할 때 주로 사용한다.
- 디렉터리 안에
__init__.py
파일이 있으면 디렉터리는 패키지로 인식된다.
server
import urllib.request
response = urllib.request.urlopen('http://www.google.co.kr')
response.status
import urllib.request as r
response = r.urlopen('http://www.google.co.kr')
response.status
urllib.request.urlopen
: URL을 여는 함수인데 URL 열기에 성공하면 response.status의 값이 200이 나온다.
'컴퓨터공학 언어 > Python' 카테고리의 다른 글
iterator, generator (0) | 2021.10.27 |
---|---|
Algorithm 공부하다 알게된 내용 (0) | 2021.10.26 |
함수 (0) | 2021.10.15 |
문자열 (0) | 2021.10.15 |
Tuple, Dictionary, Set (0) | 2021.10.15 |
댓글