module
module Overview
๋ชจ๋(module) : ๊ฐ์ข
๋ณ์, ํจ์, ํด๋์ค๋ฅผ ๋ด๊ณ ์๋ ํ์ผ ํจํค์ง(Package) : ์ฌ๋ฌ ๋ชจ๋์ ๋ฌถ์ด ๋์ ๊ฒ, ๋ชจ๋์ namespace๋ฅผ ์ ๊ณต ๋ผ์ด๋ธ๋ฌ๋ฆฌ(Python Standard Library, PSL) : ๋ชจ๋, ํจํค์ง, ๋ด์ฅ ํจ์๋ฅผ ๋ฌถ์ด์ ๋งํ๋ค
ํ์ค ๋ชจ๋ : ํ์ด์ฌ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ด์ฅ๋์ด ์๋ ๋ชจ๋
์ธ๋ถ ๋ชจ๋ : ๋ค๋ฅธ ์ฌ๋๋ค์ด ๋ง๋ค์ด ๊ณต๊ฐํ ๋ชจ๋
import ์ฌ์ฉ๋ฒ : from, as
from ๊ตฌ๋ฌธ : from ๋ชจ๋ ์ด๋ฆ import ๊ฐ์ ธ์ค๊ณ ์ถ์ ๋ณ์ ๋๋ ํจ์
Copy from ๋ชจ๋์ด๋ฆ import ๋ชจ๋ํจ์
Copy from math import sin, cos, tan, floor, ceil
from math import * # (๋ชจ๋ ๊ฐ์ ธ์ค๊ธฐ)
from math import sin, cos, tan, floor, ceil
print(math.sin(1))
as ๊ตฌ๋ฌธ : ๋ชจ๋์ ๊ฐ์ ธ์ฌ๋ ์ด๋ฆ ์ถ๋์ ๋ฐฉ์งํ๊ธฐ ์ํด์ ์ฌ์ฉ
Copy import math as m
print(m.sin(1))
if name == "main" ์ ์๋ฏธ
: ํ๋ก๊ทธ๋จ์ ์์์ ์ผ ๋๋ง ์ฝ๋๋ฅผ ์คํํ๋ค๋ ์๋ฏธ๋ก, name ๋ณ์์ ๊ฐ์ด main ์ธ์ง ํ์ธํ๋ ์ฝ๋๋ ํ์ฌ ์คํฌ๋ฆฝํธ ํ์ผ์ด ํ๋ก๊ทธ๋จ์ ์์์ ์ด ๋ง๋์ง ํ๋จํ๋ ์์
์ฆ, ์ง์ ์ด ํ์ผ์ ์คํํ์ ๋๋ name == "main "์ด ์ฐธ์ด ๋์ด if๋ฌธ ๋ค์ ๋ฌธ์ฅ์ด ์ํ๋๋ค. ๋ฐ๋๋ก ๋ํํ ์ธํฐํ๋ฆฌํฐ๋ ๋ค๋ฅธ ํ์ผ์์ ์ด ๋ชจ๋์ ๋ถ๋ฌ์ ์ฌ์ฉํ ๋๋ name == "main "์ด ๊ฑฐ์ง์ด ๋์ด if๋ฌธ ๋ค์ ๋ฌธ์ฅ์ด ์ํ๋์ง ์๋๋ค.
Copy # ์ง์ ์คํํ ๋
# module1.py
def add(a, b):
return a+b
def sub(a, b):
return a-b
if __name__ == "__main__":
print(add(2, 10)) # 12
print(sub(10, 2)) # 8
Copy # ๋ํํ ์ธํฐํ๋ฆฌํฐ
import module1
print(module1.add(4,10)) # 14
print(module1.sub(10,4)) # 6
math
: ์ํ๊ณผ ๊ด๋ จ๋ ๊ธฐ๋ฅ
math.sin(), math.cos(), math.tan(), math.log(x.[base])
math.round() - ๋ฐ์ฌ๋ฆผ, ๋จ ํ์์ธ ๊ฒ๋ค์ ์ฌ๋ฆผ์ด ๋๊ณ , ์ง์๋ ๋ด๋ฆผ์ด ๋๋ค.
Copy import math
print(math.sin(1))
random(randint, choice, shuffle)
: ๋์(๊ท์น์ด ์๋ ์์์ ์)๋ฅผ ๋ฐ์์ํค๋ ๋ชจ๋
random : 0.0์์ 1.0 ์ฌ์ด์ ์ค์ ์ค์์ ๋์ ๊ฐ์ ๋๋ ค์ค๋ค
randint : ์ ์๋ ์ ์ ์ค์์ ๋์ ๊ฐ์ ๋๋ ค์ค๋ค
choice : ์
๋ ฅ์ผ๋ก ๋ฐ์ ๋ฆฌ์คํธ์์ ๋ฌด์์๋ก ํ๋๋ฅผ ์ ํํ์ฌ ๋๋ ค์ค๋ค
shuffle : ๋ฆฌ์คํธ์ ํญ๋ชฉ์ ๋ฌด์์๋ก ์๊ณ ์ถ์ ๋ ์ฌ์ฉ
uniform(min, max): ์ง์ ํ ๋ฒ์ ์ฌ์ด์ float๋ฅผ ๋ฆฌํด
randrange(): ์ง์ ํ ๋ฒ์์ int๋ฅผ ๋ฆฌํดํฉ๋๋ค.
randrange(max): 0๋ถํฐ max ์ฌ์ด์ ๊ฐ์ ๋ฆฌํดํฉ๋๋ค.
randrange(min, max): min๋ถํฐ max ์ฌ์ด์ ๊ฐ์ ๋ฆฌํดํฉ๋๋ค.
sample(list, k=<์ซ์>): ๋ฆฌ์คํธ์ ์์ ์ค์ k๊ฐ๋ฅผ ๋ฝ์ต๋๋ค.
```python
import random
print("- random: ", random.random()) print("- randinit: ", random.randint(1, 10)) print("- uniform: ", random.uniform(10, 20)) print("- randrange: ", random.randrange(10)) print("- choice: ", random.choice([1, 2, 3, 4, 5])) print("- shuffle: ", random.shuffle([1, 2, 3, 4, 5])) print("- sample: ", random.sample([1, 2, 3, 4, 5], k=2))
def randompop(data): num = random.randint(0, len(data)-1) return data.pop(num) if name == "_main ": data = [1, 2, 3, 4, 5] while data: print(random_pop(data))
Copy ### sys
: ์์คํ
๊ณผ ๊ด๋ จ๋ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๋ ๋ชจ๋
```python
import sys
# ๋ช
๋ น ํ์์ ์ธ์ ์ ๋ฌํ๊ธฐ : sys.argv
print(sys.argv)
# ์์ ์ด ๋ง๋ ๋ชจ๋ ๋ถ๋ฌ์ ์ฌ์ฉํ๊ธฐ : - sys.path
sys.path
# ๊ฒฝ๋ก์ ์ด๋ฆ์ ์ถ๊ฐ : sys.path.append("")
sys.path.append("c:/user/python")
# ์ปดํจํฐ ํ๊ฒฝ๊ณผ ๊ด๋ จ๋ ์ ๋ณด๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
print("getwindowsversion:()", sys.getwindowsversion())
print("copyright:", sys.copyright)
print("version:", sys.version)
# ํ๋ก๊ทธ๋จ์ ๊ฐ์ ๋ก ์ข
๋ฃํฉ๋๋ค.
sys.exit()
os
: ํ๊ฒฝ ๋ณ์๋ ๋๋ ํฐ๋ฆฌ, ํ์ผ ๋ฑ์ OS ์์์ ์ ์ดํ ์ ์๊ฒ ํด์ฃผ๋ ๋ชจ๋
Copy import os
# ๊ธฐ๋ณธ ์ ๋ณด๋ฅผ ๋ช ๊ฐ ์ถ๋ ฅํด ๋ด
์๋ค.
print("ํ์ฌ ์ด์์ฒด์ :", os.name)
print("ํ์ฌ ํด๋:", os.getcwd()) # ๋๋ ํฐ๋ฆฌ ์์น ๋๋ ค๋ฐ๊ธฐ
print("ํ์ฌ ํด๋ ๋ด๋ถ์ ์์:", os.listdir())
# ๋ด ์์คํ
์ ํ๊ฒฝ ๋ณ์๊ฐ์ ์๊ณ ์ถ์ ๋ - os.environ
# ๋๋ ํฐ๋ฆฌ ์์น ๋ณ๊ฒฝํ๊ธฐ - os.chdir
# ๋๋ ํฐ๋ฆฌ ์์น ๋๋ ค๋ฐ๊ธฐ - os.getcwd
# ์์คํ
๋ช
๋ น์ด ํธ์ถํ๊ธฐ - os.system
# ํด๋๋ฅผ ๋ง๋ค๊ณ ์ ๊ฑฐํฉ๋๋ค[ํด๋๊ฐ ๋น์ด์์ ๋๋ง ์ ๊ฑฐ ๊ฐ๋ฅ].
os.mkdir("hello") # ๋๋ ํฐ๋ฆฌ ์์ฑ
os.rmdir("hello") # ๋ฐ๋ ํฐ๋ฆฌ ์ญ์ , ๋จ ๋๋ ํฐ๋ฆฌ๊ฐ ๋น์ด์์ด์ผ ์ญ์ ๊ฐ ๊ฐ๋ฅํ๋ค
# ํ์ผ์ ์์ฑํ๊ณ + ํ์ผ ์ด๋ฆ์ ๋ณ๊ฒฝ : rename(๊ธฐ์กด ์ด๋ฆ, ๋ณ๊ฒฝํ ์ด๋ฆ)
with open("original.txt", "w") as file:
file.write("hello")
os.rename("original.txt", "new.txt")
# ํ์ผ์ ์ ๊ฑฐ : remove, unlink
os.remove("new.txt")
# os.unlink("new.txt")
# ์์คํ
๋ช
๋ น์ด ์คํ : dir
os.system("dir")
# ์คํํ ์์คํ
๋ช
๋ น์ด์ ๊ฒฐ๊ณผ๊ฐ ๋๋ ค ๋ฐ๊ธฐ : popen
f = os.popen("dir")
print(f.read())
datetime
: date(๋ ์ง), time(์๊ฐ) ๊ณผ ๊ด๋ จ๋ ๋ชจ๋
Copy import datetime
# ํ์ฌ ์๊ฐ์ ๊ตฌํ๊ณ ์ถ๋ ฅํ๊ธฐ
print("# ํ์ฌ ์๊ฐ ์ถ๋ ฅํ๊ธฐ")
now = datetime.datetime.now()
print(now.year, "๋
")
print(now.month, "์")
print(now.day, "์ผ")
print(now.hour, "์")
print(now.minute, "๋ถ")
print(now.second, "์ด")
print()
# ์๊ฐ ์ถ๋ ฅ ๋ฐฉ๋ฒ
print("# ์๊ฐ์ ํฌ๋งท์ ๋ง์ถฐ ์ถ๋ ฅํ๊ธฐ")
output_a = now.strftime("%Y.%m.%d %H:%M:%S")
output_b = "{}๋
{}์ {}์ผ {}์ {}๋ถ {}์ด".format(now.year,\
now.month,\
now.day,\
now.hour,\
now.minute,\
now.second)
output_c = now.strftime("%Y{} %m{} %d{} %H{} %M{} %S{}").format(*"๋
์์ผ์๋ถ์ด")
print(output_a)
print(output_b)
print(output_c)
print()
# ์๊ฐ ์ฒ๋ฆฌํ๊ธฐ
import datetime
now = datetime.datetime.now()
# ํน์ ์๊ฐ ์ดํ์ ์๊ฐ ๊ตฌํ๊ธฐ
print("# datetime.timedelta๋ก ์๊ฐ ๋ํ๊ธฐ")
after = now + datetime.timedelta(\
weeks=1,\
days=1,\
hours=1,\
minutes=1,\
seconds=1)
print(after.strftime("%Y{} %m{} %d{} %H{} %M{} %S{}").format(*"๋
์์ผ์๋ถ์ด"))
print()
# ํน์ ์๊ฐ ์์ ๊ต์ฒดํ๊ธฐ
print("# now.replace()๋ก 1๋
๋ํ๊ธฐ")
output = now.replace(year=(now.year + 1))
print(output.strftime("%Y{} %m{} %d{} %H{} %M{} %S{}").format(*"๋
์์ผ์๋ถ์ด"))
time
: ์๊ฐ๊ณผ ๊ด๋ จ๋ time ๋ชจ๋ ํจ์
time.time
: UTC(Universal Time Coordinated ํ์ ์ธ๊ณ ํ์ค์)๋ฅผ ์ฌ์ฉํ์ฌ ํ์ฌ ์๊ฐ์ ์ค์ ํํ๋ก ๋๋ ค์ฃผ๋ ํจ์์ด๋ค. 1970๋
1์ 1์ผ 0์ 0๋ถ 0์ด๋ฅผ ๊ธฐ์ค์ผ๋ก ์ง๋ ์๊ฐ์ ์ด ๋จ์๋ก ๋๋ ค์ค๋ค.
time.localtime
: time.time()์ด ๋๋ ค์ค ์ค์ ๊ฐ์ ์ฌ์ฉํด์ ์ฐ๋, ์, ์ผ, ์, ๋ถ, ์ด, ... ์ ํํ๋ก ๋ฐ๊พธ์ด ์ฃผ๋ ํจ์
Copy time.localtime(time.time())
time.asctime
:time.localtime์ ์ํด์ ๋ฐํ๋ ํํ ํํ์ ๊ฐ์ ์ธ์๋ก ๋ฐ์์ ๋ ์ง์ ์๊ฐ์ ์์๋ณด๊ธฐ ์ฌ์ด ํํ๋ก ๋๋ ค์ฃผ๋ ํจ์
Copy time.asctime(time.localtime(time.time()))
time.ctime
:ํญ์ ํ์ฌ ์๊ฐ๋ง์ ๋๋ ค์ค๋ค
time.strftime
:์๊ฐ์ ๊ด๊ณ๋ ๊ฒ์ ์ธ๋ฐํ๊ฒ ํํํ๋ ์ฌ๋ฌ ๊ฐ์ง ํฌ๋งท ์ฝ๋๋ฅผ ์ ๊ณต
Copy time.strftime('์ถ๋ ฅํ ํ์ ํฌ๋งท ์ฝ๋', time.localtime(time.time()))
time.sleep
:์ผ์ ํ ์๊ฐ ๊ฐ๊ฒฉ์ ๋๊ณ ๋ฃจํ๋ฅผ ์คํ
Copy import time
print("์ง๊ธ๋ถํฐ 5์ด ๋์ ์ ์งํฉ๋๋ค!")
time.sleep(5)
print("ํ๋ก๊ทธ๋จ์ ์ข
๋ฃํฉ๋๋ค")
calendor
: ๋ฌ๋ ฅ์ ๋ณผ ์ ์๊ฒ ํด์ฃผ๋ ๋ชจ๋
Copy print(calendar.calendar(2015))
calendar.prcal(2015)
calendar.prmonth(2015, 12)
calendar.weekday(2015, 12, 31) # 0 ~ 6, ์์์ผ์ 0, ํ์์ผ์ 1, ์์์ผ์ 2, ๋ชฉ์์ผ์ 3, ๊ธ์์ผ์ 4, ํ ์์ผ์ 5, ์ผ์์ผ์ 6
calendar.monthrange(2015,12) # 1์ผ์ด ๋ฌด์จ ์์ผ์ธ์ง์ ๊ทธ ๋ฌ์ด ๋ฉฐ์น ๊น์ง ์๋์ง๋ฅผ ํํ ํํ๋ก ๋๋ ค์ค๋ค
urllib
: URL์ ๋ค๋ฃจ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
Copy from urllib import request
# urlopen() ํจ์๋ก ๊ตฌ๊ธ์ ๋ฉ์ธ ํ์ด์ง๋ฅผ ์ฝ์ต๋๋ค.
target = request.urlopen("https://google.com")
output = target.read()
print(output)
pickle
:๊ฐ์ฒด์ ํํ๋ฅผ ๊ทธ๋๋ก ์ ์งํ๋ฉด์ ํ์ผ์ ์ ์ฅํ๊ณ ๋ถ๋ฌ์ฌ ์ ์๊ฒ ํ๋ ๋ชจ๋
shutil
: ํ์ผ์ ๋ณต์ฌํด ์ฃผ๋ ํ์ด์ฌ ๋ชจ๋
Copy import shutil
shutil.copy("src.txt", "dst.txt")
# ๋์ผํ ์ด๋ฆ์ด ์์ผ๋ฉด ๋ฎ์ด์ด๋ค
glob
: ๋๋ ํฐ๋ฆฌ์ ์๋ ํ์ผ๋ค์ ๋ฆฌ์คํธ๋ก ๋ง๋ค๊ธฐ
Copy import glob
glob.glob("c:/user/python*")
tempfile
:ํ์ผ์ ์์๋ก ๋ง๋ค์ด์ ์ฌ์ฉํ ๋
Copy import tempfile
filename = tempfile.mkstemp()
# ์ค๋ณต๋์ง ์๋ ์์ ํ์ผ์ ์ด๋ฆ์ ๋ฌด์์๋ก ๋ง๋ค์ด์ ๋๋ ค์ค๋ค
print(filename)
f = tempfile.TemporaryFile()
# ์์ ์ ์ฅ ๊ณต๊ฐ์ผ๋ก ์ฌ์ฉํ ํ์ผ ๊ฐ์ฒด๋ฅผ ๋๋ ค์ค๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฐ์ด๋๋ฆฌ ์ฐ๊ธฐ ๋ชจ๋(wb)
f.close() # ์ข
๋ฃ ํธ์ถ์ด ๋๋ฉด ํ์ผ ๊ฐ์ฒด๋ ์๋์ผ๋ก ์ฌ๋ผ์ง๋ค
webbrowser
: ์์ ์ ์์คํ
์์ ์ฌ์ฉํ๋ ๊ธฐ๋ณธ ์น ๋ธ๋ผ์ฐ์ ๋ฅผ ์๋์ผ๋ก ์คํํ๋ ๋ชจ๋