λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

파이썬15

Asyncio - 비동기 ν”„λ‘œκ·Έλž˜λ° μ£Όμš” κ°œλ…νŒŒμ΄μ¬μ˜ asyncio λͺ¨λ“ˆμ€ 비동기 I/O, 이벀트 루프, coroutines 및 νƒœμŠ€ν¬(task) 관리 등을 톡해 비동기 ν”„λ‘œκ·Έλž˜λ°μ„ μ§€μ›ν•˜λŠ” ν‘œμ€€ λΌμ΄λΈŒλŸ¬λ¦¬μž…λ‹ˆλ‹€. asyncioλ₯Ό μ‚¬μš©ν•˜λ©΄ λ„€νŠΈμ›Œν¬ 및 μ›Ή μ†ŒμΌ“, λ°μ΄ν„°λ² μ΄μŠ€, 파일 I/O λ“±μ˜ μž‘μ—…μ„ 효율적으둜 μ²˜λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€.이벀트 루프 (Event Loop):이벀트 λ£¨ν”„λŠ” 코루틴과 μ½œλ°±μ„ κ΄€λ¦¬ν•˜κ³ , I/O μž‘μ—…μ΄ μ™„λ£Œλ  λ•ŒκΉŒμ§€ κΈ°λ‹€λ¦¬λŠ” 역할을 ν•©λ‹ˆλ‹€.asyncio.run() ν•¨μˆ˜λ₯Ό 톡해 이벀트 루프λ₯Ό μ‹œμž‘ν•  수 μžˆμŠ΅λ‹ˆλ‹€.코루틴 (Coroutine):async def둜 μ •μ˜λœ ν•¨μˆ˜μž…λ‹ˆλ‹€.await ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ λ‹€λ₯Έ μ½”λ£¨ν‹΄μ΄λ‚˜ 비동기 μž‘μ—…μ„ κΈ°λ‹€λ¦½λ‹ˆλ‹€.νƒœμŠ€ν¬ (Task):코루틴을 이벀트 λ£¨ν”„μ—μ„œ μ‹€ν–‰ν•  수 μžˆλŠ” λ‹¨μœ„λ‘œ λ³€ν™˜ν•©λ‹ˆλ‹€... 2024. 6. 23.
코루틴 μ½”λ£¨ν‹΄μ˜ κΈ°λ³Έ κ°œλ…νŒŒμ΄μ¬μ˜ 코루틴(coroutine)은 비동기 ν”„λ‘œκ·Έλž˜λ°μ„ κ΅¬ν˜„ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” κΈ°λŠ₯μž…λ‹ˆλ‹€. 코루틴은 ν•¨μˆ˜μ™€ μœ μ‚¬ν•˜μ§€λ§Œ, μ‹€ν–‰ 쀑에 μΌμ‹œ μ€‘μ§€ν•˜κ³  λ‚˜μ€‘μ— λ‹€μ‹œ μ‹œμž‘ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해 λ™μ‹œμ„±μ„ κ΄€λ¦¬ν•˜κ³  I/O μž‘μ—…μ„ λΉ„λ™κΈ°λ‘œ μ²˜λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 파이썬의 코루틴은 async 및 await ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ μ •μ˜ν•˜κ³  μ œμ–΄ν•©λ‹ˆλ‹€.μ •μ˜: 코루틴 ν•¨μˆ˜λŠ” async def ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ μ •μ˜λ©λ‹ˆλ‹€.호좜: 코루틴 ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜λ©΄ μ‹€ν–‰λ˜μ§€ μ•Šκ³  코루틴 객체λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.μΌμ‹œ 쀑지와 재개: 코루틴 λ‚΄λΆ€μ—μ„œ await ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ λ‹€λ₯Έ 코루틴을 ν˜ΈμΆœν•˜κ±°λ‚˜ 비동기 μž‘μ—…μ΄ μ™„λ£Œλ  λ•ŒκΉŒμ§€ κΈ°λ‹€λ¦½λ‹ˆλ‹€. μ΄λ•Œ 코루틴은 μΌμ‹œ μ€‘μ§€λ˜λ©°, ν•΄λ‹Ή μž‘μ—…μ΄ μ™„λ£Œλ˜λ©΄ λ‹€μ‹œ 싀행을 μž¬κ°œν•©λ‹ˆλ‹€.  μ½”λ£¨ν‹΄μ˜ μ˜ˆμ œλ‹€.. 2024. 6. 23.
파이썬 νŒ¨ν‚Ή(packing)κ³Ό μ–ΈνŒ¨ν‚Ή(unpacking)의 λͺ¨λ“  것 였늘 μ†Œκ°œν•˜λŠ” νŒ¨ν‚Ήκ³Ό μ–ΈνŒ¨ν‚Ήμ€ λ°μ΄ν„°λ³΄λ‹€λŠ” ν•¨μˆ˜ 호좜의 인자(Arguments) μ€‘μ‹¬μœΌλ‘œ μ„€λͺ…ν•©λ‹ˆλ‹€. νŒ¨ν‚Ή(Packing) printν•¨μˆ˜λŠ” 좜λ ₯ν•˜κ³ μž ν•˜λŠ” μΈμžκ°€ λͺ‡ κ°œλ“  간에 μƒκ΄€ν•˜μ§€ μ•Šκ³  좜λ ₯ν•΄ μ€λ‹ˆλ‹€. print("Hello") print("He", "llo") print("He", "ll", "o") # Hello # Hello # Hello ν•¨μˆ˜κ°€ 받을 인자의 개수λ₯Ό 정해놓지 μ•Šμ•˜μ„ λ•Œ(κ°€λ³€ 인자), μž…λ ₯받은 μΈμžλ“€μ„ μ–΄λ–»κ²Œ 관리해야 ν• κΉŒμš”? λ°”λ‘œ packingμ΄λΌλŠ” κ°œλ…μœΌλ‘œ κ΄€λ¦¬ν•˜μ‹œλ©΄ λ©λ‹ˆλ‹€. νŒ¨ν‚Ήμ€ 인자둜 받은 μ—¬λŸ¬ 개의 값을 ν•˜λ‚˜μ˜ 객체둜 ν•©μ³μ„œ 받을 수 μžˆλ„λ‘ ν•©λ‹ˆλ‹€. κ°€λ³€μΈμž νŒ¨ν‚Ήμ€ *ν•œ 개λ₯Ό λ§€κ°œλ³€μˆ˜ μ•žμ— λΆ™μž„μœΌλ‘œ μ‚¬μš©ν•©λ‹ˆλ‹€. def func(*args): print(args) pri.. 2023. 12. 17.
파이썬 map, filter ν•¨μˆ˜(with. iterator) iterator(반볡자) νŒŒμ΄μ¬μ—μ„œ iterator(반볡자)λŠ” 순회 κ°€λŠ₯ν•œ 객체λ₯Ό λ‚˜νƒ€λ‚΄λŠ” κ°œλ…μž…λ‹ˆλ‹€. IteratorλŠ” __iter__와 __next__ λ©”μ„œλ“œλ₯Ό κ΅¬ν˜„ν•œ 객체둜, __iter__λŠ” 자기 μžμ‹ μ„ λ°˜ν™˜ν•˜κ³ , __next__λŠ” λ‹€μŒ 값을 λ°˜ν™˜ν•©λ‹ˆλ‹€. μ΄λ•Œ, 더 이상 λ°˜ν™˜ν•  값이 없을 λ•Œ StopIteration μ˜ˆμ™Έλ₯Ό λ°œμƒμ‹œμΌœ 순회λ₯Ό μ’…λ£Œν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, κ°„λ‹¨ν•œ iteratorλ₯Ό κ΅¬ν˜„ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€ class MyIterator: def __init__(self, start, end): self.start = start self.end = end def __iter__(self): return self def __next__(self): if self.start >= self.end: rai.. 2023. 12. 17.
파이썬 리슀트 μ»΄ν”„λ¦¬ν—¨μ…˜, λ”•μ…”λ„ˆλ¦¬ μ»΄ν”„λ¦¬ν—¨μ…˜μ˜ λͺ¨λ“  것 리슀트 μ»΄ν”„λ¦¬ν—¨μ…˜(List Comprehension) 파이썬 리슀트 μ»΄ν”„λ¦¬ν—¨μ…˜μ€ κ°„κ²°ν•˜κ²Œ 리슀트λ₯Ό μƒμ„±ν•˜λŠ” 방법 쀑 ν•˜λ‚˜λ‘œ, 반볡문과 쑰건문을 μ‚¬μš©ν•˜μ—¬ 리슀트λ₯Ό λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€. 리슀트 μ»΄ν”„λ¦¬ν—¨μ…˜μ€ μ½”λ“œλ₯Ό κ°„κ²°ν•˜κ²Œ μœ μ§€ν•˜λ©΄μ„œλ„ κ°•λ ₯ν•œ κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€. 일반적인 리슀트 μ»΄ν”„λ¦¬ν—¨μ…˜μ˜ κ΅¬μ‘°λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€: [ν‘œν˜„μ‹ for ν•­λͺ© in iterable if 쑰건] - ν‘œν˜„μ‹: 각 ν•­λͺ©μ— λŒ€ν•œ 계산식 λ˜λŠ” ν‘œν˜„μ‹μ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€. - ν•­λͺ©: 반볡 κ°€λŠ₯ν•œ(iterable) κ°μ²΄μ—μ„œ κ°€μ Έμ˜¨ κ°’μž…λ‹ˆλ‹€. - iterable: 반볡 κ°€λŠ₯ν•œ 객체(리슀트, νŠœν”Œ, λ¬Έμžμ—΄ λ“±)λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€. - 쑰건: μ„ νƒμ μœΌλ‘œ 포함할 쑰건을 μ§€μ •ν•©λ‹ˆλ‹€. 쑰건은 ν•„μš”μ— 따라 μƒλž΅ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, 0λΆ€ν„° 9κΉŒμ§€μ˜ 숫자 μ€‘μ—μ„œ 짝수.. 2023. 12. 12.
파이썬 μŠ€νŽ˜μ…œ λ©”μ„œλ“œμ˜ λͺ¨λ“  것(__init__, __str__, __len__ λ“±) νŒŒμ΄μ¬μ—μ„œ μŠ€νŽ˜μ…œ λ©”μ„œλ“œ(λ˜λŠ” 맀직 λ©”μ„œλ“œ)λŠ” 이쀑 μ–Έλ”μŠ€μ½”μ–΄λ‘œ λ‘˜λŸ¬μ‹ΈμΈ 이름을 가지며, 객체의 νŠΉμ • λ™μž‘μ„ μ •μ˜ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€. μ΄λŸ¬ν•œ λ©”μ„œλ“œλ“€μ€ ν΄λž˜μŠ€μ— μ •μ˜λ˜λ©°, λ‚΄μž₯ ν•¨μˆ˜λ‚˜ μ—°μ‚°μž λ“±κ³Ό μƒν˜Έ μž‘μš©ν•˜λ„λ‘ μ„€κ³„λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. λ‹€μŒμ€ λͺ‡ 가지 μ£Όμš” μŠ€νŽ˜μ…œ λ©”μ„œλ“œμ˜ μ’…λ₯˜μ™€ μ˜ˆμ‹œμž…λ‹ˆλ‹€. 1. __init__(self, ...): 객체가 생성될 λ•Œ ν˜ΈμΆœλ˜λŠ” λ©”μ„œλ“œλ‘œ, μ΄ˆκΈ°ν™”λ₯Ό λ‹΄λ‹Ήν•©λ‹ˆλ‹€. class MyClass: def __init__(self, x): self.x = x obj = MyClass(10) 2. __str__(self), __repr__(self): 객체λ₯Ό λ¬Έμžμ—΄λ‘œ ν‘œν˜„ν•˜λŠ”λ° μ‚¬μš©λ˜λŠ” λ©”μ„œλ“œμž…λ‹ˆλ‹€. class MyClass: def __init__(self, x): self.x = x d.. 2023. 12. 11.