1์ฃผ์ฐจ ๊ธ์์ผ
- ์์ธ์ฒ๋ฆฌ
- ํ์ผ ์ ์ถ๋ ฅ
์ค๋ฅ(์ํ๋ค)
์ฌ์ฉ์๊ฐ ํ๋ก๊ทธ๋จ์ ์๋ชป ์ฌ์ฉํ์ฌ ์ค๋ฅ๊ฐ ๋ฐ์ํ ๋ ํ๋ก๊ทธ๋จ์ ์ฃฝ์ด์ง ์๊ณ ์์ธ(Exception)๋ฅผ ๋ฐ์์ํจ๋ค. ํ์ด์ฌ์์ ์์ธ์ฒ๋ฆฌ๋ฅผ ํ๋ ค๋ฉด try
/ except
๊ตฌ๋ฌธ์ ์ด์ฉํ๋ค.
except
์ค๋ฅ๊ฐ ๋ฐ์ํ์ ๋ ์ค๋ฅ ๋ฉ์ธ์ง ๋์ ์คํ๋ ์ฝ๋๋ฅผ ๋ฃ๋๋ค.
raise
์๋์ ์ผ๋ก ์ค๋ฅ๋ฅผ ๋ฐ์์ํจ๋ค. ์๋ชป๋ ์
๋ ฅ์ด ๋ค์ด์ค๋ ๋ฑ ํ๋ก๊ทธ๋จ์ ๊ณ์ ์คํํ ์ด์ ๊ฐ ์๋ ์ํฉ์์ ๋ฐ๋ณต์ ์ค๋จํ๊ณ ์๋ก ์
๋ ฅ์ ๋ฐ๊ธฐ ์ํด ์ฐ๊ธฐ๋ ํ๋ค.
try:
n1, n2 = map(int,input().split())
print(n1/n2)
# n2๊ฐ 0์ผ ๊ฒฝ์ฐ ZeroDivisionError๊ฐ ๋ฐ์ํด ํ๋ก๊ทธ๋จ์ด ์ฃฝ์ด์ผ ํ์ง๋ง
except ZeroDivisionError: # ํน์ ์ค๋ฅ๋ฅผ ์ง์ ํ ์๋ ์๋ค.
print("you can't divide by 0.")
except: # ๋ฐ๋ก ์ง์ ํ์ง ์์ ๋ชจ๋ ์ค๋ฅ์ ๋ํด ๋์ํ๋ค.
print("an error occured.")
# try/except๋ฅผ ์ฌ์ฉํ๋ฉด ํ๋ก๊ทธ๋จ์ด ์ ์ฃฝ๊ณ except ๋ด์ ๋ฌธ์ฅ์ ์คํํ๋ค.
>>> 10 0
you can't divide by 0.
>>> a b
an error occured.
assert
๋ฌธ์ ์ฌ์ฉ์๋ฅผ ์ํด์๋ณด๋ค๋ ํ๋ก๊ทธ๋๋จธ๊ฐ ์์ ์ด ์ง ์ฝ๋๊ฐ ์๋๋๋ก ๋์๊ฐ๋์ง ๊ฒ์ฆํ๋ ๋ฐ ์ฐ์ธ๋ค.def func(var):
# blabla
return res
assert func('abc') == 3 # 3์ func('abc')๋ฅผ ๋๋ ธ์ ๋ ๋์์ผ ํ๋ ๊ฒฐ๊ณผ
์คํ ๊ฒฐ๊ณผ๊ฐ ์๋(์์ ์ฝ๋์์๋ 3)์ ๊ฐ์ผ๋ฉด ์๋ฌด ์ผ๋ ์ผ์ด๋์ง ์๊ณ , ๋ค๋ฅด๋ฉด AssertionError๊ฐ ๋ฐ์ํ๋ค.
ํ์ผ์ ๊ธฐ๋ณธ์ ์ผ๋ก text ํ์ผ๊ณผ binary ํ์ผ ๋ ๊ฐ์ง๋ก ๋ถ๋ฅํ ์ ์๋ค. ๋ฉ๋ชจ์ฅ์ผ๋ก ์ด ์ ์์ผ๋ฉด ํ ์คํธ ํ์ผ์ด๊ณ , ์ด์์ ๋ ๊นจ์ง๋ฉด ๋ฐ์ด๋๋ฆฌ ํ์ผ์ด๋ค.
open
, close
๋ฅผ ์ฌ์ฉํด์ ํ์ผ์ ์ด๊ณ > ์ฒ๋ฆฌํ ๊ฑฐ ๋ค ํ๊ณ > ํ์ผ์ ๋ซ๋๋ค.with
๋ฌธ์ผ๋ก ํ์ผ์ ๋ถ๋ฌ์ฌ ์๋ ์๋ค. ๊ทธ๋ฌ๋ฉด ํ์ผ ์ด๊ณ ๋ซ๊ธฐ๊ฐ ์๋์ผ๋ก ๋๋ค.r(๋ฎ์ด์ฐ๊ธฐ)
,w(์ฝ๊ธฐ ์ ์ฉ)
,a(์ด์ด์ ์ฐ๊ธฐ)
3๊ฐ์ง ๋ชจ๋๊ฐ ์๋ค.file = open('myText.txt','a') # ํ์ผ ์ด๊ธฐ
# blabla
file.close() # ํ์ผ ๋ซ๊ธฐ
with open('myText.txt','a') as file: # ํ์ผ ์ด๊ธฐ
# blabla
# with๋ฌธ์ ๋์ฌ ๋ ์์์ ํ์ผ๋ค ๋ซ์์ค๋ค.
pickle
์ ํ์ด์ฌ์ ํนํ๋ binary ํ์ผ์ด๋ค. ํ์ฅ์๋ .pickle
.logging
๋ชจ๋์ ์ฌ์ฉํด์ ๋ ๋ฒจ๋ณ๋ก ๋ก๊ทธ ๋ฉ์ธ์ง๋ฅผ ๋จ๊ธธ ์ ์๋ค.์ค์ ๊ฐ์์ ๋ง์คํฐ ์ธ์ ์์ ๋ค์ ์ด์ผ๊ธฐ๋ฅผ ๋ณต์ตํ๊ณ ์ ๋ฒ ๊ณผ์ ์๋ morsecode์ ๋ํ ์ด์ผ๊ธฐ๋ฅผ ๋๋ด๋ค. ์ด์ ํผ์ด ์ธ์ ์์ ์ ๊ทํํ์ ์ด์ผ๊ธฐ๋ฅผ ํ๋๋ฐ ๊ฐ์์์๋ ์ ๊ทํํ์ ์ด์ผ๊ธฐ๊ฐ ๋์์ ๋ฐ๊ฐ์ ๋ค.