티스토리 뷰

[문법] 파이썬(Python)

[중급] 8강. 모듈

으나니머스 2025. 1. 6. 20:26
반응형

다른 사람이 만들어놓은 모듈(module)을 잘 활용하면 쉽고 빠르게 프로그램을 개발할 수 있습니다.

 

우리가 지금까지는 혼자서 변수, 함수를 만들어 쓰면서 자급자족하는 방법을 배웠다고 한다면, 이제부터는 남이 만들어 놓은 부품을 가져다가 사용하는 방법을 배울 차례입니다.

 

 math 모듈

수학적인 계산 기능이 필요하다면 math라는 모듈을 불러와서 사용하시면 됩니다.

>>> import math                    # math 모듈을 가져와라

제곱근(square root)을 구해볼까요?

>>> math.sqrt(2)                   # 2의 제곱근
1.4142135623730951
>>> math.sqrt(3)                   # 3의 제곱근
1.7320508075688772
>>> math.sqrt(4)                   # 4의 제곱근
2.0

원주율도 알아보겠습니다.

>>> math.pi                        # math 모듈의 변수 pi의 값은?
3.1415926535897931

위에서는 math 모듈 내에 정의되어 있는 pi 변수를 사용했습니다. pi는 원주율을 뜻하지요.

calendar 모듈

이번에는 달력을 불러볼까요? 딱 두 줄만 치면 됩니다.

>>> import calendar
>>> calendar.prmonth(2013, 7)
     July 2013
Mo Tu We Th Fr Sa Su
 1  2  3  4  5  6  7
 8  9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

 

tkinter 모듈

gui프로그램을 만들게 해주는 모듈입니다.

>>> from tkinter import *
>>> widget = Label(None, text='I love Python!')
>>> widget.pack()

이렇게 파이썬에서는 좋은 기능들을 모듈로 묶어서 자체적으로 제공해 준답니다. 파이썬 뿐만이 아니라 대부분의 언어에서 이런 식으로 프로그래밍을 편리하게 할 수 있도록 지원해 주지요.

 

모듈 가져오기

 

파이썬에서 임포트를 하는 방법 두 가지를 알아보겠습니다.

첫 번째 방법:

import 모듈

두 번째 방법:

from 모듈 import 이름

첫번째 방법은 모듈 전체를 가져오구요, 두번째 방법은 모듈 내에서 필요한 것만 콕 찍어서 가져오는 방법이죠.

공구통에 비유하면 다음 그림과 같이 표현할 수 있어요.

 

두 방법을 비교해볼까요? 어제 소개해드린  tkinter(티 케이 인터) 모듈을 두 가지 방법으로 임포트해 보겠습니다.

>>> import tkinter
>>> tkinter.widget = tkinter.Label(None, text='I love Python!')
>>> tkinter.widget.pack()

첫 번째 방법으로 모듈을 불러오면 모듈 내의 변수를 사용하기 위해서는 모듈.변수의 형식으로 써주어야 합니다. 매번 써주려면 좀 번거롭겠죠?

>>> from tkinter import Label
>>> widget = Label(None, text='I love Python!')
>>> widget.pack()

두 번째 방법은 모듈 내의 이름을 콕 찍어서 가져오는 방법인데, 위에서는 tkinter에 있는 Label을 가져왔습니다.

 

지금까지 모듈을 불러오는 방법을 알아봤는데요, 불러온 모듈이 필요 없을 땐 어떻게 할까요? 필요 없는 모듈은 요렇게 지워주면 됩니다.

del 모듈

꼭 그렇게 해줄 필요가 있을까 싶지만, 프로그램을 짜다보면 이런 저런 일이 생기니까 알아두자구요.

한 번 임포트한 모듈을 다시 불러와야 할 때는 아래와 같이 다시 로드(reload) 할 수 있답니다.

from importlib import reload
reload(모듈)

 

 

여러가지 모듈

파이썬에서 기본적으로 제공하는 수많은 모듈 중에서 자주 쓰이는 것들을 소개해 드리겠습니다.

sys

처음으로 알려드릴 것은 sys 모듈입니다. 요놈은  파이썬 인터프리터를 제어할 수 있는 방법을 제공하지요.

파이썬 인터프리터를 띄워주세요. 인터프리터가 우리의 명령을 기다린다는 뜻으로 >>>를 표시하고 있죠? 도스와 마찬가지로 이것도 프롬프트라고 합니다.

sys 모듈을 사용하면 이 프롬프트를 바꿀 수가 있지요.

>>> import sys
>>> sys.ps1                                  # 현재의 프롬프트는?
'>>> '
>>> sys.ps1 = '^^; '                         # 요걸로 바꿔!
^^; print('hello')
hello
^^; 5 * 3
15
^^;

재미있지요? 이번엔 인터프리터를 끝내볼까요?

 ^^; sys.exit()

 os

 

그 다음에는 os 모듈을 보겠습니다. 이것은 운영체제(OS : Operating System)를 제어할 수가 있지요.

파이썬을 새로 실행하고, 현재 경로를 알아볼게요.

Python 3.8.5 (tags/v3.8.5:580fbb0, Jul 20 2020, 15:43:08) [MSC v.1926 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.getcwd()
'C:\\Users\\Yong Choi\\AppData\\Local\\Programs\\Python\\Python38-32'

os 모듈의 getcwd()는 현재 작업 디렉터리를 알려줍니다.
구해라(get)! 무엇을? 현재 작업 디렉터리(current working directory)를~

이곳에 어떤 파일들이 있는지 알아볼까요?

이곳에 어떤 파일들이 있는지 알아볼까요?

>>> os.listdir()
['DLLs', 'Doc', 'img_read.py', 'include', 'Lib', 'libs', 'LICENSE.txt',
'NEWS.txt', 'python.exe', 'python3.dll', 'python38.dll', 'pythonw.exe',
'Scripts', 'tcl', 'Tools', 'vcruntime140.dll']

이중에서 libs 디렉터리로 이동해 보겠습니다.

>>> os.chdir('libs')
>>> os.getcwd()
'C:\\Users\\Yong Choi\\AppData\\Local\\Programs\\Python\\Python38-32\\libs'

현재 작업 디렉터리가 바뀌었죠? 파일 목록도 보겠습니다.

>>> os.listdir()
['python3.lib', 'python38.lib', '_tkinter.lib']

상위 디렉터리는 ..으로 나타냅니다.

>>> os.chdir('..')
>>> os.getcwd()
'C:\\Users\\Yong Choi\\AppData\\Local\\Programs\\Python\\Python38-32'

 

 

webbrowser

웹브라우저를 오픈하는 모듈입니다.

Copy>>> import webbrowser
>>> url='http://www.python.org/'
>>> webbrowser.open(url)
True
>>>

 

random

이번에는 파이썬에서의 랜덤(random) 모듈 대해 가볍게 정리해 볼까 합니다.

우선 랜덤이 무엇인지부터 살펴볼까요.

주사위를 던지는 상황을 생각해봅시다. 주사위의 각 면에는 1개에서 6개까지의 눈이 새겨져 있어서, 주사위를 던질 때마다 그 중 하나의 숫자가 선택됩니다.

주사위를 직접 던져보기 전에는 다음번에 어떤 숫자가 나올지 알 수가 없죠.

그런데 주사위를 600번 정도 던져보면 각 숫자가 대략 100번 정도는 나오기는 합니다.

이런 것이 바로 난수(random number)입니다.

난수의 예가 될 만한 것으로  주사위 외에 또 어떤 것들이 있을까요? 복권 추첨, 음악 재생 순서 섞기...

그럼 파이썬으로 난수를 만들어봅시다.

>>> import random
>>> random.random()
0.90389642027948769

random 모듈의 random() 함수를 호출했더니 복잡한 숫자를 돌려주네요. random() 함수는 0 이상 1 미만의 숫자 중에서 아무 숫자나 하나 뽑아서 돌려주는 일을 한답니다.

 

주사위처럼 1에서 6까지의 정수 중 하나를 무작위로 얻으려면 어떻게 해야 할까요? 이럴 때 편리하게 쓸 수 있는 randrange()라는 함수가 있습니다.

>>> random.randrange(1,7)
6
>>> random.randrange(1,7)
2

여기에서 randrange(1,6)이 아니라 randrange(1,7)이라고 썼다는 점에 주의하세요.

"1 이상 7 미만의 난수"라고 생각하시면 이해가 쉽습니다.

내장함수인 range()를 되새겨보는 것도 좋겠군요.

>>> range(1,7)
[1, 2, 3, 4, 5, 6]

shuffle()이라는 재미있는 함수도 있군요. 시퀀스를 뒤죽박죽으로 섞어놓는 함수입니다.

>>> abc = ['a', 'b', 'c', 'd', 'e']
>>> random.shuffle(abc)
>>> abc
['a', 'd', 'e', 'b', 'c']
>>> random.shuffle(abc)
>>> abc
['e', 'd', 'a', 'c', 'b']

아무 원소나 하나 뽑아주는 choice() 함수도 있네요.

>>> abc
['e', 'd', 'a', 'c', 'b']
>>> random.choice(abc)
'a'
>>> random.choice(abc)
'd'

>>> menu = '쫄면', '육계장', '비빔밥'
>>> random.choice(menu)
'쫄면'

참과 거짓 중에 하나를 뽑고 싶다면 다음과 같이 할 수 있습니다.

>>> random.choice([True, False])
True
>>> random.choice([True, False])
False

 

날짜/시간 모듈

 

파이썬으로 날짜와 시간을 다룰 때는 datetime 모듈을 사용하며 timedelta 등을 함께 쓰기도 합니다.

프로그래밍할 때 자주 나타나는 패턴을 알려드릴게요.

datetime을 사용

특정 날짜와 시간 객체 생성하기

날짜와 시간을 직접 지정하여 datetime 객체를 생성하는 방법입니다.

from datetime import datetime
specific_datetime = datetime(2024, 2, 27, 12, 30)
print(specific_datetime)  # 2024-02-27 12:30:00

날짜와 시간 차이 계산하기

두 날짜/시간 사이의 차이를 계산하는 방법입니다.

from datetime import datetime
datetime1 = datetime(2024, 2, 27)
datetime2 = datetime(2024, 3, 5)
difference = datetime2 - datetime1
print(difference)  # 6 days, 0:00:00

날짜와 시간 형식 변환하기

다양한 형식으로 날짜와 시간을 문자열로 변환하는 방법을 보여줍니다.

from datetime import datetime
current_datetime = datetime.now()
formatted_date = current_datetime.strftime("%B %d, %Y")
print(formatted_date)  # 예: "February 27, 2024"

문자열로부터 날짜와 시간 파싱하기

문자열에서 날짜와 시간을 datetime 객체로 변환하는 방법입니다.

from datetime import datetime
date_string = "27 February, 2024"
datetime_object = datetime.strptime(date_string, "%d %B, %Y")
print(datetime_object)  # 2024-02-27 00:00:00

현재 시간대의 날짜와 시간 가져오기

시스템의 현재 시간대를 반영한 날짜와 시간을 가져오는 방법입니다.

from datetime import datetime
import pytz
timezone = pytz.timezone('Asia/Seoul')
localized_datetime = datetime.now(timezone)
print(localized_datetime)

현재 날짜와 시각 가져오기 및 출력하기

현재 날짜와 시각을 "yyyy-mm-dd HH:MM:ss" 형식으로 출력합니다.

from datetime import datetime

# 현재 날짜와 시각을 yyyy-mm-dd HH:MM:ss 형식으로 출력
current_datetime = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
print(current_datetime)  # 2024-02-27 00:53:38

datetime과 timedelta를 함께 사용

날짜와 시간 더하기 및 빼기

timedelta를 사용하여 날짜에 일, 시간, 분, 초를 더하거나 빼는 방법입니다.

from datetime import datetime, timedelta
current_datetime = datetime.now()
one_week_later = current_datetime + timedelta(days=7)
print(one_week_later)  # 현재로부터 일주일 후

 

 

 

출처: wikidocs

 

 

지금까지 배웠던 내용을 간단하게 실습해봅시다.

https://www.mycompiler.io/ko/new/python

 

새 Python 프로그램 만들기 - 마이컴파일러 - myCompiler

실행 코드 코드 저장 기존 코드를 유지하시겠습니까? 에디터에 코드가 있는 동안 언어를 전환하려고 합니다. 이를 유지하려면 “기존 코드 유지”를 선택합니다. 예제로 바꾸려면 “예제로 바

www.mycompiler.io

 

위 사이트에서는 별도의 파이썬프로그램 설치 없이도 파이썬 코드를 작성하고 실행시켜 볼 수 있습니다.

 

오늘 배운 내용으로 여러분이 마음껏 실습해보세요

 

 

실습 예시)

반응형

'[문법] 파이썬(Python)' 카테고리의 다른 글

[고급] 10강. 객체지향 - 클래스와 인스턴스  (2) 2025.01.06
[중급] 9강. 파일  (0) 2025.01.06
[기초] 7강. 자료형  (1) 2025.01.06
[기초] 6강. lambda 함수  (0) 2025.01.06
[기초] 5강. 함수  (0) 2024.09.18