모듈

최대환·2021년 3월 24일
0

파이썬

목록 보기
6/16
post-thumbnail

모듈이란?

  • 파이썬에서 여러 기능들을 모아둔 모듈이란 파일을 의미한다.
  • 파일을 모듈화 시키면 한파 일에서 구현하고자하는게 명확해지고, 코드도 재사용할 수 있어 효율적이다.
  • 모듈의 이름은 .py 확장자를 뺀걸로 부른다.

예시

💻 calculator.py

# 덧셈
def addition(a, b):
    return a + b

# 뺄셈
def subtraction(a, b):
    return a - b

# 곱셈
def multiplication(a, b):
    return a * b

# 나눗셈
def division(a, b):
    return (a / b)

모듈을 가져오는 여러가지 방법들

import

  • import 를 이용해서 import 모듈에 저장된 기능을 사용할 수 있다.

💻 run.py

# import 모듈 자체를 임포트한다.
import calculator		 
# 모듈안에 있는 변수나 함수를 호출할 때 (모듈이름). 을 사용한다.
print(calculator.addition(5,3))  

👀 결과

8

from (모듈이름) import (변수명, 함수)

  • from (모듈이름) import (변수명, 함수) 을 이용해서 모듈의 특정 변수나 함수만을 임포트 할 수 있다.

💻 run.py

# calculator 모듈에 있는 subtraction만 임포트 한다.
from calculator import subtraction
# subtraction만 임포트 하였기 때문에 함수를 호출할 때 (모듈이름).을 붙이지 않는다.
print(subtraction(5,3))		   

👀 결과

2

from (모듈이름) import *

  • from (모듈이름) import * 을 사용해 모듈에 있는 모든것들을 임포트할 수 있다.
  • 하지만 이 임포트 방식은 쓸데없이 불필요한 많은 것들을 불러올 수 있어서 파이썬 커뮤니티에서는 권장되지 않는 방식이다.

💻 run.py

# import 모듈에 있는 모든 것을 임포트한다.
from calculator import *
# import 함수에 있는 모든 변수나 함수들을 임포트 했기 때문에, 호출할때 (모듈이름). 을 붙이지 않는다. 
print(addition(5,3))
print(subtraction(5,3))
print(multiplication(5,3))
print(division(5,3))

👀 결과

8
2
15
1.6666666666666667

as키워드

  • as 키워드를 사용해 모듈이름,변수명, 함수명을 줄이거나 바꿔서 사용할 수 있다.

💻 run.py

# as 키워드를 이용해 calculator 를 cal로 바꿨다.
import calculator as cal
print(cal.addition(5,3))

# as 키워드를 이용해 subtraction 을 sub로 바꿨다.
from calculator import subtraction as sub
print(sub(5,3))

👀 결과

8
2

네임스페이스

dir 함수

  • 네임스페이스란 파일에서 정의된 모든 이름들을 뜻한다.
  • dir 함수를 이용하여 모듈에 있는 네임스페이스를 검색할 수 있다.

💻 run.py

# calculator를 임포트하여 네임스페이스에 올렸다.
import calculator
print(dir())

👀 결과

# 맨 뒤쪽에 보면 calculator이 네임스페이스에 올라가있는걸 볼수있다.(나머진 원래 내장되있는 변수,함수들)
['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'calculator']

💻 run.py

import calculator
print(dir())

👀 결과

# 맨 뒤쪽에 보면 additionm, subtraction이 네임스페이스에 올라가있는걸 볼수있다.(나머진 원래 내장되있는 변수,함수들)
['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'addition', 'subtraction']

정의된 이름이 혹시 중복되면?

  • 정의된 함수나 변수 이름이 중복될 경우에는 나중에 함수나 변수 이름이 호출된다.

💻 run.py

from calculator import addition

def addition(a, b):
    return a ** b

print(addition(5,3))

👀 결과

125

from (모듈이름) import *가 효율적이지 않은 이유

  • from (모듈이름) import * 는 모듈안에 있는 모든 함수나 변수의 이름들을 네임스페이스에 추가하기 때문에, 네임스페이스에 어떤 이름이 있는지 파악하기도 힘들어질 뿐만아니라 같은 이름이 중복될 확률도 높아진다.

💻 run.py

from calculator import *
print(dir())

👀 결과

# 맨 마지막에보면 calculator 모듈의 모든 함수들이 호출된걸 볼 수 있다.
['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'addition', 'division', 'multiplication', 'subtraction']

스탠다드 라이브러리

math 모듈

  • 스탠다드 라이브러리란 개발자들이 많이 쓸법한 자료형, 내장함수, 모듈을 모아둔 곳이다.
  • math 모듈은 수학관련 함수들을 담고있는 스탠다드 모듈이다.
    💻 run.py
import math

# 사인 함수
print(math.sin(0))

# 코사인 함수
print(math.cos(0))

👀 결과

0.0
1.0

math 모듈

random 모듈

  • random 모듈은 수학관련 함수들을 담고있는 스탠다드 모듈이다.
import random

# 1이상 10 이하의 랜덤한 정수
print(random.randint(1,10))

# 0이상 1이하의 랜덤한 소수
print(random.uniform(0, 1))

👀 결과

5
0.9739021350129778
profile
나의 개발지식 output 공간

1개의 댓글

comment-user-thumbnail
2021년 4월 1일

'import 모듈명' 할 때, 해당 모듈 파일이 같은 레벨의 디렉토리에 위치해야하나요?

답글 달기