What the f*ck Python! 😱

Π˜Π·ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Python с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ нСстандартного повСдСния ΠΈ "магичСского" повСдСния.

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‹: [English Original](https://github.com/satwikkansal/wtfpython) [Chinese δΈ­ζ–‡](https://github.com/robertparley/wtfpython-cn) | [Vietnamese TiαΊΏng Việt](https://github.com/vuduclyunitn/wtfptyhon-vi) | [Spanish EspaΓ±ol](https://web.archive.org/web/20220511161045/https://github.com/JoseDeFreitas/wtfpython-es) | [Korean ν•œκ΅­μ–΄](https://github.com/buttercrab/wtfpython-ko) | [Russian Русский](https://github.com/nifadyev/wtfpython/tree/main/translations/README-ru.md) | [German Deutsch](https://github.com/BenSt099/wtfpython) | [Add translation](https://github.com/satwikkansal/wtfpython/issues/new?title=Add%20translation%20for%20[LANGUAGE]&body=Expected%20time%20to%20finish:%20[X]%20weeks.%20I%27ll%20start%20working%20on%20it%20from%20[Y].) ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ способы: [Π˜Π½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ сайт](https://wtfpython-interactive.vercel.app) | [Π˜Π½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Jupiter notebook](https://colab.research.google.com/github/satwikkansal/wtfpython/blob/master/irrelevant/wtf.ipynb) | [CLI](https://pypi.python.org/pypi/wtfpython) Python, Π±ΡƒΠ΄ΡƒΡ‡ΠΈ прСкрасно спроСктированным высокоуровнСвым языком программирования, прСдоставляСт мноТСство возмоТностСй для удобства программиста. Но ΠΈΠ½ΠΎΠ³Π΄Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Python ΠΊΠΎΠ΄Π° ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π½Π΅ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΌΠΈ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд. **wtfpython** Π·Π°Π΄ΡƒΠΌΠ°Π½ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΏΡ‹Ρ‚Π°ΡŽΡ‰ΠΈΠΉΡΡ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ происходит ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡ‚ΠΎΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹Ρ… Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠΎΠ΄Π° ΠΈ ΠΌΠ΅Π½Π΅Π΅ извСстных возмоТностСй Python. Если Π²Ρ‹ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΉ программист Π½Π° Python, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ это ΠΊΠ°ΠΊ Π²Ρ‹Π·ΠΎΠ² ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ WTF ситуации с ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹ ΡƒΠΆΠ΅ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Π»ΠΈΡΡŒ с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΈΠ· Π½ΠΈΡ… Ρ€Π°Π½ΡŒΡˆΠ΅, ΠΈ я смогу ΠΎΠΆΠΈΠ²ΠΈΡ‚ΡŒ ваши старыС Π΄ΠΎΠ±Ρ€Ρ‹Π΅ воспоминания! πŸ˜… PS: Если Π²Ρ‹ ΡƒΠΆΠ΅ Ρ‡ΠΈΡ‚Π°Π»ΠΈ **wtfpython** Ρ€Π°Π½ΡŒΡˆΠ΅, с измСнСниями ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ [здСсь](https://github.com/satwikkansal/wtfpython/releases/) (ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹, ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹Π΅ Π·Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠΎΠΉ - это ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ Π² послСднСй основной Ρ€Π΅Π΄Π°ΠΊΡ†ΠΈΠΈ). Ну Ρ‡Ρ‚ΠΎ ΠΆ, приступим... # Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ - [Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅](#содСрТаниС) - [Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°](#структура-ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°) - [ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅](#ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅) - [πŸ‘€ ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹](#-ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹) - [БСкция: Напряги ΠΌΠΎΠ·Π³ΠΈ!](#сСкция-напряги-ΠΌΠΎΠ·Π³ΠΈ) - [β–Ά ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ!](#-ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ-Π΄Π΅Π»ΠΎΠΌ) - [πŸ’‘ ОбьяснСниС](#-обьяснСниС) # Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ВсС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ структуру: > ### β–Ά Какой-Ρ‚ΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ > > ```py > # НСочСвидный Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π° > # ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° ΠΊ ΠΌΠ°Π³ΠΈΠΈ... > ``` > > **Π’Ρ‹Π²ΠΎΠ΄ (Python вСрсия):** > > ```py > >>> triggering_statement > НСоТиданныС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ > ``` > > (ΠžΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ): ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° > > > #### πŸ’‘ ОбъяснСниС > > * ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ объяснСниС Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ происходит ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ это происходит. > > ```py > # Код > # Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ для дальнСйшСго Ρ€Π°Π·ΡŠΡΡΠ½Π΅Π½ΠΈΡ (Ссли Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ) > ``` > > **Π’Ρ‹Π²ΠΎΠ΄ (Python вСрсия):** > > ```py > >>> trigger # ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Π»Π΅Π³ΠΊΠΎ Ρ€Π°ΡΠΊΡ€Ρ‹Ρ‚ΡŒ магию > # обоснованный Π²Ρ‹Π²ΠΎΠ΄ > ``` **Π’Π°ΠΆΠ½ΠΎ:** ВсС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ протСстированы Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π΅ Python 3.5.2, ΠΈ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ для всСх вСрсий Python, Ссли это явно Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ. # ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π₯ΠΎΡ€ΠΎΡˆΠΈΠΉ способ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠΎΠ»ΡŒΠ·Ρƒ ΠΎΡ‚ этих ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² - Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈΡ… ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ… Π²Π°ΠΆΠ½ΠΎ: - Π’Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ исходный ΠΊΠΎΠ΄. Если Π²Ρ‹ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΉ программист Π½Π° Python, Ρ‚ΠΎ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв смоТСтС ΠΏΡ€Π΅Π΄ΡƒΠ³Π°Π΄Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ дальшС. - ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈ, - ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚ Π»ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ с вашими оТиданиями. - Π£Π±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ Ρ‚ΠΎΡ‡Π½ΡƒΡŽ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρƒ, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹Π²ΠΎΠ΄ получился ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊΠΈΠΌ. - Если ΠΎΡ‚Π²Π΅Ρ‚ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ (Ρ‡Ρ‚ΠΎ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ), ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π³Π»ΡƒΠ±ΠΎΠΊΠΈΠΉ Π²Π΄ΠΎΡ… ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ объяснСниС (Π° Ссли ΠΏΡ€ΠΈΠΌΠ΅Ρ€ всС Π΅Ρ‰Π΅ нСпонятСн, ΠΈ создайтС issue [здСсь](https://github.com/satwikkansal/wtfpython/issues/new)). - Если "Π΄Π°", ΠΎΡ‰ΡƒΡ‚ΠΈΡ‚Π΅ ΠΌΠΎΡ‰ΡŒ своих ΠΏΠΎΠ·Π½Π°Π½ΠΈΠΉ Π² Python ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ. PS: Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ WTFPython Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ [pypi package](https://pypi.python.org/pypi/wtfpython), ```sh pip install wtfpython -U wtfpython ``` # πŸ‘€ ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ## БСкция: Напряги ΠΌΠΎΠ·Π³ΠΈ! ### β–Ά ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ! По ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ "ΠΌΠΎΡ€ΠΆΠΎΠ²Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€" (Π°Π½Π³Π». walrus) `:=` Π² Python 3.8 стал довольно популярным. Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ Π΅Π³ΠΎ, 1\. ```py # Python version 3.8+ >>> a = "wtf_walrus" >>> a 'wtf_walrus' >>> a := "wtf_walrus" File "", line 1 a := "wtf_walrus" ^ SyntaxError: invalid syntax >>> (a := "wtf_walrus") # А этот ΠΊΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ 'wtf_walrus' >>> a 'wtf_walrus' ``` 2 \. ```py # Python version 3.8+ >>> a = 6, 9 >>> a (6, 9) >>> (a := 6, 9) (6, 9) >>> a 6 >>> a, b = 6, 9 # Випичная распаковка >>> a, b (6, 9) >>> (a, b = 16, 19) # Упс File "", line 1 (a, b = 16, 19) ^ SyntaxError: invalid syntax >>> (a, b := 16, 19) # На Π²Ρ‹Π²ΠΎΠ΄Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ странный ΠΊΠΎΡ€Ρ‚Π΅ΠΆ ΠΈΠ· 3 элСмСнтов (6, 16, 19) >>> a # Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ остаСтся Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎΠΉ? 6 >>> b 16 ``` #### πŸ’‘ ОбьяснСниС **Быстрый Ρ€Π°Π·Π±ΠΎΡ€ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ "ΠΌΠΎΡ€ΠΆΠΎΠ²Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€"** "ΠœΠΎΡ€ΠΆΠΎΠ²Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€" (`:=`) Π±Ρ‹Π» прСдставлСн Π² Python 3.8, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π² ситуациях, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ. ```py def some_func(): # ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ здСсь Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊ рСсурсам вычислСния # time.sleep(1000) return 5 # ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ вмСсто, if some_func(): print(some_func()) # ΠŸΠ»ΠΎΡ…Π°Ρ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ вычислСния происходят Π΄Π²Π°ΠΆΠ΄Ρ‹. # Или a = some_func() if a: print(a) # МоТно Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ if a := some_func(): print(a) ``` **Π’Ρ‹Π²ΠΎΠ΄ (> 3.8):** ```py 5 5 5 ``` ИспользованиС `:=` сэкономило ΠΎΠ΄Π½Ρƒ строку ΠΊΠΎΠ΄Π° ΠΈ нСявно ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΠ»ΠΎ Π²Ρ‹Π·ΠΎΠ² `some_func` Π΄Π²Π°ΠΆΠ΄Ρ‹. - "Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ присваивания", Π½Π΅ ΠΎΠ±Π΅Ρ€Π½ΡƒΡ‚ΠΎΠ΅ Π² скобки, ΠΈΠ½Π°Ρ‡Π΅ говоря использованиС ΠΌΠΎΡ€ΠΆΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ Π½Π° Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅, ΠΎΡ‚ΡΡŽΠ΄Π° `SyntaxError` Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ `a := "wtf_walrus"` Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅. ПослС оборачивания Π² скобки, `a` Π±Ρ‹Π»ΠΎ присвоСно Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊ ΠΈ оТидалось. - Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя ΠΎΠ±ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π½ΠΈΠ΅ скобками выраТСния, содСрТащСго ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ `=`, Π½Π΅ допускаСтся. ΠžΡ‚ΡΡŽΠ΄Π° синтаксичСская ошибка Π² `(a, b = 6, 9)`. - Бинтаксис ΠΌΠΎΡ€ΠΆΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄ `NAME:= expr`, Π³Π΄Π΅ `NAME` - допустимый ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, Π° `expr` - допустимоС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΠΈ распаковка ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π΅ поддСрТиваСтся, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, - `(a := 6, 9)` эквивалСнтно `((a := 6), 9)` ΠΈ Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ `(a, 9)` (Π³Π΄Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ `a` Ρ€Π°Π²Π½ΠΎ `6`) ```py >>> (a := 6, 9) == ((a := 6), 9) True >>> x = (a := 696, 9) >>> x (696, 9) >>> x[0] is a # Оба ΡΡΡ‹Π»Π°ΡŽΡ‚ΡΡ Π½Π° ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ ячСйку памяти True ``` - Аналогично, `(a, b := 16, 19)` эквивалСнтно `(a, (b := 16), 19)`, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΅ΡΡ‚ΡŒ Π½Π΅ Ρ‡Ρ‚ΠΎ ΠΈΠ½ΠΎΠ΅, ΠΊΠ°ΠΊ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ ΠΈΠ· 3 элСмСнтов. ---