νμ΄μ¬μμ μ€λ₯λ₯Ό λ°μμν€λ λ°©λ²μλ μ¬λ¬ κ°μ§κ° μμ§λ§,
κ°μ₯ μμ£Ό μ¬μ©λλ κ²μ΄ assert
μ raise
μ
λλ€.
λμ λΉμ·ν΄ 보μ΄μ§λ§ μ©λμ λμ λ°©μμ΄ λ€λ¦
λλ€.
μ΄ κΈμμλ assert
μ raise
μ μ°¨μ΄, μν©λ³ μ¬μ©λ², κ·Έλ¦¬κ³ μ€μ μμ λ₯Ό ν΅ν΄ κ°λ
μ μ 리ν©λλ€.
assert 쑰건, "μλ¬ λ©μμ§"
AssertionError
λ₯Ό λ°μμν΅λλ€.x = 10
assert x > 0, "xλ μμμ¬μΌ ν©λλ€" # β
ν΅κ³Ό
assert x < 0, "xλ μμμ¬μΌ ν©λλ€" # β AssertionError: xλ μμμ¬μΌ ν©λλ€
python -O
(μ΅ν°λ§μ΄μ¦ λͺ¨λ) λ‘ μ€ννλ©΄ assertκ° λ¬΄μλ©λλ€.raise μμΈ("μλ¬ λ©μμ§")
ValueError
, TypeError
, μ¬μ©μ μ μ μμΈ λ±)κ³Ό ν¨κ» μ¬μ© κ°λ₯.x = -5
if x < 0:
raise ValueError("xλ μμμΌ μ μμ΅λλ€") # β ValueError: xλ μμμΌ μ μμ΅λλ€
try
-except
μ ν¨κ» μ¬μ© κ°λ₯.κ΅¬λΆ | assert | raise |
---|---|---|
λͺ©μ | λλ²κΉ μ© μ‘°κ±΄ κ²μ¬ | λͺ μμ μΌλ‘ μμΈ λ°μ |
μμΈ νμ | νμ AssertionError | λ€μν μμΈ(ValueError , TypeError , μ¬μ©μ μ μ μμΈ) |
μ€ν νκ²½ | μ΅μ ν λͺ¨λ(-O )μμ λΉνμ±νλ¨ | νμ μ€νλ¨ |
μ¬μ© μκΈ° | λλ²κΉ , ν μ€νΈ | νλ‘λμ μ½λ, μμΈ μ²λ¦¬ λ‘μ§ |
λ κ°λ μ μνΈ λ³΄μμ μΌλ‘ μ¬μ©ν μ μμ΅λλ€.
assert
λ‘ λΉ λ₯Έ κ²μ¦raise
λ‘ λͺ
μμ μμΈ μ²λ¦¬def process_value(x):
assert isinstance(x, int), "xλ int νμ
μ΄μ΄μΌ ν©λλ€" # λλ²κΉ
μ©
if x < 0:
raise ValueError("xλ μμμΌ μ μμ΅λλ€") # νλ‘λμ
μ©
return x * 2
print(process_value(5)) # β
10
print(process_value(-3)) # β ValueError
μμ λ°°μ΄ isinstance
λ₯Ό νμ©νλ©΄ νμ
κ²μ¦μ΄ λ λͺ
νν©λλ€.
def greet(name):
assert isinstance(name, str), "nameμ λ¬Έμμ΄μ΄μ΄μΌ ν©λλ€" # λλ²κΉ
μμλ§ μ²΄ν¬
return f"Hello, {name}!"
assert
λ₯Ό μ΄μ©ν΄ eval(repr(obj)) == obj
κ΄κ³λ₯Ό νμΈν©λλ€.
a = '\x07'
b = eval(repr(a))
assert a == b # β
True β repr κ²°κ³Όλ‘ λ³΅μ κ°λ₯
assert
λ μ΄ κ΄κ³κ° νμ μ°ΈμΈμ§ νμΈνλ λλ²κΉ
μμ μ₯μΉ μν μ ν©λλ€.class CustomError(Exception):
pass
def check_value(x):
if x != 42:
raise CustomError("μ λ΅μ 42μ¬μΌ ν©λλ€!")
check_value(10) # β CustomError λ°μ
β
assert
β λλ²κΉ
μ©μΌλ‘ 쑰건μ νμΈ, μ€ν¨ μ AssertionError
λ°μ
β νλ‘λμ
μμλ λΉνμ±νλ μ μμΌλ μ£Όμ
β
raise
β λͺ
μμ μΌλ‘ μμΈ λ°μ, λ€μν μμΈ νμ
μ¬μ© κ°λ₯
β μ΄μ νκ²½μμλ νμ μλ β μμΈ μ²λ¦¬μ ν΅μ¬