Python/기초문법
모듈과 라이브러리
jsBae
2024. 11. 24. 22:14
모듈의 개념을 이해하고 다양한 표준 모듈을 사용 해 보자. 모듈을 생성 해 보자
1.모듈(module)
- 부품을 의미
- 데이터, 함수, 클래스 등을 기능별 단위로 묶어서 파일(.py)로 저장 해 놓은 것
- 코드를 분리하고 공유하는 기능
- import를 사용하여 표준모듈, 외부모듈을 가져와서 사용
모듈(Module)은 관련된 함수, 변수, 클래스 등을 하나의 파일에 모아둔 파이썬 코드 파일이다. 모듈은 코드의 재사용성을 높이고 유지보수를 쉽게 하기 위해 사용된다. 파이썬 파일(.py)은 모두 모듈로 간주될 수 있다.
모듈의 주요 특징
- 재사용성: 동일한 기능을 여러 곳에서 사용 가능.
- 조직화: 코드를 논리적으로 그룹화하여 가독성을 높임.
- 표준 라이브러리: 파이썬은 다양한 표준 모듈을 기본적으로 제공함.
모듈 가져오기 (Import):
- import module_name을 사용하여 모듈을 가져온다.
- 필요한 특정 기능만 가져올 때는 from module_name import function_name을 사용한다.
import math
print(math.sqrt(16))
print(math.pow(2, 3)) #제곱 : 8
print(math.sin(1)) #사인값
print(math.cos(1))#코사인값
나.from 구문
- 다양한 함수를 계속해서 입력하는 것은 비효율적
- from 구문을 이용하여 math없이 사용
- 즉, from 구문은 주로 모듈이나 패키지로부터 특정 함수, 클래스, 또는 변수를 직접 가져오기 위해 사용
- 이 구문은 모듈의 이름을 반복해서 쓰지 않고도 모듈 내의 특정 요소를 직접 사용할 수 있게 해준다.
- 모듈에서 모든 함수와 클래스를 가져오고 싶을 때는 굵은 텍스트
- 구문은 코드의 가독성을 높이고, 필요한 부분만을 명확히 가져와서 메모리 사용을 효율적으로 할 수 있도록 도와줍니다. 그러나 사용할 모듈의 함수나 클래스가 무엇인지 명확하게 알고 있어야 하며, 이름 충돌을 피하기 위해 주의를 기울여야 합니다.
from math import sin,cos,ceil
from a import b : a는 가려오려는 모듈, b는 모듈내에 가져오고 싶은 함수나 클래스 이름
from math import sin,cos,ceil
print(sin(1))
다.as구문
- 모듈이름이 길어서 짧게 사용하고 싶을 때 사용
import 모듈명 as 사용하고 깊은 식별자
import math as mt
print(mt.sin(1))
print(mt.ceil(2.3))
print(mt.sqrt(16))
사용자로부터 반지름을 입력받아 원의 면적과 둘레를 계산하시오.
(원의 면적 = π × 반지름², 원의 둘레 = 2 × π × 반지름)
import math
r = int(input('반지름 입력:'))
print(f'원의 둘레는 {2*math.pi*r:.2f}')
print(f'원의 넓이는 {math.pi*r**2:.2f}')
2.표준모듈 예
.os 모듈
- 운영 체제와 상호작용하기 위한 다양한 기능을 제공
- 파일 시스템을 탐색, 파일 및 디렉터리를 관리
- 운영 체제에 대한 정보를 얻고, 환경 변수에 접근하는 등의 작업을 수행
- os.chdir (change directory"의 약자) - 이 함수는 현재 작업 중인 디렉터리를 변경
함수명 | 설명 |
os.chdir | 이 함수는 현재 작업 중인 디렉터리를 변경 |
os.getcwd()
|
현재폴더 |
os.name | 현재 운영체재 |
os.mkdir |
새로운 폴더를 만듦 |
os.rmdir | 디렉토리 삭제 |
나.random 모듈
- 난수 발생 관련 모듈
- 이 모듈은 다양한 형태의 무작위 숫자를 생성할 수 있는 함수들을 포함
- random.random(): 0.0 이상 1.0 미만의 부동소수점 난수를 생성
- random.uniform(a, b): a와 b 사이의 부동소수점 난수를 생성
- random.randint(a, b): a와 b 사이의 정수형 난수를 생성
- random.choice(sequence): 주어진 시퀀스(리스트, 튜플 등)에서 임의의 요소를 선택
- random.shuffle(sequence): 시퀀스의 요소들을 무작위로 섞습니다.
import random
my_list = [1,2,3,4,5,6]
random.shuffle(my_list)
print(my_list)
예제 : 동전던지기
import random
coin_flip = random.randint(0,1)
if coin_flip == 0:
print('앞면')
else:
print('뒷면')
1부터 100까지의 숫자 중에서 랜덤한 숫자 5개를 뽑아 출력하시오.
import random
num = random.sample(range(1,101), 5)
print(num)
다. sys모듈
- Python 인터프리터와 밀접하게 관련된 함수와 변수들을 제공
- 이 모듈은 시스템 관련 정보에 접근, Python 인터프리터에 대한 제어를 가능하게 한다.
- sys.version()현재 사용 중인 Python 인터프리터의 버전 정보, 실행 중인 운영 체제의 플랫폼 정보 등을 제공
import sys
print(sys.version)
print(sys.platform)
라.datetime 모듈
- 날짜와 시간에 관한 모듈
- 이 모듈을 사용하면 날짜와 시간을 쉽게 생성, 조작, 그리고 포매팅할 수 있다.
- datetime.date: 날짜를 나타내는 클래스입니다. 연도, 월, 일 정보를 다룰 수 있다.
- datetime.time : 시간을 나타내는 클래스입니다. 시, 분, 초, 마이크로초 정보를 다룰 수 있습니다.
- datetime.datetime: 날짜와 시간을 동시에 나타내는 클래스입니다. date와 time 클래스의 기능을 결합한 형태입니다.

from datetime import time
my_time = time(10,30,15) # 10시 30분 15초를 나타내는 time 객체 생성
print(my_time)
from datetime import datetime
now = datetime.now()
print(now)
print(now.year)
print(now.month)
print(now.day)
print(now.hour)
print(now.second)
예제:오늘부터 1000일 이후의 날짜를 구해보자
import datetime # datetime 모듈을 가져옴 (날짜와 시간 작업용)
# 오늘 날짜 가져오기
d = datetime.date.today() # 오늘 날짜 반환 (예: 2024-11-24)
# 1000일 뒤의 날짜 계산
d = d + datetime.timedelta(days=1000) # 오늘 날짜에 1000일을 더함
# 계산된 날짜 출력
print(d) # 계산된 날짜 출력 (예: 2027-08-20)
외부모듈(external module)와 라이브러리(library)
- 다른 사람이 제작해서 배포한 모듈
- 라이브러리 : 모듈의 집합의 라이브러리라 한다.
가.모듈만들기
- 작성한 파일을 .py로 저장
- 파이썬 확장자는 모듀 모듈
- my_module.py가 Colab 노트북과 같은 디렉터리에 있다면, 다음과 같이 임포트할 수 있습니다:
연습문제
문제2.참석자 명단을 입력 받은 파일을 출력 해 보자.
with open('guest.txt', 'w') as f: # 파일 이름을 'guest.txt'로 통일
while True:
name = input('name: ') # 사용자로부터 이름 입력
if not name: # 빈 입력이 들어오면 종료
break
print(f'{name} 학생 환영해요') # 환영 메시지 출력
f.write(name + '\n') # 파일에 이름 저장 (줄바꿈 포함)
# 저장된 이름 파일을 읽어 총 학생 수 출력
with open('guest.txt', 'r') as f:
lines = f.readlines() # 파일의 모든 줄 읽기
cnt = len(lines) # 줄 수로 학생 수 계산
print(f'total: {cnt}명') # 총 학생 수 출력
728x90
반응형