Python 모듈, 패키지

dumbbelldore·2024년 11월 6일
0

zero-base 33기

목록 보기
8/97

1. 모듈

  • 이미 만들어진 훌륭한 기능으로, 모듈을 활용하여 손쉽게 프로그램을 구성할 수 있음
  • ex) 계산 모듈(math), 난수 모듈(random), 날짜/시간 모듈(datetime)
  • Python에 내장된 내부 모듈 외에도 필요에 따라 외부 모듈 혹은 사용자 모듈을 import 하여 활용할 수 있음
# 난수 모듈 활용
import random

my_num = random.randint(1, 10) # 1~10 사이의 정수 1개를 난수 추출
print(my_num) # 4

2. 사용자 모듈 만들기

  • 모듈은 별도의 프로그램이라기 보다는, 특정 기능을 정의해 놓은 Python 파일(.py)이라고 생각하면 됨
# 파일명: my_calculator.py
def num_add(x, y):
	return x + y

# 파일명: test.py
import my_calculator as mc
res = mc.num_add(2, 3)
print(res) # 5

3. name 전역변수

  • impot한 모듈 파일의 __name__에는 모듈 이름이 저장되고, 실행파일의 __name__에는 '__main__'이 저장됨
  • 만약, 특정 모듈 내부에서만 실행이 필요한 코드를 if __name__ == "__main__": 조건문 뒤에 기술한다면, 해당 모듈을 import한 다른 py파일에서는 실행되지 않게 할 수 있음
import my_calculator as mc

res = mc.num_add(2,3)
print(res) # 5
print("import한 모듈의 __name__: ", mc.__name__) # my_calculator
print("본 py 파일의 __name__: ", __name__) # __main__

4. 패키지

  • 패키지를 이용하면 관련 있는 모듈을 모아 하나의 그룹으로 관리할 수 있음
  • 패키지는 디렉토리(폴더)에 해당되며, 모듈은 각자의 기능이 정의된 py파일에 해당함
  • ex) my_calculator = add_num.py + sub_num.py + mul_num.py

5. site-packages

  • 사용자가 정의한 모듈은 동일한 디렉토리 내에서만 접근이 가능함
  • site-packages 디렉토리 내 위치한 모듈은 어디에서나 사용할 수 있음
  • ex) C:\python\project\venv\lib\site-packages
# 해당 Python 가상환경의 site-packages 경로 확인법
import sys
for path in sys.path:
	print(path) 

6. 유용한 외부 모듈

  • math 모듈: Python에서 기본으로 제공되는 수학함수(sum, max, min, pow) 外 고급 연산 기능 제공
  • random 모듈: 난수 추출 기능 제공
  • time 모듈: 시간과 관련된 기능 제공
import math
print(math.ceil(5.21)) # 올림(6)
print(math.floor(-4.11)) # 내림(-5)
print(math.trunc(8.123)) # 소숫점 절사(8)
print(math.fabs(-7)) # 절댓값(7)
print(math.sqrt(4)) # 제곱근(2)
print(math.gcd(14, 21)) # 최대공약수(7)
print(math.lcm(14, 21)) # 최소공배수(42)
print(math.factorial(10)) # 팩토리얼(3,628,800)

import random
print(random.randint(1, 100)) # 1~100 사이 정수(70)
print(random.random(2)) # 0~1 사이 소수(0.778199957037151)
print(random.choice(["a","b","c"])) # 리스트 내 원소 (b)

import time
print(time.localtime().tm_hour) # 현재 시간(7)
print(time.localtime().tm_min) # 현재 분(51)
print(time.localtime().tm_wday) # 현재 요일(2, 수요일)

*이 글은 제로베이스 데이터 취업 스쿨의 강의 자료 일부를 발췌하여 작성되었습니다.

profile
데이터 분석, 데이터 사이언스 학습 저장소

0개의 댓글