1. 모듈 module
📁 여러 변수와 함수를 가지고 있는 집합체
📁 파이썬에 기본적으로 내장되어 있는 모듈을 '표준 모듈', 다른 사람들이 만들어 공개한 모듈을 '외부 모듈'
1) 모듈의 사용
👾 반드시 같은 디렉토리에 있어야 함
👾 모듈에 저장된 함수를 사용하는 방법
A. 모듈 전체를 가져오는 방법
- 모듈에 저장된 '모든' 클래스나 함수를 사용하고자 할 때
ex. import 모듈
# import 모듈이름으로 불러옴
import converter
miles = converter.kilometer_to_miles(150) # 모듈.함수() 형식으로 호출
print(f'150km={miles}miles') # 150km=93.20565miles
pounds = converter.gram_to_pounds(1000)
print(f'1000g={pounds}pounds') # 1000g=2.20462pounds
B. 모듈에 포함된 함수 중에서 특정 함수만 골라서 가져오는 방법
ex. from 모듈 import 함수
from 모듈 import 함수1, 함수2
from 모듈 import *
from converter import kilometer_to_miles # 모듈은 가져오지 않고 특정 함수만 가져옴
miles = kilometer_to_miles(150) # 모듈명을 명시하지 않고 사용
print(f'150km={miles}miles') # 150km=93.20565miles
print()
from converter import * # 모듈은 가져오지 않고 모듈의 모든 함수 가져옴
miles = kilometer_to_miles(150) # 모듈명을 명시하지 않고 사용
print(f'150km={miles}miles')
pounds = gram_to_pounds(1000)
print(f'1000g={pounds}pounds') # 모듈명을 명시하지 않고 사용
2) 별명 사용
👾 모듈이나 함수를 import 하는 경우에 원래 이름 대신 별명 alias를 지정하고 사용
👾 모듈이나 함수의 이름이 긴 경우에 주로 짧은 별명을 지정하고 긴 본래 이름 대신 사용
👾 별명을 지정할 때는 as 키워드를 사용
import converter as cvt # converter 모듈에 cvt라는 별명을 지정
miles = cvt.kilometer_to_miles(150) # 별명을 이용해서 함수 사용
print(f'150km={miles}miles')
pounds = cvt.gram_to_pounds(1000)
print(f'1000g={pounds}pounds')
print()
from converter import kilometer_to_miles as k_to_m # 함수에도 별명을 지정 가능
miles = k_to_m(150) # 함수 이름 대신 별명을 사용
print(f'150km={miles}miles')
2. math 모듈
📁 말 그대로 수학과 관련된 기능을 가지고 있다
변수 또는 함수 | 설명 |
원주율 pi | 더 정확한 파이 값을 사용하기 위해 |
ceil() & floor() | 전달된 값을 정수로 올림 처리하거나 내림 처리 |
trunc() | 전달된 값을 정수로 절사, 양수를 처리할 때는 차이가 없지만 음수를 처리할 때는 결과의 차이가 있다 |
sqrt() | 제곱근 구함 |
pow() | 제곱을 구함 |
import math # import 후 사용
# 1) 원주율 pi
print(math.pi) # 3.141592653589793
# 2) ceil() 함수와 floor() 함수
print(math.ceil(1.1)) # 2 / 정수로 올림 처리
print(math.floor(1.9)) # 1 / 정수로 내림 처리
# 3) trunc() 함수
print(math.trunc(-1.9)) # -1 / 절사이므로 소수점 이하를 잘라버림
print(math.floor(-1.9)) # -2 / 내림이므로 -1.9 보다 작은 정수로 내림
# 4) sqrt() 함수
print(math.sqrt(25)) # 5.0 / 루트 25를 의미
3. random 모듈
📁 난수 random number 를 생성하는 모듈
📁 난수를 통해서 간단한 게임을 제작할 수 있고 확률 처리도 할 수 있다
변수 또는 함수 | 설명 |
randint() | 전달하는 두 인수 사이의 정수를 임의로 생성 |
randrange() | range() 함수는 특정범위의 정숫값들을 모두 생성할 수 있지만, randrange() 함수는 그 특정 범위에 속한 정수중 하나만 임의로 생성 |
random() | 0이상 1미만 범위에서 임의의 실수를 생성 0이상 1미만 범위를 백분율로 환산하면 0%이상 100%미만이기 때문에 확률을 처리할 때도 사용 |
choice(list) | 전달된 시퀀스 자료형에 속한 요소 중에서 하나를 임의로 반환 |
sample(list, k=<숫자>) | 전달된 시퀀스 자료형에 속한 요소 중 지정된 개수의 요소를 임의로 반환 반환 결과는 리스트 list 자료형이며 중복없이 임의의 요소가 선택 |
shuffle(list) | 전달된 시퀀스 자료형에 속한 요소의 순서를 임의로 조정하여 다시 재배치하는 함수 호출하면 실제 전달된 시퀀스 자료형의 순서가 재배치 |
import random
# 1) randint() 함수
print(random.randint(1,10)) # 1이상 10이하의 정수
# 2) randrange() 함수
print(random.randrange(10)) # 0이상 10미만의 정수
print(random.randrange(1,10)) # 1이상 10미만의 정수
print(random.randrange(1,10,2)) # 1이상 10미만의 홀수
# 3) random() 함수
print(random.random()) # 0.1859815803780659
# 50% 확률로 '안녕하세요' 출력
if random.random() < 0.5:
print('안녕하세요')
rand = random.randint(1,2)
print(rand)
if rand == 1:
print('안녕하세요')
# 4) choice() 함수
seasons = ['spring', 'summer', 'fall', 'winter']
print(random.choice(seasons)) # fall
idx = random.randint(0, len(seasons) - 1)
print(seasons[idx])
# 5) sample() 함수
print(random.sample(range(1, 46), 6)) # [36, 4, 14, 35, 12, 16]
seasons = ['spring', 'summer', 'fall', 'winter']
print(random.sample(seasons, 3))
seasons = ['summer', 'summer', 'summer', 'winter']
print(random.sample(seasons, 3))
# 6) shuffle() 함수
my_list = [1, 2, 3, 4, 5]
random.shuffle(my_list)
print(my_list) # [4, 2, 3, 1, 5]
4. sys 모듈
📁 시스템과 관련된 정보를 가지고 있는 모듈
📁 명령 매개변수를 받을 때 많이 사용
import sys
# 명령 매개변수 출력
print(sys.argv) # ['/Users/Desktop/pycharm/pythonProject/book/1.py']
print("----")
# 컴퓨터 환경과 관련된 정보 출력
print("copyright:", sys.copyright)
print("----")
print("version:", sys.version)
'''
copyright: Copyright (c) 2001-2023 Python Software Foundation.
All Rights Reserved.
... 생략 ...
----
version: 3.10.13 (main, Sep 11 2023, 08:16:02) [Clang 14.0.6 ]
'''
# 프로그램 강제 종료
sys.exit()
5. os 모듈
📁 운영체제와 관련된 기능을 가진 모듈
import os
# 기본 정보 출력
print("현재 운영체제:", os.name)
print("현재 폴더:", os.getcwd())
print("현재 폴더 내부의 요소:", os.listdir())
'''
현재 운영체제: posix
현재 폴더: /Users/Desktop/pycharm/pythonProject/book
현재 폴더 내부의 요소: ['1.py']
'''
# 폴더 만들고 제거(폴더가 비어있을 때만 가능)
os.mkdir("hello")
os.rmdir("hello")
# 파일 생성하고 파일 이름 변경
with open("original.txt", "w") as file:
file.write("hello")
os.rename("original.txt", "new.txt")
# 파일 제거
os.remove("new.txt")
# 시스템 명령어 실행
os.system("dir")
6. datetime 모듈
📁 날짜와 시간 데이터를 처리할 때 사용
변수 또는 함수 | 설명 |
now() | 시스템의 현재 날짜와 시간을 반환 |
date() | 특정 날짜를 반환 |
time() | 특정 시간을 반환 |
날짜/시간 관련 필드값 | 특정 날짜에 원하는 데이터만 추출하고자 할때 이용 |
timedelta() | 날짜 / 시간 데이터의 연산을 위하여 사용 |
total_seconds() | 어떤 기간에 포함된 총 시간의 초 seconds 로 반환 |
import datetime
# 1) now() 메소드
present = datetime.datetime.now()
print(present)
# 2) date() 함수
birthday = datetime.date(2014, 8, 25)
print(birthday) # 2014-08-25
# 3) time() 함수
wake = datetime.time(10, 48, 0)
print(wake) # 10:48:00
# 4) 날짜 / 시간 관련 필드값
today = datetime.datetime.now()
print(today.year) # 년도
print(today.month) # 월
print(today.day) # 일
print(today.hour) # 시
print(today.minute) # 분
print(today.second) # 초
# 5) timedelta() 함수
# 1주 : timedelta(weeks=1)
# 1일 : timedelta(days=1)
# 1시간 : timedelta(hours=1)
# 1분 : timedelta(minutes=1)
# 1초 : timedelta(seconds=1)
today = datetime.datetime.now()
yesterday = today - datetime.timedelta(days=1) # 어제 구함
tomorrow = today + datetime.timedelta(days=1) # 내일 구함
print(yesterday)
print(tomorrow)
# 6) total_seconds() 메소드
date1 = datetime.date(2020, 8, 25)
date2 = datetime.date(2020, 8, 26)
print(date2 - date1) # 1 day, 0:00:00
print((date2 - date1).total_seconds()) # 86400.0 = 60초 * 60분 * 24시간
7. time 모듈
📁 시간과 관련된 기능 처리
변수 또는 함수 | 설명 |
time() | 1970년 1월 1일 0시 0분 0초 부터 현재까지 경과된 시간 timestamp을 반환 소수점 이하는 마이크로 초를 의미 |
ctime() | 인수로 전달된 시간 timestamp을 형식에 갖춰 반환 |
strftime() | 인수로 전달된 날짜와 지시자를 이용하여 형식을 갖춘 날짜 데이터가 문자열로 반환 |
sleep() | 인수로 전달된 초 second 만큼 시스템을 일시 정지 |
import time
# 1) time() 함수
print(time.time()) # 1645240996.2733545
# 2) ctime() 함수
print(time.ctime(time.time())) # Sat Feb 19 12:23:16 2022
# 3) strftime() 함수
# 년 : %y : 2자리 날짜로 표시
# 년 : %Y : 4자리 날짜로 표시
# 월 : %m : 2자리 숫자로 표시 (01 ~ 12)
# 월 : %b : 3자리 영문으로 표시 (Jan ~ Dec)
# 월 : %B : 전체 영문으로 표시 (January ~ December)
# 일 : %d : 2자리 숫자로 표시 (01 ~ 31)
# 요일 : %a : 3자리 영문으로 표시 (Sun ~ Sat)
# 요일 : %A : 전체 영문으로 표시 (Sunday ~ Saturdy)
# 시 : %l : 12시간제로 표시 (01 ~ 12)
# 시 : %H : 24시간제로 표시 (00 ~ 23)
# 분 : %M : 2시간제로 표시 (00 ~ 59)
# 초 : %S : 2시간제로 표시 (00 ~ 59)
# 오전 / 오후 : %p : AM 또는 PM
print(time.strftime('%Y-%m-%d %H:%M:%S'))
# 4) sleep() 함수
time.sleep(1)
8. urllib 모듈
📁 URL을 다루는 라이브러리
📁 URL : Uniform Rssource Locator, 네트워크의 자원이 어디에 위치하는지 확인할 때 사용하는 것
▶️ 웹 브라우저의 주소창에 입력하는 주소
from urllib import request
# urlopen() 함수로 구글 메인페이지를 읽습니다
target = request.urlopen("https://google.com")
output = target.read()
# 출력합니다
print(output)
'''
b'<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage"
lang="ko"><head><meta content="text/html; charset=UTF-8"
... 생략 ...
'''
[ 내용 참고 : IT 학원 강의 및 책 '혼자 공부하는 파이썬' ]
'Programming Language > Python' 카테고리의 다른 글
[Python] 모듈 만들기, __name__, __init__.py (0) | 2024.03.03 |
---|---|
[Python] 외부 모듈(external module), 라이브러리와 프레임워크, 데코레이터 (0) | 2024.03.03 |
[Python] 튜플(tuple)과 람다(lambda), 제너레이터(generator) (0) | 2024.03.02 |
[Python] 재귀함수, 피보나치 수열, 메모화, 리스트 평탄화 (0) | 2024.03.02 |
[Python] 함수(function), 인수와 매개변수, 리턴(return) (0) | 2024.03.02 |