PYTHONL Telegram 4937
πŸ–₯ ΠŸΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ, Π½ΠΎ Ρ€Π΅Π΄ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΏΡ€ΠΈΡ‘ΠΌ: динамичСскоС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ мноТСством контСкст-ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· `contextlib.ExitStack`

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ *N* Ρ„Π°ΠΉΠ»ΠΎΠ², Π·Π°Ρ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ *M* Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ ΠΈΠ»ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΡƒΡ‡Ρƒ настроСк, Π° ΠΈΡ… количСство извСстно Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΎ врСмя выполнСния, Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ with … as …: Π½Π΅ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Ρ‘Ρ‚. ВмСсто Β«ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Ρ‹Β» Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… with Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ ExitStack:


from contextlib import ExitStack

filenames = ["a.log", "b.log", "c.log"]

with ExitStack() as stack:
files = [stack.enter_context(open(name)) for name in filenames]

# Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ вас список ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ
for f in files:
print(f.readline())
# здСсь ExitStack автоматичСски Π·Π°ΠΊΡ€ΠΎΠ΅Ρ‚ всС Ρ„Π°ΠΉΠ»Ρ‹, Π΄Π°ΠΆΠ΅ Ссли ΠΈΡ… Π±Ρ‹Π»ΠΎ 1000


ΠŸΠΎΡ‡Π΅ΠΌΡƒ это ΠΊΡ€ΡƒΡ‚ΠΎ

- УправляСт ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ числом контСкстов: добавляСтС ΠΈΡ… Π² Ρ†ΠΈΠΊΠ», условно, Ρ‡Π΅Ρ€Π΅Π· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-Ρ„Π°Π±Ρ€ΠΈΠΊΠΈ.
- Π“Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΉ rollback ΠΏΡ€ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΡ…: всё, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ Π² ExitStack, Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎ Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС.
- Π£ΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΡΠ»ΠΎΠΆΠ½ΡƒΡŽ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ: ΠΌΠΎΠΆΠ½ΠΎ динамичСски Β«ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΒ» Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ сСйчас (Ρ„Π°ΠΉΠ»Ρ‹, Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, сСтСвыС соСдинСния).

πŸ”§ Π“Π΄Π΅ пригодится

- ΠŸΠ°ΠΊΠ΅Ρ‚Π½Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ Π°Ρ€Ρ…ΠΈΠ²ΠΎΠ².
- ВСстовыС стСнды с ΠΊΡƒΡ‡Π΅ΠΉ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… рСсурсов.
- ΠŸΠ»Π°Π³ΠΈΠ½Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ собствСнныС контСкст-ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρ‹.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ «каскада ΠΈΠ· withΒ» β€” ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½Ρ‹ΠΉ ExitStack.

@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ‘18❀12πŸ”₯11



tgoop.com/pythonl/4937
Create:
Last Update:

πŸ–₯ ΠŸΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ, Π½ΠΎ Ρ€Π΅Π΄ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΏΡ€ΠΈΡ‘ΠΌ: динамичСскоС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ мноТСством контСкст-ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· `contextlib.ExitStack`

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ *N* Ρ„Π°ΠΉΠ»ΠΎΠ², Π·Π°Ρ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ *M* Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ ΠΈΠ»ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΡƒΡ‡Ρƒ настроСк, Π° ΠΈΡ… количСство извСстно Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΎ врСмя выполнСния, Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ with … as …: Π½Π΅ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Ρ‘Ρ‚. ВмСсто Β«ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Ρ‹Β» Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… with Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ ExitStack:


from contextlib import ExitStack

filenames = ["a.log", "b.log", "c.log"]

with ExitStack() as stack:
files = [stack.enter_context(open(name)) for name in filenames]

# Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ вас список ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ
for f in files:
print(f.readline())
# здСсь ExitStack автоматичСски Π·Π°ΠΊΡ€ΠΎΠ΅Ρ‚ всС Ρ„Π°ΠΉΠ»Ρ‹, Π΄Π°ΠΆΠ΅ Ссли ΠΈΡ… Π±Ρ‹Π»ΠΎ 1000


ΠŸΠΎΡ‡Π΅ΠΌΡƒ это ΠΊΡ€ΡƒΡ‚ΠΎ

- УправляСт ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ числом контСкстов: добавляСтС ΠΈΡ… Π² Ρ†ΠΈΠΊΠ», условно, Ρ‡Π΅Ρ€Π΅Π· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-Ρ„Π°Π±Ρ€ΠΈΠΊΠΈ.
- Π“Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΉ rollback ΠΏΡ€ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΡ…: всё, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ Π² ExitStack, Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎ Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС.
- Π£ΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΡΠ»ΠΎΠΆΠ½ΡƒΡŽ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ: ΠΌΠΎΠΆΠ½ΠΎ динамичСски Β«ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΒ» Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ сСйчас (Ρ„Π°ΠΉΠ»Ρ‹, Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, сСтСвыС соСдинСния).

πŸ”§ Π“Π΄Π΅ пригодится

- ΠŸΠ°ΠΊΠ΅Ρ‚Π½Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ Π°Ρ€Ρ…ΠΈΠ²ΠΎΠ².
- ВСстовыС стСнды с ΠΊΡƒΡ‡Π΅ΠΉ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… рСсурсов.
- ΠŸΠ»Π°Π³ΠΈΠ½Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ собствСнныС контСкст-ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρ‹.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ «каскада ΠΈΠ· withΒ» β€” ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½Ρ‹ΠΉ ExitStack.

@pythonl

BY Python/ django


Share with your friend now:
tgoop.com/pythonl/4937

View MORE
Open in Telegram


Telegram News

Date: |

How to Create a Private or Public Channel on Telegram? How to create a business channel on Telegram? (Tutorial) bank east asia october 20 kowloon With the sharp downturn in the crypto market, yelling has become a coping mechanism for many crypto traders. This screaming therapy became popular after the surge of Goblintown Ethereum NFTs at the end of May or early June. Here, holders made incoherent groaning sounds in late-night Twitter spaces. They also role-played as urine-loving Goblin creatures. Click β€œSave” ;
from us


Telegram Python/ django
FROM American