본문 바로가기
컴퓨터공학 언어/Python

Module과 Package

by KChang 2021. 10. 15.

모듈과 패키지의 이해

패키지(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

댓글