with EXPRESSION [as VARIABLE]:
BLOCK
close()
λ±κ³Ό κ°μ λ©μλλ₯Ό μ¬μ©νμ§λ§ μ¬κΈ°μλ μ¨μ λ¬Έμ μ μ΄ μμ close()
λ¬Έμ μ€νν μ μκ³ κ·Έλ κ² λλ©΄ μ΄ νμΌμ μμν λ«μ μκ° μκ² λ¨with
λ¬Έμ κ·Έ ꡬ문μ μ€ννμ λ μ€λ₯κ° λ°μνλ μνλ λ§μ§λ§μ close λ₯Ό ν΄μ£Όλλ‘ νλ κ².Quit()
λΌλκ° .Close()
μ κ°μ ν¨μλ₯Ό ν΅ν΄ μ§μ νμΌμ λ«μwith ~ as ~
λΌλ ꡬ문μ μ 곡close()
λ₯Ό νμ§ μμλ with ~ as ~
κ΅¬λ¬Έμ΄ λλλ©΄ μλμΌλ‘ κ°μ²΄λ₯Ό close νκ² ν΄μ€Tip! μΆκ° λ΄μ©
- μμμ νλνκ³ μ¬μ© ν λ°λ©ν΄μΌ νλ κ²½μ° μ£Όλ‘ μ¬μ©
- μμμ νλ
- μμμ μ¬μ©
- μμμ λ°λ©
- μλ₯Ό λ€μ΄ νμΌμ μ΄κ³ μ¬μ©νλ€λ©΄ λ€λ₯Έ νλ‘μΈμ€λ₯Ό μν΄ λ«κ³ λ°λ©ν΄μΌ ν¨
- λ°μ΄ν°λ² μ΄μ€ μΈμ μ μ»μ΄ μ¬μ©νλ€λ©΄ λ€λ₯Έ νλ‘μΈμ€λ₯Ό μν΄ λ°λ©ν΄μΌ ν¨
- μμμ νμ λμ΄ μκΈ° λλ¬Έμ μ μ ν νλκ³Ό λ°λ©ν΄μΌ ν¨
__enter__
μ __exit__
νΉμλ©μλλ₯Ό κ°μ§ κ°μ²΄μ with
λ¬Έμ μΈ μ μλ κ²with
λ¬Έ λ΄ ννμμ ν κ°μ²΄λ‘ νκ°λ¨__enter__
λ©μλκ° νΈμΆλκ³ λμΌλ‘ νΈμΆ κ²°κ³Όκ° λ³μμ ν λΉλλ κ²__exit__
λ©μλλ₯Ό νΈμΆνκ² λ¨__exit__
λ©μλλ νμΌμ λ«μ# μμ μ½λ
class Hello:
def __enter__(self):
# μ¬μ©ν μμμ κ°μ Έμ€κ±°λ μμ±
print('enter...')
return self # λ°νκ°μ΄ μμ΄μΌ VARIABLEμ λΈλ‘ λ΄μμ μ¬μ©ν μ μμ
def sayHello(self, name):
# μμμ μ¬μ©
print('hello ' + name)
def __exit__(self, exc_type, exc_val, exc_tb):
# λ§μ§λ§ μ²λ¦¬ (μμ λ°λ© λ±)
print('exit...')
with Hello() as h:
h.sayHello('hwaya')
h.sayHello('hwaya2828')
# κ²°κ³Ό
enter...
hello hwaya
hello hwaya2828
exit...
Tip! μΆκ° μμ
with open('textfile.txt', 'r') as file: contents = file.read() # μ ꡬ문과 λμΌν λ΄μ© file = open('textfile.txt', 'r') contents = file.read() file.close()
- λλ²μ§Έ μ½λλ₯Ό μ€ννλ€κ³ ν λ λ§μ½μ
content = file.read()
μμ μλ¬κ° λλ€λ©΄ fileμ λ«μ μ μμ
- κ·Έλ¬λ
with
λ¬Έμ μ¬μ©νλ©΄ μλ¬κ° λλλΌλ fileμ μλμΌλ‘ λ«μμ€
Tip! μΆκ° μμ
# μμ μ½λ class Withtest: # μ΄κΈ°ν λ©μλ μ μ def __init__(self): self.temp = "μ΄κΈ°ν λ©μλ" # κ°μ²΄κ° νΈμΆλ λ μλμΌλ‘ μ€ν def __enter__(self): print(self.temp) return self # λ°νκ°μ΄ μμ΄μΌ VARIABLEμ λΈλ‘λ΄μμ μ¬μ©ν μ μμ def printText(self): print("λ©μλ νΈμΆ ν μ€νΈ") # with ꡬ문 ν΅ν΄ κ°μ²΄κ° μ’ λ£λ λ μλμΌλ‘ μ€ν def __exit__(self, exc_type, exc_val, exc_tb): # μ’ λ£ κ΅¬λ¬Έ μ€μ (μΈμ μ μ’ λ£ λ±) print('with ν΅ν΄ μ’ λ£') # κ°μ²΄ μμ± λ° with ꡬ문 μ€ν if __name__ == "__main__": withclass = Withtest() with withclass as wc: wc.printText() # κ²°κ³Ό μ΄κΈ°ν λ©μλ λ©μλ νΈμΆ ν μ€νΈ with ν΅ν΄ μ’ λ£
- μ μ½λλ₯Ό νμΈν΄λ³΄λ©΄ μ€νλΆμμ
withclass
λΌλ ν΄λμ€ κ°μ²΄λ₯Ό μμ±νκ³ μλwith
λ¬Έμ ν΅ν΄printText( )
λ©μλλ₯Ό νΈμΆ
with
ꡬ문μ ν΅ν΄ μ€ννλ__enter__( )
λ©μλμ__exit__( )
λ©μλκ° μ€νλ κ²μ νμΈν μ μμ- μ°Έκ³ λ‘
__exit__( )
λ©μλμ 맀κ°λ³μμΈexc_type
,exc_val
,exc_tb
λwith
λ¬Έμ λΉ μ Έλμ€κΈ° μ΄μ μ μμΈκ° λ°μνμ λλ₯Ό λνλ΄λ μ 보- μμ κ°μ μ½λ© λ°©μμ Python Context Managers λ°©μ μ€μ νλ