파이썬은 **모듈(module)**이라는 것을 이용해 코드를 분리하고 공유한다. 모듈은 여러 변수와 함수를 가지고 있는 집합체이다. 모듈은 크게 표준 모듈과 외부 모듈로 나뉜다. 파이썬에 기본적으로 내장되어 있는 모듈을 **'표준 모듈'**이라고 하고 다른 사람이 만들어서 배포한 모듈을 **'외부 모듈'**이라고 부른다.
모듈을 가져올 때 아래와 같은 구문을 사용한다. 일반적으로 모듈을 가져오는(import)구문을 import 구문이라고 하고 통상 코드의 맨 윗 줄에 작성한다.
import 모듈_이름
표준 모듈
- math 모듈
- random 모듈
- sys 모듈
- os 모듈
- datetime 모듈
- time 모듈
- ulrlib 모듈
math 모듈
math 모듈은 이름에서 짐작할 수 있듯이 수학과 관련된 함수를 가지고 있다.
import math
print( math.sin(0) )
print( math.cos(0) )
print( math.tan(0) )
0.0 1.0 0.0
print( math.floor(2.5) ) # 내림
print( math.ceil(2.5) ) # 버림
2 3
표준 모듈 등의 정보가 필요할 때 가장 먼저 확인해야 하는 것은 파이썬 공식 문서이다. 파이썬 공식 라이브러리 문서는 여기 확인하실 수 있다.
from 구문
모듈에는 정말 많은 변수와 함수가 들어 있다. 하지만 그중에서 우리가 활용하고 싶은 함수(기능)은 몇 개 안될 것이다. 그리고 math 모듈이 가지고 있는 sin()을 사용하기 위해 math.sin()과 같이 모듈_이름.함수_이름() 형태로 매번 모듈 이름을 함수 이름 앞에 쓰는 것도 번거로운 일이다.
이 때 아래와 같이 from 구문을 활용하여 사용할 함수만 가져올 수 있으며 아래와 같이 코딩 되었을 때 모듈이 가지고 있는 함수 호출 시 모듈 이름을 생략할 수 있다.
from 모듈_이름 import 가져오고_싶은_변수_또는_함수_이름
# math 모듈에는 sin, cos, tan 이외에도 많은 함수들이 포함되어 있음.
# 필요한, 사용한 함수만 가져오기 위해 아래와 같이 코딩함
from math import sin, cos, tan
print( sin(0) )
print( cos(0) )
print( tan(0) )
0.0 1.0 0.0
언제 어떤 함수를 사용하지 모르니 math 모듈에 포함된 모든 함수를 다 가져오고 싶고 math 모듈에 포함된 함수를 호출할 때 함수 이름 앞에 모듈 이름을 쓰는 번거로움도 피하고 싶다면 아래와 같이 코딩하면 된다.
from math import *
다만 기존 사용하고 있던 함수 이름과 math 모듈에 포함된 함수 이름이 같을 경우 출돌이 생김으로 모듈에서 필요한, 사용할 함수만 import 하는 것이 좋다.
from math import *
print( sin(0) )
print( math.sin(0))
print( cos(0) )
print( math.cos(0) )
print( tan(0) )
print( math.tan(0) )
0.0 0.0 1.0 1.0 0.0 0.0
as 구문
모듈을 가져(import)오려고 하는데 동일한 이름이 있을 수 있다. 또는 모듈 이름이 너무 길 때 (모듈 이름이 마음에 안 들 때도) 아래와 같이 코딩하여 모듈 이름에 별명을 붙일 수 있다.
import 모듈_이름 as 사용하고_싶은_모듈_이름
import math as m
print( m.sin(0) )
print( m.cos(0) )
0.0 1.0
random 모듈
다음과 같은 방법으로 random 모듈을 가져와 사용할 수 있다.
import random
import random
# random() : 0.0 <= x < 1.0 범위에서 float형 숫자를 반환
print('random.random() : ', random.random())
# uniform(min, max): 지정된 범위(min <= x <= max)에서 float형 숫자를 반환
print('raddom.uniform(10, 20) :', random.uniform(10, 20))
# randrange(): 지정한 범위에 드는 int 형 숫자를 반환
# - randrange(max) : 0부터 max 사이(0 <= x < max)의 int 형 숫자를 반환
# - randrage(min, max) : min부터 max 사이(min <= x < max)의 값을 반환
print('random.randrange(10) :', random.randrange(5))
# choice(list): 리스트 내부에 있는 요소를 랜덤하게 선택합니다.
print('random.choice([1, 2, 3, 4, 5] :', random.choice([1, 2, 3, 4, 5]))
# shuffle(list) : 리스트의 요소를 랜컫하게 섞습니다.
print('random.shuffle([1, 2, 3, 4, 5] :', random.shuffle([1, 2, 3, 4, 5]))
# sample(list, k=숫자) : 리스트에서 k개의 요소를 임의로 뽑습니다.
print('random.sample([1, 2, 3, 4, 5], 2]) :', random.sample([1, 2, 3, 4, 5], 2))
random.random() : 0.8339232598505231 raddom.uniform(10, 20) : 16.68186895061961 random.randrange(10) : 0 random.choice([1, 2, 3, 4, 5] : 3 random.shuffle([1, 2, 3, 4, 5] : None random.sample([1, 2, 3, 4, 5], 2]) : [4, 5]
- 매번 귀찮게 random 모듈명을 앞에 붙이고 함수를 호출해야 하나?
코드를 아래와 같이 수정해서 사용할 함수만 가지고 오는 것이다. 그러면 이 함수를 사용할 때 함수 이름 앞에 모듈_이름.을 붙이지 않아도 된다.
from random import random, uniform, randrange, choice, shuffle, sample
sys 모듈
sys 모듈은 시스템과 관련된 정보를 다룰 수 있는 함수들의 집합체이다.
import sys
# 컴퓨터 환경과 관련된 정보를 출력
print( sys.copyright )
print('-'*128)
print( sys.version )
Copyright (c) 2001-2023 Python Software Foundation. All Rights Reserved.
Copyright (c) 2000 BeOpen.com. All Rights Reserved.
Copyright (c) 1995-2001 Corporation for National Research Initiatives. All Rights Reserved.
Copyright (c) 1991-1995 Stichting Mathematisch Centrum, Amsterdam. All Rights Reserved.
3.10.12 (main, Jun 7 2023, 12:45:35) [GCC 9.4.0]
os 모듈
os 모듈은 운영체제와 관련된 기능을 가진 모듈입니다.
새로운 폴더를 만들거나 폴더 내부의 파일 목록을 보는 일도 모두 os 모듈을 활용하여 처리합니다.
import os
print(os.name) # 현제 운영체제
print(os.getcwd()) # 현재 폴더
print(os.listdir()) # 현재 폴더 내부의 요소
posix /content ['.config', 'sample_data']
os.mkdir('hello') # 폴더 생성
os.rmdir('hello') # 폴더 삭제
with open('original.txt', 'w') as file:
file.write('hi~')
os.rename('original.txt', 'new.txt')
os.remove('new.txt')
os.system('ls') #colab에서 실행한 결과와 pc에서 실행한 결과가 다름.
Datetime 모듈
datetime 모듈은 date(날자), time(시간)과 관련된 모듈로, 날짜 형식을 만들 때 자주 사용됩니다.
앞서 조건문을 배우면서 시간을 구할 때 잠깐 사용해 보았습니다.
import datetime
#현재 시각을 구하고 출력
print('현재 시각 출력')
now = datetime.datetime.now() # look at me
print(str( now.year )+'년', end = ' ')
print(str( now.month )+'월', end= ' ')
print(str( now.day )+'일')
#print(str( now.hour )+'시', end = ':')
print(str( now.hour + 9 )+'시', end = ':')
print(str( now.minute )+'분', end= ':')
print(str( now.second )+'초')
현재 시각 출력 2024년 1월 10일 15시:30분:24초
'빅데이터 분석가 양성과정 > Python' 카테고리의 다른 글
Ch07-3 모듈 / 모듈 만들기 (2) | 2024.07.05 |
---|---|
Ch07-2 모듈 / 외부 모듈 (1) | 2024.07.05 |
Ch06-2 예외 처리 / 예외 고급 (1) | 2024.07.05 |
Ch06-1 예외처리 / 구문 오류와 예외 (0) | 2024.07.05 |
Ch05-2 함수 / 함수의 활용 (0) | 2024.07.05 |