줄기세포

[python3.7 / 파이썬 마스터] 모듈(module)이란 / 모듈 만들기 / 모듈 가져오기 본문

Python

[python3.7 / 파이썬 마스터] 모듈(module)이란 / 모듈 만들기 / 모듈 가져오기

줄기세포(Stem_Cell) 2023. 6. 20. 01:11

01. 모듈

  • 모듈: 정의된 함수들을 포함하고 있는 파이썬 파일
    • 함수들의 집합이라 생각하면 됨
    • 기본적으로 파이썬이 제공하는 모듈
    • 개인이 구현한 파이썬 모듈
  • 파일을 import하여 그 안에 정의된 함수들을 호출하여 사용
  • 코드를 재사용하려는 목적이 가장 크다

02. 모듈 가져오기 (import)

import로 다른 파이썬 파일(=모듈)을 읽어 들임

  • .py라는 파일을 가져오는 것이고 import 시에 .py는 생략
  • 기본 모듈은 파이썬 설치 경로의 lib 폴더에 존재
[root@vultr ~]# which python3.7
/usr/local/bin/python3.7
[root@vultr ~]# python3.7

>>> import sys
>>> sys.path
['',                                    **# ''은 현재 경로**
'/usr/local/lib/python37.zip', 
'/usr/local/lib/python3.7', 
'/usr/local/lib/python3.7/lib-dynload', 
'/usr/local/lib/python3.7/site-packages']

a. 모듈 경로 확인 (inspect)

  • inspect 모듈의 getfile 메소드 사용
>>> import math
>>> import inspect
>>> inspect.getfile(math)
'/usr/local/lib/python3.7/lib-dynload/math.cpython-37m-x86_64-linux-gnu.so'

b. 모듈의 특정 함수만 가져오기

# 모듈.함수로만 사용가능
>>> import math
>>> pi
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'pi' is not defined
>>> math.pi
3.141592653589793

# 특정 함수 가져오기
>>> from math import pi
>>> pi
3.141592653589793

# 함수(메소드) 모두 가져오기
>>> from math import *
>>> pi
3.141592653589793
>>> math.pi
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'math' is not defined

03. 사용자 모듈 만들기

a. 모듈 만들기

[root@vultr ~]# vi test.py

def userprint():
    print('test: userprint')

def add(a,b):
    return a+b

...

b. 모듈 import

[root@vultr ~]# python3.7

# import 모듈
# inspect로 모듈 경로확인
>>> import inspect
>>> inspect.getfile(test)
'/root/test.py'

# 모듈 내 함수 확인
>>> dir(test)
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'add', 'userprint']

# 함수 사용 1
>>> test.add(1,2)
3

# 함수 사용 2
>>> test.userprint()
test: userprint

c. 모듈에서 함수 (메소드) import

# 모든 함수(메소드) import
>>> from test import *

# 함수 사용 1
>>> add
<function add at 0x7ff2e4ee1710>
>>> add(5,19)
24

# 함수 사용 2
>>> userprint  
<function userprint at 0x7ff2e4f820e0>
>>> userprint()
test: userprint
Comments