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 ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ².
---
### βΆ Π‘ΡΡΠΎΠΊΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° Π²Π΅Π΄ΡΡ ΡΠ΅Π±Ρ Π½Π΅ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΠΎ
1\.
```py
>>> a = "some_string"
>>> id(a)
140420665652016
>>> id("some" + "_" + "string") # ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΎΠ±Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ
140420665652016
```
2\.
```py
>>> a = "wtf"
>>> b = "wtf"
>>> a is b
True
>>> a = "wtf!"
>>> b = "wtf!"
>>> a is b
False
```
3\.
```py
>>> a, b = "wtf!", "wtf!"
>>> a is b # ΠΠΊΡΡΠ°Π»ΡΠ½ΠΎ Π΄Π»Ρ Π²Π΅ΡΡΠΈΠΉ Python, ΠΊΡΠΎΠΌΠ΅ 3.7.x
True
>>> a = "wtf!"; b = "wtf!"
>>> a is b # ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π²Π΅ΡΠ½Π΅Ρ True ΠΈΠ»ΠΈ False Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΠΎΠΉ ΡΡΠ΅Π΄Ρ (python shell / ipython / ΡΠΊΡΠΈΠΏΡ).
False
```
```py
# ΠΠ° ΡΡΠΎΡ ΡΠ°Π· Π² ΡΠ°ΠΉΠ»Π΅
a = "wtf!"
b = "wtf!"
print(a is b)
# ΠΡΠ²ΠΎΠ΄ΠΈΡ True ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ
```
4\.
**Output (< Python3.7 )**
```py
>>> 'a' * 20 is 'aaaaaaaaaaaaaaaaaaaa'
True
>>> 'a' * 21 is 'aaaaaaaaaaaaaaaaaaaaa'
False
```
ΠΠΎΠ³ΠΈΡΠ½ΠΎ, ΠΏΡΠ°Π²Π΄Π°?
#### π‘ ΠΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅
- ΠΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΈ Π²ΡΠΎΡΠΎΠΌ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ°Ρ
ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠ΅ΠΉ CPython (Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠΎΠΉ ΠΈΠ½ΡΠ΅ΡΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΡΠΎΠΊ ((Π°Π½Π³Π». string interning))), ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΡΠ°Π΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΡΠ»ΡΡΠ°ΡΡ
Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ.
- ΠΠΎΡΠ»Π΅ "ΠΈΠ½ΡΠ΅ΡΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ" ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΌΠΎΠ³ΡΡ ΡΡΡΠ»Π°ΡΡΡΡ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΡΡΡΠΎΠΊΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π² ΠΏΠ°ΠΌΡΡΠΈ (ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ ΡΠΊΠΎΠ½ΠΎΠΌΡ ΠΏΠ°ΠΌΡΡΡ).
- Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΡ
Π²ΡΡΠ΅ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ°Ρ
ΡΡΡΠΎΠΊΠΈ Π½Π΅ΡΠ²Π½ΠΎ ΠΈΠ½ΡΠ΅ΡΠ½ΠΈΡΠΎΠ²Π°Π½Ρ. Π Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΎ ΡΠΎΠΌ, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΡΠ²Π½ΠΎ ΠΈΠ½ΡΠ΅ΡΠ½ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΠΎΠΊΡ, Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ. ΠΡΠ°Π²ΠΈΠ»Π° Π΄Π»Ρ ΠΈΠ½ΡΠ΅ΡΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΡΠΎΠΊ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅:
- ΠΡΠ΅ ΡΡΡΠΎΠΊΠΈ Π΄Π»ΠΈΠ½ΠΎΠΉ 0 ΠΈΠ»ΠΈ 1 ΡΠΈΠΌΠ²ΠΎΠ»Π° ΠΈΠ½ΡΠ΅ΡΠ½ΠΈΡΡΡΡΡΡ.
- Π‘ΡΡΠΎΠΊΠΈ ΠΈΠ½ΡΠ΅ΡΠ½ΠΈΡΡΡΡΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ (`'wtf'` Π±ΡΠ΄Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠ½ΠΈΡΠΎΠ²Π°Π½Π°, Π½ΠΎ `''.join(['w'', 't', 'f'])` - Π½Π΅Ρ)
- Π‘ΡΡΠΎΠΊΠΈ, Π½Π΅ ΡΠΎΡΡΠΎΡΡΠΈΠ΅ ΠΈΠ· Π±ΡΠΊΠ² ASCII, ΡΠΈΡΡ ΠΈΠ»ΠΈ Π·Π½Π°ΠΊΠΎΠ² ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΡ, Π½Π΅ ΠΈΠ½ΡΠ΅ΡΠ½ΠΈΡΡΡΡΡΡ. Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²ΡΡΠ΅ `'wtf!'` Π½Π΅ ΠΈΠ½ΡΠ΅ΡΠ½ΠΈΡΡΠ΅ΡΡΡ ΠΈΠ·-Π·Π° `!`. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π° Π² CPython ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ [Π·Π΄Π΅ΡΡ](https://github.com/python/cpython/blob/3.6/Objects/codeobject.c#L19)
![image](/images/string-intern/string_intern.png)
- ΠΠΎΠ³Π΄Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ `a` ΠΈ `b` ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ `"wtf!"` Π² ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅, ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Python ΡΠΎΠ·Π΄Π°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, Π° Π·Π°ΡΠ΅ΠΌ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΡΡΡΠ»Π°Π΅ΡΡΡ Π½Π° Π²ΡΠΎΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ. ΠΡΠ»ΠΈ ΡΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ
ΡΡΡΠΎΠΊΠ°Ρ
, ΠΎΠ½ Π½Π΅ "Π·Π½Π°Π΅Ρ", ΡΡΠΎ ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ `"wtf!"` ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡ (ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ `"wtf!"` Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅ΡΠ²Π½ΠΎ ΠΈΠ½ΡΠ΅ΡΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΡΠ°ΠΊΡΠ°ΠΌΠΈ, ΡΠΏΠΎΠΌΡΠ½ΡΡΡΠΌΠΈ Π²ΡΡΠ΅). ΠΡΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, Π½Π΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΊ Π²Π΅ΡΡΠΈΡΠΌ CPython 3.7.x (Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ΅ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ ΡΠΌΠΎΡΡΠΈΡΠ΅ Π·Π΄Π΅ΡΡ [issue](https://github.com/satwikkansal/wtfpython/issues/100)).
- ΠΠ΄ΠΈΠ½ΠΈΡΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π² ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΡΡΠ΅Π΄Π΅ IPython ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°, ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π² ΡΠ»ΡΡΠ°Π΅ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΠΎΠ½Π° ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π²ΡΠ΅Π³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ. `a, b = "wtf!", "wtf!"` - ΡΡΠΎ ΠΎΠ΄Π½ΠΎ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅, ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ `a = "wtf!"; b = "wtf!"` - ΡΡΠΎ Π΄Π²Π° ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ Π² ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅. ΠΡΠΎ ΠΎΠ±ΡΡΡΠ½ΡΠ΅Ρ, ΠΏΠΎΡΠ΅ΠΌΡ ΡΠΎΠΆΠ΄Π΅ΡΡΠ²Π° ΡΠ°Π·Π»ΠΈΡΠ½Ρ Π² `a = "wtf!"; b = "wtf!"`, Π½ΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ Π² ΠΌΠΎΠ΄ΡΠ»Π΅.
- Π Π΅Π·ΠΊΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² Π²ΡΠ²ΠΎΠ΄Π΅ ΡΠ΅ΡΠ²Π΅ΡΡΠΎΠ³ΠΎ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ° ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ [peephole optimization](https://en.wikipedia.org/wiki/Peephole_optimization) ΡΠ΅Ρ
Π½ΠΈΠΊΠΎΠΉ, ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠΉ ΠΊΠ°ΠΊ ΡΠΊΠ»Π°Π΄ΡΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ (Π°Π½Π³Π». Constant folding). ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ `'a'*20` Π·Π°ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π½Π° `'aaaaaaaaaaaaaaaaaaaa'` Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, ΡΡΠΎΠ±Ρ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΊΡΠΎΠ² Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. Π‘ΠΊΠ»Π°Π΄ΡΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΡΡΠΎΠΊ Π΄Π»ΠΈΠ½ΠΎΠΉ ΠΌΠ΅Π½Π΅Π΅ 21. (ΠΠΎΡΠ΅ΠΌΡ? ΠΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅ ΡΠ΅Π±Π΅ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π° `.pyc`, ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ `'a'*10**10`). [ΠΠΎΡ](https://github.com/python/cpython/blob/3.6/Python/peephole.c#L288) ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΡΠ΅ΠΊΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ.
- ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: Π Python 3.7 ΡΠΊΠ»Π°Π΄ΡΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ Π±ΡΠ»ΠΎ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΠ΅Π½ΠΎ ΠΈΠ· ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡΠ° peephole Π² Π½ΠΎΠ²ΡΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡ AST Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌΠΈ Π² Π»ΠΎΠ³ΠΈΠΊΠ΅, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ΅ΡΠ²Π΅ΡΡΡΠΉ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² Python 3.7. ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎΠ± ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ [Π·Π΄Π΅ΡΡ](https://bugs.python.org/issue11549).
---
### βΆ ΠΡΡΠΎΡΠΎΠΆΠ½Π΅Π΅ Ρ ΡΠ΅ΠΏΠΎΡΠΊΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ
```py
>>> (False == False) in [False] # Π»ΠΎΠ³ΠΈΡΠ½ΠΎ
False
>>> False == (False in [False]) # Π²ΡΠ΅ Π΅ΡΠ΅ Π»ΠΎΠ³ΠΈΡΠ½ΠΎ
False
>>> False == False in [False] # Π° ΡΠ΅ΠΏΠ΅ΡΡ ΡΡΠΎ?
True
>>> True is False == False
False
>>> False is False is False
True
>>> 1 > 0 < 1
True
>>> (1 > 0) < 1
False
>>> 1 > (0 < 1)
False
```
#### π‘ ΠΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅:
Π‘ΠΎΠ³Π»Π°ΡΠ½ΠΎ https://docs.python.org/3/reference/expressions.html#comparisons
> Π€ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ, Π΅ΡΠ»ΠΈ a, b, c, ..., y, z - Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π° op1, op2, ..., opN - ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ, ΡΠΎ a op1 b op2 c ... y opN z ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎ a op1 b ΠΈ b op2 c ΠΈ ... y opN z, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡΠ΅Π½ΠΈΠ²Π°Π΅ΡΡΡ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°Π·Π°.
Π₯ΠΎΡΡ ΡΠ°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ Π³Π»ΡΠΏΡΠΌ Π² ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΡ
Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ
, ΠΎΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ ΡΠ°Π½ΡΠ°ΡΡΠΈΡΠ½ΠΎ Π΄Π»Ρ ΡΠ°ΠΊΠΈΡ
Π²Π΅ΡΠ΅ΠΉ, ΠΊΠ°ΠΊ `a == b == c` ΠΈ `0 <= x <= 100`.
* `False is False is False` ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎ `(False is False) ΠΈ (False is False)`.
* `True is False == False` ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎ `(True is False) and (False == False)` ΠΈ ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ²Π°Ρ ΡΠ°ΡΡΡ Π²ΡΡΠΊΠ°Π·ΡΠ²Π°Π½ΠΈΡ (`True is False`) ΠΎΡΠ΅Π½ΠΈΠ²Π°Π΅ΡΡΡ Π² `False`, ΡΠΎ Π²ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΊ `False`.
* `1 > 0 < 1` ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎ `(1 > 0) ΠΈ (0 < 1)`, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΊ `True`.
* ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ `(1 > 0) < 1` ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎ `True < 1` ΠΈ
```py
>>> int(True)
1
>>> True + 1 # Π½Π΅ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ Π΄Π°Π½Π½ΠΎΠΌΡ ΠΏΡΠΈΠΌΠ΅ΡΡ, Π½ΠΎ ΠΏΡΠΎΡΡΠΎ Π΄Π»Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ°
2
```
Π ΠΈΡΠΎΠ³Π΅, `1 < 1` Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΈ Π΄Π°Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ `False`
---
### βΆ ΠΠ°ΠΊ Π½Π΅ Π½Π°Π΄ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ `is`
ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΎΡΠ΅Π½Ρ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ.
1\.
```py
>>> a = 256
>>> b = 256
>>> a is b
True
>>> a = 257
>>> b = 257
>>> a is b
False
```
2\.
```py
>>> a = []
>>> b = []
>>> a is b
False
>>> a = tuple()
>>> b = tuple()
>>> a is b
True
```
3\.
**Π Π΅Π·ΡΠ»ΡΡΠ°Ρ**
```py
>>> a, b = 257, 257
>>> a is b
True
```
**ΠΡΠ²ΠΎΠ΄ (ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Python 3.7.x)**
```py
>>> a, b = 257, 257
>>> a is b
False
```
#### π‘ ΠΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅:
**Π Π°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ `is` ΠΈ `==`**.
* ΠΠΏΠ΅ΡΠ°ΡΠΎΡ `is` ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ, ΡΡΡΠ»Π°ΡΡΡΡ Π»ΠΈ ΠΎΠ±Π° ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π° Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡ (Ρ.Π΅. ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ, ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ Π»ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ΠΎΠ² ΠΈΠ»ΠΈ Π½Π΅Ρ).
* ΠΠΏΠ΅ΡΠ°ΡΠΎΡ `==` ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΎΠ±ΠΎΠΈΡ
ΠΎΠΏΠ΅ΡΠ°Π½Π΄ΠΎΠ² ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ, ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ Π»ΠΈ ΠΎΠ½ΠΈ.
* Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ `is` ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΡΠ°Π²Π΅Π½ΡΡΠ²Π° ΡΡΡΠ»ΠΎΠΊ, Π° `==` - Π΄Π»Ρ ΡΠ°Π²Π΅Π½ΡΡΠ²Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ. ΠΡΠΈΠΌΠ΅Ρ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΡΡΠ½ΠΈΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ,
```py
>>> class A: pass
>>> A() is A() # 2 ΠΏΡΡΡΡΡ
ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π² ΡΠ°Π·Π½ΡΡ
ΡΡΠ΅ΠΉΠΊΠ°Ρ
ΠΏΠ°ΠΌΡΡΠΈ
False
```
**`256` - ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, Π° `257` - Π½Π΅Ρ**.
ΠΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ python ΡΠΈΡΠ»Π° ΠΎΡ `-5` Π΄ΠΎ `256` Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π² ΠΏΠ°ΠΌΡΡΡ. ΠΡΠΈ ΡΠΈΡΠ»Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠ°ΡΡΠΎ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ» ΠΏΡΠΎΡΡΠΎ ΠΈΠΌΠ΅ΡΡ ΠΈΡ
Π½Π°Π³ΠΎΡΠΎΠ²Π΅.
ΠΠ΅ΡΠ΅Π²ΠΎΠ΄ ΡΠΈΡΠ°ΡΡ ΠΈΠ· [Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ](https://docs.python.org/3/c-api/long.html)
> Π’Π΅ΠΊΡΡΠ°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Ρ
ΡΠ°Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ² ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΡ
ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π΄Π»Ρ Π²ΡΠ΅Ρ
ΡΠ΅Π»ΡΡ
ΡΠΈΡΠ΅Π» ΠΎΡ -5 Π΄ΠΎ 256, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΡΠΎΠ·Π΄Π°Π΅ΡΠ΅ int Π² ΡΡΠΎΠΌ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅, Π²Ρ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΡΡΡΠ»ΠΊΡ Π½Π° ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ.
```py
>>> id(256)
10922528
>>> a = 256
>>> b = 256
>>> id(a)
10922528
>>> id(b)
10922528
>>> id(257)
140084850247312
>>> x = 257
>>> y = 257
>>> id(x)
140084850247440
>>> id(y)
140084850247344
```
ΠΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ, ΡΡΠΎ Π΄ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ `y = 257` ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ `257` ΡΠΆΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΎ, ΠΈ ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π΄ΡΡΠ³ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π² ΠΏΠ°ΠΌΡΡΠΈ.
ΠΠΎΠ΄ΠΎΠ±Π½Π°Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΠ° ΠΈ ΠΊ Π΄ΡΡΠ³ΠΈΠΌ **ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΌ** ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ, ΡΠ°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ ΠΏΡΡΡΡΠ΅ ΠΊΠΎΡΡΠ΅ΠΆΠΈ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠΏΠΈΡΠΊΠΈ ΡΠ²Π»ΡΡΡΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΌΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ `[] is []` Π²Π΅ΡΠ½Π΅Ρ `False`, Π° `() is ()` Π²Π΅ΡΠ½Π΅Ρ `True`. ΠΡΠΎ ΠΎΠ±ΡΡΡΠ½ΡΠ΅Ρ Π½Π°Ρ Π²ΡΠΎΡΠΎΠΉ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ. ΠΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ ΠΊ ΡΡΠ΅ΡΡΠ΅ΠΌΡ,
**Π `a`, ΠΈ `b` ΡΡΡΠ»Π°ΡΡΡΡ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ ΡΠ΅ΠΌ ΠΆΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈ ΡΠΎΠΉ ΠΆΠ΅ ΡΡΡΠΎΠΊΠ΅i**.
**ΠΡΠ²ΠΎΠ΄**
```py
>>> a, b = 257, 257
>>> id(a)
140640774013296
>>> id(b)
140640774013296
>>> a = 257
>>> b = 257
>>> id(a)
140640774013392
>>> id(b)
140640774013488
```
* ΠΠΎΠ³Π΄Π° a ΠΈ b ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΡΡ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ `257` Π² ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅, ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Python ΡΠΎΠ·Π΄Π°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, Π° Π·Π°ΡΠ΅ΠΌ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΡΡΡΠ»Π°Π΅ΡΡΡ Π½Π° Π½Π΅Π³ΠΎ Π²ΠΎ Π²ΡΠΎΡΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ. ΠΡΠ»ΠΈ Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ
ΡΡΡΠΎΠΊΠ°Ρ
, ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Π½Π΅ "Π·Π½Π°Π΅Ρ", ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ `257` ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ.
* ΠΡΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΈ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΊ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΡΡΠ΅Π΄Π΅. ΠΠΎΠ³Π΄Π° Π²Ρ Π²Π²ΠΎΠ΄ΠΈΡΠ΅ Π΄Π²Π΅ ΡΡΡΠΎΠΊΠΈ Π² ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ΅, ΠΎΠ½ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΡΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΡΡΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ. ΠΡΠ»ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ Π² ΡΠ°ΠΉΠ»Π΅ `.py', ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠ°ΠΉΠ» ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Π²Π΅ΡΡ ΡΡΠ°Π·Ρ. ΠΡΠ° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π½Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ ΡΠ΅Π»ΡΠΌΠΈ ΡΠΈΡΠ»Π°ΠΌΠΈ, ΠΎΠ½Π° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΈ Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ
Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ
ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ
, ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ ΡΡΡΠΎΠΊΠΈ (ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅Ρ "Π‘ΡΡΠΎΠΊΠΈ - ΡΡΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎ") ΠΈ ΠΏΠ»Π°Π²Π°ΡΡΠΈΠ΅ ΡΠΈΡΠ»Π°,
```py
>>> a, b = 257.0, 257.0
>>> a is b
True
```
* ΠΠΎΡΠ΅ΠΌΡ ΡΡΠΎ Π½Π΅ ΡΡΠ°Π±ΠΎΡΠ°Π»ΠΎ Π² Python 3.7? ΠΠ±ΡΡΡΠ°ΠΊΡΠ½Π°Ρ ΠΏΡΠΈΡΠΈΠ½Π° Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΠ°ΠΊΠΈΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Π·Π°Π²ΠΈΡΡΡ ΠΎΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ (Ρ.Π΅. ΠΌΠΎΠ³ΡΡ ΠΌΠ΅Π½ΡΡΡΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π²Π΅ΡΡΠΈΠΈ, ΠΠ‘ ΠΈ Ρ.Π΄.). Π― Π²ΡΠ΅ Π΅ΡΠ΅ Π²ΡΡΡΠ½ΡΡ, ΠΊΠ°ΠΊΠΎΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π²ΡΠ·Π²Π°Π»ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΡΠΎΡ [issue](https://github.com/satwikkansal/wtfpython/issues/100) Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ.
---