Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π»ΡΠΌΠ±Π΄Π° ΡΡΠ½ΠΊΡΠΈΡ python
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π»ΡΠΌΠ±Π΄Π° ΡΡΠ½ΠΊΡΠΈΡ python
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΡΡ , ΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π² Python, ΠΈΡ Π΄ΠΎΡΡΠΎΠΈΠ½ΡΡΠ²Π°Ρ ΠΈ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Lambda-ΡΡΠ½ΠΊΡΠΈΠΈ
ΠΠ΅Π±ΠΎΠ»ΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΠΏΠ°ΡΡ ΡΡΡΠΎΠΊ ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ β lambda [1], Π½Π΅ ΠΈΠΌΠ΅ΡΡΠ΅ΠΉ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°. Python ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΈΡΠ°ΡΡ Π»Π°ΠΊΠΎΠ½ΠΈΡΠ½ΡΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΠΎΠ±ΡΡΠΆΠ΄Π°Π»ΠΈ ΡΡΡ. Π lambda-ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ Π² ΡΡΠΎΠΌ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΡΠΈΡΠ°Π΅Ρ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΠΎΠ΅ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅. ΠΠΎΠΆΠ½ΠΎ Π΅Π΅ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ΅ΡΠ΅Π· def :
Π ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ΅ΡΠ΅Π· Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΡ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΡ:
ΠΠ°ΠΌΠ΅ΡΠΈΠΌ, ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Π±Π΅Π· ΡΠΊΠΎΠ±ΠΎΠΊ.
Π Python Π²ΡΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠΎΡΡΠΎΠΌΡ ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΈΡ . Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΠ΄Π΅ΡΡ ΡΡΠ½ΠΊΡΠΈΡ calculate ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ n ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΡ, ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΠ°Ρ Π΄Π²Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° z ΠΈ y ΡΠ΅ΡΠ΅Π· Π·Π°ΠΏΡΡΡΡ ΠΈ Π²ΡΡΠΈΡΠ»ΡΡΡΠ°Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅.
ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ lambda Π² sort, filter, map, reduce
ΠΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° β ΠΎΠ΄Π½Π° ΠΈΠ· ΡΠ°ΠΌΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΉ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠΌΠ΅Π΅ΡΡΡ ΡΠΏΠΈΡΠΎΠΊ ΡΠ»ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΡΠΆΠ½ΠΎ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ Π±ΡΠΊΠ²Π΅. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ key β ΡΡΠ½ΠΊΡΠΈΡ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠΉ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². ΠΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ ΠΌΠΎΠΆΠ΅Ρ ΡΠ»ΡΠΆΠΈΡΡ Π½Π°ΡΠ° lambda:
ΠΡΠΎΡΡΠΌ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ lamda-ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ . ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΊΠ»ΡΡΠΈΡΡ Π²ΡΠ΅ ΡΠ΅ΡΠ½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π² ΡΠΏΠΈΡΠΊΠ΅. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π΅ΡΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½Π°Ρ Π² Python ΡΡΠ½ΠΊΡΠΈΡ filter :
filter ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΏΠ΅ΡΠ²ΡΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΡ, ΡΠ΅ΡΠ΅Π· ΠΊΠΎΡΠΎΡΡΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ.
Π’ΡΠ΅ΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ β ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ lambda-ΡΡΠ½ΠΊΡΠΈΠΉ Π² ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°. Π’ΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΈΠ· Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ° ΡΠΈΡΠ΅Π» ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ ΠΊΡΠ±ΠΎΠ² ΡΡΠΈΡ ΡΠΈΡΠ΅Π». Π‘ ΠΏΠΎΠΌΠΎΡΡΡ map ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ°ΠΊ:
map ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΏΠ΅ΡΠ²ΡΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΡ, ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ ΡΠΏΠΈΡΠΎΠΊ Π² Π½ΠΎΠ²ΠΎΠΌ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅. ΠΠ΄Π΅ΡΡ Π±ΡΠ»Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π° Π°Π½ΠΎΠ½ΠΈΠΌΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΎΠ·Π²ΠΎΠ΄ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² 3-Ρ ΡΡΠ΅ΠΏΠ΅Π½Ρ.
Π‘ΡΠΎΠΈΡ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, Π½Π΅ Π²ΡΠ΅Π³Π΄Π° lambda-ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ²Π»ΡΡΡΡΡ ΡΠΌΠ΅ΡΡΠ½ΡΠΌΠΈ ΠΈΠ·-Π·Π° ΠΈΡ Π½Π΅ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, filter ΠΈ map ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°Π½Ρ ΡΠ΅ΡΠ΅Π· List comprehension, ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΡ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ ΡΡΡ. ΠΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ lambda-ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ List comprehension Π² ΡΠ΅Π°Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ Data Science, Π²Ρ ΡΠ·Π½Π°Π΅ΡΠ΅ Π½Π° Π½Π°ΡΠΈΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΊΡΡΡΠ°Ρ ΠΏΠΎ Python Π² Π»ΠΈΡΠ΅Π½Π·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΡΡΠ΅Π±Π½ΠΎΠΌ ΡΠ΅Π½ΡΡΠ΅ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ ΠΈ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΊΠ²Π°Π»ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΠ’-ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠΎΠ² Π² ΠΠΎΡΠΊΠ²Π΅.
ΠΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Python Lambda: 5-ΠΌΠΈΠ½ΡΡΠ½ΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ
Python ΠΈΠΌΠ΅Π΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠΈΠ»Ρ ΡΠ°ΡΡΠΎ ΡΡΠ΅Π±ΡΡΡΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ. Π Python Π΅ΡΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠΉ.
Π ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅) β ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ, Π½Π΅ ΠΏΡΠΈΠ²ΡΠ·Π°Π½Π½Π°Ρ ΠΊ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ. ΠΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠΈ β Π²Π°ΠΆΠ½Π°Ρ ΡΠ°ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ°Ρ ΠΏΠΈΡΠ°ΡΡ ΠΎΠ΄Π½ΠΎΡΠ°Π·ΠΎΠ²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π½Π°Π·ΡΠ²Π°ΡΡ ΠΈΡ .
Π ΡΡΠΎΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅ ΠΏΠΎ Python ΠΌΡ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠΌ Π²Π°Ρ Ρ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ Π² Python ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ, ΠΊΠ°ΠΊ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ Π² Π²Π°ΡΠ΅ΠΌ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ lambda functions?
ΠΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΡ β ΡΡΠΎ Π½Π΅Π±ΠΎΠ»ΡΡΠ°Ρ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π»ΡΠ±ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², Π½ΠΎ ΠΈΠΌΠ΅Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅. ΠΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°Π·Π½Π°ΡΠ΅Π½ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΡΠ°ΡΡΡ Π΄ΡΡΠ³ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ.
ΠΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΎΡ ΠΎΠ±ΡΡΠ½ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΏΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΠΏΡΠΈΡΠΈΠ½Π°ΠΌ. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Ρ ΠΎΠ΄Π½ΠΈΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΈΠ»ΠΈ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ.
ΠΠΎΠ³Π΄Π° Π΄Π΅Π»ΠΎ Π΄ΠΎΡ ΠΎΠ΄ΠΈΡ Π΄ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ ΠΈΠ· Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, Π²ΡΠ΅Π³Π΄Π° Π΅ΡΡΡ Π½Π΅ΡΠ²Π½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°. ΠΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΡΠ΅Π½ΠΈΠ²Π°ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ.
ΠΠΎΡ ΠΏΠΎΡΠ΅ΠΌΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ Π½Π°Π·ΡΠ²Π°ΡΡ Π»ΡΠΌΠ±Π΄Ρ Β«ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΒ».
ΠΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΡ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΈΠΌΠ΅Π½ΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ, Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΎΠ±ΡΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ lambdaΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ defΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π°. Π‘ΡΡΡΠΊΡΡΡΡ Π»ΡΠΌΠ±Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π½ΠΈΠΆΠ΅:
ΠΡΡΠΎΡΠΈΡ: ΠΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΡΡ ΠΎΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΉ Π»ΡΠΌΠ±Π΄Π°-ΠΈΡΡΠΈΡΠ»Π΅Π½ΠΈΡ, ΠΌΠΎΠ΄Π΅Π»ΠΈ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ, ΠΈΠ·ΠΎΠ±ΡΠ΅ΡΠ΅Π½Π½ΠΎΠΉ ΠΠ»ΠΎΠ½Π·ΠΎ Π§ΡΡΡΠ΅ΠΌ.
Π₯ΠΎΡΡ Python Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ, ΠΎΠ½ Π΄ΠΎΠ±Π°Π²ΠΈΠ» ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΉ. Π 1994 Π³ΠΎΠ΄Ρ filter(), map(), reduce()ΠΈ lambdaΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Π±ΡΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ ΠΊ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΡ. ΠΡΡΠ³ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ·ΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Java ΠΈ JavaScript, ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΡ Π²Π΅ΡΡΠΈΡΡ .
ΠΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠΈ
ΠΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠΌΠ΅ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, Π½ΠΎ ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΡΡΠ΅Π±ΡΡΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΡΠ΅Π»Π΅ΡΡΡ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠΉ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ½ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ.
ΠΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΠΈΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌΠΈ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π°ΡΡΠ΄Ρ Ρ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ Π²ΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ΅Π±ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ map(), filter()ΠΈΠ»ΠΈfunctools.reduce()
ΠΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΡΠΌΠ±Π΄Ρ, ΠΊΠΎΠ³Π΄Π° Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ΅, ΡΡΠΎΠ±Ρ ΠΎΠ±Π»Π΅Π³ΡΠΈΡΡ ΡΠΈΡΠ°Π΅ΠΌΠΎΡΡΡ. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ ΠΊΡΠ°ΡΡΠ°ΠΉΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± Π·Π°ΠΏΠΈΡΠΈ ΠΈΠ»ΠΈ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΠ΅Π³ΠΎ-Π»ΠΈΠ±ΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ³Π΄Π°:
ΠΠΎΠ³Π΄Π° Π²Ρ ΠΏΡΠΈΠ²ΡΠΊΠ½Π΅ΡΠ΅ ΠΊ Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌ, Π²Ρ Π½Π°ΡΠ½Π΅ΡΠ΅ ΠΈΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ. ΠΠ½ΠΈ Π²ΡΡΠ°Π·ΠΈΡΠ΅Π»ΡΠ½Ρ ΠΈ ΠΏΡΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π΄Π΅Π»Π°ΡΡ ΠΊΠΎΠ΄ ΠΊΠΎΡΠΎΡΠ΅ ΠΈ ΡΠΈΡΠ°Π±Π΅Π»ΡΠ½Π΅Π΅. Π§ΡΠΎΠ±Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΡΠΌΠ±Π΄Π°, ΡΠ»Π΅Π΄ΡΠΉΡΠ΅ ΡΡΠΈΠΌ ΠΎΠ±ΡΠΈΠΌ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡΠΌ:
ΠΠ°ΠΊ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ lambda functions Python
ΠΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠ½Π°ΡΠ΅, ΡΠ΅ΠΌ ΠΎΠ±ΡΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ. Π Python Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ±Π»Π°Π΄Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΌΠΈ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ°ΠΌΠΈ:
ΠΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΡ Π² Python ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π±Π°Π·ΠΎΠ²ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ. ΠΠ°ΠΊ ΠΌΡ ΡΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΈ ΡΠ°Π½Π΅Π΅, ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ lambdaΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΎΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π² Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΈ Python.
ΠΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Π»ΡΠ±ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² (Π²ΠΊΠ»ΡΡΠ°Ρ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ Π·Π°ΠΌΠ΅Π½Ρ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠ»ΠΎΡΠ°Π΄ΠΈ:
lambda ΠΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΠ΅Ρ Π»ΡΠΌΠ±Π΄Π° β Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅. Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ xΡΡΠΎ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ. ΠΠ²ΠΎΠ΅ΡΠΎΡΠΈΠ΅ Π·Π°Π²Π΅ΡΡΠ°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΈ Π²Π²ΠΎΠ΄ΠΈΡ ΡΠ΅Π»ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ.
Π§ΡΠΎΠ±Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ Π΅Π³ΠΎ Π²Π΅Π·Π΄Π΅, Π³Π΄Π΅ Π²Ρ ΠΎΠ±ΡΡΠ½ΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡΠΎΡ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΊΠΎΠ΄Π° Π½ΠΈΠΆΠ΅ ΡΠΎΠ·Π΄Π°Π΅Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ Π΅Π³ΠΎ Π² ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π·Π°ΡΠ΅ΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΡ.
ΠΠ΅ΡΠ΅Π΄Π°ΡΠ° Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠΌΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅. ΠΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅ ΠΈΠΌΠ΅ΡΡ ΠΈΠΌΠ΅Π½, Π½ΠΎ Π΅ΡΠ»ΠΈ Π²Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Ρ ΠΎΡΠΈΡΠ΅, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:
ΠΠ΅Ρ ΡΠ²Π½ΡΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ² Π² Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΈΠΌΠ΅Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΡΠΈΠΌΠ΅ΡΡ lambda Python
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ, ΠΊΠ°ΠΊ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² Python, Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠ΄ΠΊΡΠ΅ΠΏΠΈΠΌ Π½Π°ΡΠΈ Π·Π½Π°Π½ΠΈΡ Π΅ΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ ΠΈ Π²Π°ΡΠΈΠ°Π½ΡΠ°ΠΌΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ.
ΠΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠΈ Π² Python: ΠΏΡΠΈΠΌΠ΅ΡΡ
ΠΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠΈ β ΡΡΠΎ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ΄ΡΠΌΠ°ΡΡ, ΡΡΠΎ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠΈ β ΡΡΠΎ ΡΡΠΎ-ΡΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΠ΅, Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°ΠΌ. ΠΠΎ ΠΈΠ· ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠΈ Π²Ρ ΡΠ·Π½Π°Π΅ΡΠ΅, ΠΊΠ°ΠΊ Π»Π΅Π³ΠΊΠΎ Π½Π°ΡΠ°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ Π² ΡΠ²ΠΎΡΠΌ ΠΊΠΎΠ΄Π΅.
Π Python ΠΌΡ ΠΎΠ±ΡΡΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ°ΠΊ:
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠ½ΠΊΡΠΈΡ, ΡΠ΄Π²Π°ΠΈΠ²Π°ΡΡΠ°Ρ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ:
ΠΠΌΠ΅Π½Π½ΠΎ Π·Π΄Π΅ΡΡ ΡΠ΅Π»Π΅ΡΠΎΠΎΠ±ΡΠ°Π·Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΡ, Ρ.ΠΊ. Π΅Ρ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΡΠΌΠΎ Π² ΡΠΎΠΌ ΠΆΠ΅ ΠΌΠ΅ΡΡΠ΅, Π³Π΄Π΅ ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ. Π ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΌΠ΅Π½ΡΡΠ΅ ΡΡΡΠΎΠΊ ΠΊΠΎΠ΄Π°. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π½Π°ΠΌ Π½Π΅ ΠΏΡΠΈΠ΄ΡΡΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ Π·Π°Π½ΠΈΠΌΠ°ΡΡ ΠΌΠ΅ΡΡΠΎ Π² ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡ Π»ΠΈΡΡ ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ.
ΠΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠΈ Π² Python
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠΌΠ΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ:
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΡΠΌ Π½Π΅Π»ΡΠ·Ρ Π΄Π°ΡΡ ΠΈΠΌΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΠ½ΠΈ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΠ΅ (Π±Π΅Π· ΠΈΠΌΠ΅Π½ΠΈ) ΠΏΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ.
ΠΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π² Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ³ΠΎΠ΄Π½ΠΎ, Π½ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΡΠ΅Π»Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠ΄Π½ΠΎ.
ΠΠ°ΡΠΊ ΠΡΡΡ Β«ΠΠ·ΡΡΠ°Π΅ΠΌ PythonΒ»
Π‘ΠΊΠ°ΡΠΈΠ²Π°ΠΉΡΠ΅ ΠΊΠ½ΠΈΠ³Ρ Ρ Π½Π°Ρ Π² ΡΠ΅Π»Π΅Π³ΡΠ°ΠΌ
ΠΡΠΈΠΌΠ΅Ρ 1
ΠΡΠΈΠΌΠ΅Ρ 2
ΠΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΠ°ΠΌ, Π³Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π² ΠΏΠ°ΠΌΡΡΠΈ Π½Π΅ ΠΏΡΠΈΠ΄ΡΡΡΡ Ρ ΡΠ°Π½ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΡ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ. ΠΠΎΡΡΠΎΠΌΡ Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΡΠ°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅Π»Π΅ΡΠΎΠΎΠ±ΡΠ°Π·Π½ΠΎ ΠΏΠΈΡΠ°ΡΡ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π·Π°Π³ΡΠΎΠΌΠΎΠΆΠ΄Π΅Π½ΠΈΡ.
ΠΡΠΈΠΌΠ΅Ρ 3
ΠΡΠΌΠ±Π΄Π° ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΡΠ»ΠΈ Π²Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠΎΠ·Π΄Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ, ΡΠΌΠ½ΠΎΠΆΠ°ΡΡΠΈΡ ΡΠΈΡΠ»Π° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΄Π²Π°ΠΈΠ²Π°ΡΡΠΈΡ ΠΈ ΡΡΡΠ°ΠΈΠ²Π°ΡΡΠΈΡ ), Π»ΡΠΌΠ±Π΄Π° ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΌΠΎΡΡ.
ΠΠ΅Π· Π»ΡΠΌΠ±Π΄Ρ Π²Π°ΠΌ Π±Ρ ΠΏΡΠΈΡΠ»ΠΎΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π²Π½ΡΡΡΠΈ multiplyBy Π΄ΡΡΠ³ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ:
ΠΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΡ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Π²ΡΠ΅Π³ΠΎ ΠΏΠΎΠ»ΡΡΡΠΎΠΊΠΈ ΠΈ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ ΡΠΈΡΠ°Π±Π΅Π»ΡΠ½ΠΎΡΡΡ ΠΊΠΎΠ΄Π°.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠΈ β ΡΡΠΎ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Π·Π°ΠΏΠΈΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅. ΠΠΎΠ²ΠΈΡΠΊΠΈ ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΠΌΠΈ Π½Π΅ ΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ, Π½ΠΎ ΡΠ΅ΠΏΠ΅ΡΡ Π²Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΠ΅, ΠΊΠ°ΠΊ ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ ΡΠ°Π·Π½ΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ.
ΠΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² Python Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠΈ
Π Python ΠΈ Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ , ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ Java, C# ΠΈ Π΄Π°ΠΆΠ΅ C++, Π² ΠΈΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠΈ, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΡΠ·ΡΠΊΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ LISP ΠΈΠ»ΠΈ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²ΠΎ ΡΠ·ΡΠΊΠΎΠ² ML, Haskell, OCaml ΠΈ F#, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ.
Python-Π»ΡΠΌΠ±Π΄Ρ β ΡΡΠΎ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΏΠΎΠ΄ΡΠΈΠ½ΡΡΡΠΈΠ΅ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠΎΠ³ΠΎΠΌΡ, Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ Π»Π°ΠΊΠΎΠ½ΠΈΡΠ½ΠΎΠΌΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΡ, ΡΠ΅ΠΌ ΠΎΠ±ΡΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Python.
Π ΠΊΠΎΠ½ΡΡ ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠΈ Π²Ρ ΡΠ·Π½Π°Π΅ΡΠ΅:
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΡ: ΠΡ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΠΊΠΎΠ΄Π° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π»ΡΠΌΠ±Π΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ²Π½ΠΎ ΠΈΠ³Π½ΠΎΡΠΈΡΡΡΡ Π»ΡΡΡΠΈΠ΅ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ ΡΡΠΈΠ»Ρ Python. ΠΡΠΎ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΈΠ»Π»ΡΡΡΡΠ°ΡΠΈΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΉ Π»ΡΠΌΠ±Π΄Π°-ΠΈΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π΄Π»Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Π»ΡΠΌΠ±Π΄.
ΠΡΠΈ ΡΠΎΠΌΠ½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ Π±ΡΠ΄ΡΡ ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ Π»ΡΡΡΠΈΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°ΠΌ ΠΈΠ»ΠΈ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π°ΠΌ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ ΠΏΡΠΎΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΡΡΠ°ΡΡΠΈ.
ΠΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ, Π²ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠ΅ Π² ΡΡΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ, Π±ΡΠ»ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½Ρ Π² Python 3.7.
ΠΡΠΌΠ±Π΄Π°-ΠΈΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅
ΠΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² Python ΠΈ Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΠΌΠ΅ΡΡ ΡΠ²ΠΎΠΈ ΠΊΠΎΡΠ½ΠΈ Π² Π»ΡΠΌΠ±Π΄Π°-ΠΈΡΡΠΈΡΠ»Π΅Π½ΠΈΠΈ, ΠΌΠΎΠ΄Π΅Π»ΠΈ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ, ΠΈΠ·ΠΎΠ±ΡΠ΅ΡΠ΅Π½Π½ΠΎΠΉ ΠΠ»ΠΎΠ½Π·ΠΎ Π§Π΅ΡΡΠ΅ΠΌ (Alonzo Church). ΠΠ°Π»Π΅Π΅ ΠΌΡ ΡΠ°ΡΡΠΊΠ°ΠΆΠ΅ΠΌ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΡΠ²ΠΈΠ»ΠΎΡΡ Π»ΡΠΌΠ±Π΄Π°-ΠΈΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ ΡΡΠ° ΡΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½Π°Ρ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ Π² ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ΅ Python.
ΠΡΡΠΎΡΠΈΡ
ΠΠ»ΠΎΠ½Π·ΠΎ Π§Π΅ΡΡ ΡΠΎΡΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π» Π»ΡΠΌΠ±Π΄Π°-ΠΈΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊ ΡΠ·ΡΠΊ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠΉ Π½Π° ΡΠΈΡΡΠΎΠΉ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ, Π² 1930-Ρ Π³ΠΎΠ΄Π°Ρ . ΠΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ°ΠΊΠΆΠ΅ Π½Π°Π·ΡΠ²Π°ΡΡ Π»ΡΠΌΠ±Π΄Π°-Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡΠΌΠΈ, ΠΏΡΡΠΌΠΎΠΉ ΡΡΡΠ»ΠΊΠΎΠΉ Π½Π° Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΎΠ½Π½ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ²ΠΎΡΠ΅Π½ΠΈΡ ΠΠ»ΠΎΠ½Π·ΠΎ Π§Π΅ΡΡ.
Π Π»ΡΠΌΠ±Π΄Π°-ΠΈΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°ΡΡ Π»ΡΠ±ΠΎΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅. ΠΠ½ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ»Π½ΡΠΌ ΠΏΠΎ Π’ΡΡΡΠΈΠ½Π³Ρ, Π½ΠΎ Π²ΠΎΠΏΡΠ΅ΠΊΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ ΠΌΠ°ΡΠΈΠ½Ρ Π’ΡΡΡΠΈΠ½Π³Π° ΠΎΠ½ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΈΡΡΡΠΌ ΠΈ Π½Π΅ ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ.
Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΡΠ·ΡΠΊΠΈ Π±Π΅ΡΡΡ ΡΠ²ΠΎΠ΅ Π½Π°ΡΠ°Π»ΠΎ Π² ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠ΅ ΠΈ Π»ΡΠΌΠ±Π΄Π°-ΠΈΡΡΠΈΡΠ»Π΅Π½ΠΈΠΈ, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΠΈΠΌΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΡΠ΅ ΡΠ·ΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΡ Π²Π°ΡΡΠ²Π°ΡΡ ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΡ Π½Π° ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ ΠΌΠΎΠ΄Π΅Π»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ, ΠΈΠ·ΠΎΠ±ΡΠ΅ΡΠ΅Π½Π½ΡΡ ΠΠ»Π°Π½ΠΎΠΌ Π’ΡΡΡΠΈΠ½Π³ΠΎΠΌ. ΠΠ²Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ, Π»ΡΠΌΠ±Π΄Π°-ΠΈΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΈ ΠΌΠ°ΡΠΈΠ½Ρ Π’ΡΡΡΠΈΠ½Π³Π°, ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΠ΅ΡΠ΅Π²Π΅Π΄Π΅Π½Ρ Π΄ΡΡΠ³ Π² Π΄ΡΡΠ³Π°. ΠΡΠ° ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎΡΡΡ ΠΈΠ·Π²Π΅ΡΡΠ½Π° ΠΊΠ°ΠΊ Π³ΠΈΠΏΠΎΡΠ΅Π·Π° Π§ΡΡΡΠ°-Π’ΡΡΡΠΈΠ½Π³Π°.
Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΡΠ·ΡΠΊΠΈ Π½Π°ΠΏΡΡΠΌΡΡ Π½Π°ΡΠ»Π΅Π΄ΡΡΡ ΡΠΈΠ»ΠΎΡΠΎΡΠΈΡ Π»ΡΠΌΠ±Π΄Π°-ΠΈΡΡΠΈΡΠ»Π΅Π½ΠΈΡ, ΠΏΡΠΈΠΌΠ΅Π½ΡΡ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠ²Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΡΠΈΠ΄Π°Π΅Ρ ΠΎΡΠΎΠ±ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ, ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΡ ΠΈ ΡΠΈΡΡΠΎΡΡ (Π±Π΅Π· ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΈ Π±Π΅Π· ΠΏΠΎΠ±ΠΎΡΠ½ΡΡ ΡΡΡΠ΅ΠΊΡΠΎΠ²). ΠΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ ΡΠ·ΡΠΊΠΎΠ² ΡΠ²Π»ΡΡΡΡΡ Haskell, Lisp ΠΈΠ»ΠΈ Erlang.
ΠΠ°ΠΏΡΠΎΡΠΈΠ², ΠΌΠ°ΡΠΈΠ½Π° Π’ΡΡΡΠΈΠ½Π³Π° ΠΏΡΠΈΠ²Π΅Π»Π° ΠΊ ΠΈΠΌΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΌΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠΌΡ Π² ΡΠ°ΠΊΠΈΡ ΡΠ·ΡΠΊΠ°Ρ , ΠΊΠ°ΠΊ Fortran, C ΠΈΠ»ΠΈ Python.
ΠΠΌΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΡΠΉ ΡΡΠΈΠ»Ρ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Ρ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡΠΌΠΈ, ΡΠ°Π³ Π·Π° ΡΠ°Π³ΠΎΠΌ ΡΠΏΡΠ°Π²Π»ΡΡΡΠ΅Π³ΠΎ Ρ ΠΎΠ΄ΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΠΌΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΠΌΠΈ. ΠΡΠΎΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΡΠΏΠΎΡΠΎΠ±ΡΡΠ²ΡΠ΅Ρ ΠΌΡΡΠ°ΡΠΈΠΈ ΠΈ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅.
Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π² ΠΎΠ±ΠΎΠΈΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°Ρ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΡΠ·ΡΠΊΠΈ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΠΈΠΌΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ OCaml, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠΎΠ½ΠΈΠΊΠ°ΡΡ Π² ΠΈΠΌΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠ΅ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²ΠΎ ΡΠ·ΡΠΊΠΎΠ², Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, Ρ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠΉ Π² Java ΠΈΠ»ΠΈ Python.
Python ΠΏΠΎ ΡΠ²ΠΎΠ΅ΠΉ ΡΡΡΠΈ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ, Π½ΠΎ Π½Π° ΡΠ°Π½Π½Π΅ΠΌ ΡΡΠ°ΠΏΠ΅ ΠΎΠ½ ΠΏΡΠΈΠ½ΡΠ» Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ. Π ΡΠ½Π²Π°ΡΠ΅ 1994 Π³ΠΎΠ΄Π° ΠΊ ΡΠ·ΡΠΊΡ Π±ΡΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ map(), filter(), reduce() ΠΈ Π»ΡΠΌΠ±Π΄Π°-ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ.
ΠΠ΅ΡΠ²ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ
ΠΠΎΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ², ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΡΡΠΈΠ»Ρ.
Π€ΡΠ½ΠΊΡΠΈΡ ΡΠΎΠΆΠ΄Π΅ΡΡΠ²Π° (identity function), ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ²ΠΎΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ, Π²ΡΡΠ°ΠΆΠ°Π΅ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ Python Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° def ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
identity() ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ x ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π΅Π³ΠΎ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅.
ΠΡΠ»ΠΈ Π²Ρ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ΡΡ Π»ΡΠΌΠ±Π΄Π°-ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠ΅ΠΉ, Π²Π°Ρ ΠΊΠΎΠ΄ Π±ΡΠ΄Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ:
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ·:
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅. Π ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠΈ ΡΠ²ΡΠ·Π°Π½Π½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΠ°ΠΏΡΠΎΡΠΈΠ², ΡΠ²ΠΎΠ±ΠΎΠ΄Π½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π½Π΅ ΡΠ²ΡΠ·Π°Π½Π° ΠΈ ΠΌΠΎΠΆΠ΅Ρ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ Π² ΡΠ΅Π»Π΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ. Π‘Π²ΠΎΠ±ΠΎΠ΄Π½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠΎΠΉ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π² ΠΏΡΠΈΠ»Π°Π³Π°Π΅ΠΌΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΠ°ΠΏΠΈΡΠ΅ΠΌ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ 1 ΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΡΠΈΠΌΠ΅Π½ΠΈΠΌ ΡΠΊΠ°Π·Π°Π½Π½ΡΡ Π²ΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ ΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, Π·Π°ΠΊΠ»ΡΡΠΈΠ² ΡΡΠ½ΠΊΡΠΈΡ ΠΈ Π΅Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π² ΠΊΡΡΠ³Π»ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ:
Π‘ΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ β ΡΡΠΎ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ Π»ΡΠΌΠ±Π΄Π°-ΠΈΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π΄Π»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ. ΠΠ½ΠΎ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π·Π°ΠΌΠ΅Π½Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° x Π½Π° 2:
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΎΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π°. ΠΠΎΡΡΠΎΠΌΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ ΠΊΠΎΠ΄ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΡΡΠ΅ΡΠΏΠΎΠΌΡΠ½ΡΡΠ°Ρ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΡ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½Π° Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ:
ΠΡΠ΅ ΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΎΠ΄ΠΈΠ½ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ Π·Π°ΠΌΠ΅ΡΠΈΠ»ΠΈ, ΡΡΠΎ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π»ΡΠΌΠ±Π΄Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Π½Π΅ ΠΈΠΌΠ΅ΡΡ ΠΊΡΡΠ³Π»ΡΡ ΡΠΊΠΎΠ±ΠΎΠΊ Π²ΠΎΠΊΡΡΠ³ Π½ΠΈΡ . Π€ΡΠ½ΠΊΡΠΈΠΈ Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ (ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°) Π²ΡΡΠ°ΠΆΠ°ΡΡΡΡ Π² Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΡ Python, ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΈ ΡΠ°Π·Π΄Π΅Π»ΡΡ ΠΈΡ Π·Π°ΠΏΡΡΠΎΠΉ (,), Π½ΠΎ Π½Π΅ Π·Π°ΠΊΠ»ΡΡΠ°Ρ ΠΈΡ Π² ΠΊΡΡΠ³Π»ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ:
ΠΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΡ full_name, ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΄Π²Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΡΠΎΠΊΡ, ΠΈΠ½ΡΠ΅ΡΠΏΠΎΠ»ΠΈΡΡΡΡΡΡ Π΄Π²Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°: ΠΏΠ΅ΡΠ²ΡΠΉ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ. ΠΠ°ΠΊ ΠΈ ΠΎΠΆΠΈΠ΄Π°Π»ΠΎΡΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π»ΡΠΌΠ±Π΄Ρ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΡΠ΅Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Π±Π΅Π· ΡΠΊΠΎΠ±ΠΎΠΊ, ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΠΎΠ±ΡΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ Python, Ρ ΠΊΡΡΠ³Π»ΡΠΌΠΈ ΡΠΊΠΎΠ±ΠΊΠ°ΠΌΠΈ Π²ΠΎΠΊΡΡΠ³ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ².
ΠΠ½ΠΎΠ½ΠΈΠΌΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ
Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Ρ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ·Π°ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ:
Π ΠΎΡΡΠ°Π²ΡΠ΅ΠΉΡΡ ΡΠ°ΡΡΠΈ ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠΈ ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΡΠ°Π·Π΄Π΅Π»Π° Π²Ρ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ ΡΠ΅ΡΠΌΠΈΠ½ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΡ.
Π Π±ΡΠΊΠ²Π°Π»ΡΠ½ΠΎΠΌ ΡΠΌΡΡΠ»Π΅, Π°Π½ΠΎΠ½ΠΈΠΌΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ β ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ Π±Π΅Π· ΠΈΠΌΠ΅Π½ΠΈ. Π Python Π°Π½ΠΎΠ½ΠΈΠΌΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° lambda. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Ρ Π΄Π²ΡΠΌΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π»ΡΠΌΠ±Π΄Ρ, Π½ΠΎ Π½Π΅ ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ.
ΠΡΡΠ΅ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΄Π²Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΈΡ ΡΡΠΌΠΌΡ.
ΠΠΎΠΌΠΈΠΌΠΎ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΈ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Python ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΡΡΠΎΠΉ ΠΈΠ΄Π΅ΠΈ, ΡΡΠΎ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅Π»ΡΠ·Ρ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ·Π²Π°ΡΡ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π² ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ΅ Python:
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΡΡΠ°Π½ΡΠ»ΡΡΠΎΡΠ°, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½Π°Ρ ΡΠ΅ΡΠ΅Π· ΡΠΈΠΌΠ²ΠΎΠ» ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΡ (_).
ΠΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΉ ΠΊΠΎΠ΄ Π² ΠΌΠΎΠ΄ΡΠ»Π΅ Python. Π Π°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΠΉΡΠ΅ _ Π² ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ΅ ΠΊΠ°ΠΊ ΠΏΠΎΠ±ΠΎΡΠ½ΡΠΉ ΡΡΡΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΌ ΠΌΡ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈΡΡ. Π ΠΌΠΎΠ΄ΡΠ»Π΅ Python Π²Ρ Π±Ρ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π»ΠΈ Π»ΡΠΌΠ±Π΄Π°-ΠΈΠΌΡ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π»ΠΈ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΡ. ΠΡ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΈ Π΄Π²Π° ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° ΠΏΠΎΠ·ΠΆΠ΅ Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅. Π ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ΅ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅ (_) ΠΏΡΠΈΠ²ΡΠ·Π°Π½ΠΎ ΠΊ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌΡ Π²ΡΡΠΈΡΠ»Π΅Π½Π½ΠΎΠΌΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ.
ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΠ± ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΠΎΠ³ΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π° Π² Python, ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΡ Π² Python (The Meaning of Underscores in Python).
ΠΡΡΠ³ΠΎΠΉ ΡΠ°Π±Π»ΠΎΠ½, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π² Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ , ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ JavaScript, β ΡΡΠΎ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠΈ Python. ΠΡΠΎ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ (IIFE β Immediately Invoked Function Expression, ΠΏΡΠΎΠΈΠ·Π½ΠΎΡΠΈΡΡΡ Β«iffyΒ»). ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΡΡΠ΅ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½Π°Ρ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ, Π° Π·Π°ΡΠ΅ΠΌ ΡΡΠ°Π·Ρ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Ρ Π΄Π²ΡΠΌΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ (2 ΠΈ 3). ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 5, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠΌΠΌΠΎΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ².
ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² Π² ΡΡΠΎΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΡΠΎΡ ΡΠΎΡΠΌΠ°Ρ, ΡΡΠΎΠ±Ρ Π²ΡΠ΄Π΅Π»ΠΈΡΡ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΠΉ Π°ΡΠΏΠ΅ΠΊΡ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠ΅Π½ΠΈΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ Π½Π° Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΡ Π² Python ΠΊΠ°ΠΊ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡΠΎΡΠΊΠΎΠΌ ΡΠΏΠΎΡΠΎΠ±Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Ρ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΎΠ΄Π½Ρ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈΠ»ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΎΠ΄Π½Ρ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ.
ΠΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ°, ΠΏΡΠΈΠ½ΠΈΠΌΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ (Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΡΡ ΠΈΠ»ΠΈ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΡ) Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°, ΠΊΠ°ΠΊ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ Π½Π°Π΄ΡΠΌΠ°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅:
Python ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ° Π² Π²ΠΈΠ΄Π΅ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈΠ»ΠΈ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅. ΠΡΠΈΠΌΠ΅ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π²ΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ° map(), filter(), functools.reduce(), Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠ°ΠΊ sort(), sorted(), min() ΠΈ max(). ΠΡ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ Π²ΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ° Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Β«Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉΒ».
ΠΡΠΌΠ±Π΄Π° ΠΈ ΠΎΠ±ΡΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ
ΠΡΠ° ΡΠΈΡΠ°ΡΠ° ΠΈΠ· ΡΠ°ΡΡΠΎ Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡΡ Π²ΠΎΠΏΡΠΎΡΠΎΠ² ΠΏΠΎ Python Design and History FAQ, ΠΏΠΎΡ ΠΎΠΆΠ΅, Π·Π°Π΄Π°Π΅Ρ ΡΠΎΠ½ Π² ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ ΠΎΠ±ΡΠ΅Π³ΠΎ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠΉ Π² Python:
Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Π»ΡΠΌΠ±Π΄Π° ΡΡΠ½ΠΊΡΠΈΠΉ Π² Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ , Π³Π΄Π΅ ΠΎΠ½ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ, Π»ΡΠΌΠ±Π΄Ρ Π² Python ΡΠ²Π»ΡΡΡΡΡ Π»ΠΈΡΡ ΡΠΎΠΊΡΠ°ΡΠ΅Π½Π½ΠΎΠΉ Π·Π°ΠΏΠΈΡΡΡ, Π΅ΡΠ»ΠΈ Π²Ρ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π»Π΅Π½ΠΈΠ²Ρ, ΡΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΡ. (Source)
Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠΉΡΠ΅ ΡΡΠΎΠΌΡ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ ΡΠ΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π²Π°Ρ ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ lambda. ΠΠ° ΠΏΠ΅ΡΠ²ΡΠΉ Π²Π·Π³Π»ΡΠ΄, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ³Π»Π°ΡΠΈΡΡΡΡ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΡ β ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΠ°Ρ Π°ΡΠΎΠΌ, ΡΠΎΠΊΡΠ°ΡΠ°ΡΡΠΈΠΌ ΠΊΠΎΠ΄ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ. Π ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΠ°Π·Π΄Π΅Π»Π°Ρ ΠΎΡΠ²Π΅ΡΠ΅Π½Ρ ΠΎΠ±ΡΠΈΠ΅ ΡΠ΅ΡΡΡ ΠΈ ΡΠΎΠ½ΠΊΠΈΠ΅ ΡΠ°Π·Π»ΠΈΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΠ±ΡΡΠ½ΡΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ Python ΠΈ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ.
Π€ΡΠ½ΠΊΡΠΈΠΈ
Π ΡΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°Π΄Π°ΡΡΡΡ Π²ΠΎΠΏΡΠΎΡΠΎΠΌ, ΡΡΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈΠ°Π»ΡΠ½ΠΎ ΠΎΡΠ»ΠΈΡΠ°Π΅Ρ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΡ, ΠΏΡΠΈΠ²ΡΠ·Π°Π½Π½ΡΡ ΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΎΡ ΠΎΠ±ΡΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Ρ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΎΠΉ return: ΠΊΠ°ΠΆΠ΅ΡΡΡ ΡΡΠΎ ΠΏΠΎΡΡΠΈ Π½ΠΈΡΠ΅Π³ΠΎ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ, ΠΊΠ°ΠΊ Python Π²ΠΈΠ΄ΠΈΡ ΡΡΠ½ΠΊΡΠΈΡ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° return, ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ, ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠΉ Ρ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ lambda.
ΠΠΎΠ΄ΡΠ»Ρ dis ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π° Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π° Python, ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ Python:
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΡ, ΡΡΠΎ dis() ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΈΡΠ°Π΅ΠΌΡΡ Π²Π΅ΡΡΠΈΡ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π° Python, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Python Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΠΎΠ±ΡΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΡΠ½ΠΊΡΠΈΠΈ:
ΠΠ°ΠΉΡ-ΠΊΠΎΠ΄, ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΉ Python, ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ² Π΄Π»Ρ ΠΎΠ±Π΅ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ: ΠΈΠΌΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ def, ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΡ Python ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅.
Traceback
ΠΠΎΡ ΡΠΎ ΠΆΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, Π²ΡΠ·Π²Π°Π½Π½ΠΎΠ΅ Π² Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ:
ΠΠΎΡΠΌΠ°Π»ΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ Π²ΡΠ·ΡΠ²Π°Π΅Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΡ ΠΎΡΠΈΠ±ΠΊΡ, Π½ΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π±ΠΎΠ»Π΅Π΅ ΡΠΎΡΠ½ΠΎΠΉ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠ΅, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Ρ Π½Π΅Π΅ Π΅ΡΡΡ ΠΈΠΌΡ ΡΡΠ½ΠΊΡΠΈΠΈ, div_zero.
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ
ΠΠ°ΠΊ Π²Ρ Π²ΠΈΠ΄Π΅Π»ΠΈ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ ΡΠ°Π·Π΄Π΅Π»Π°Ρ , Π»ΡΠΌΠ±Π΄Π° ΠΈΠΌΠ΅Π΅Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΡΠ»ΠΈΡΠΈΡ ΠΎΡ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, Π»ΡΠΌΠ±Π΄Π° ΠΈΠΌΠ΅Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ:
ΠΡΡΡΡΡΡΠ²ΠΈΠ΅ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠΉ
ΠΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ. Π Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ°ΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ, ΠΊΠ°ΠΊ return, pass, assert ΠΈΠ»ΠΈ raise, Π²ΡΠ·ΠΎΠ²ΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ SyntaxError. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ assert ΠΊ ΡΠ΅Π»Ρ Π»ΡΠΌΠ±Π΄Ρ:
ΠΡΠΎΡ Π½Π°Π΄ΡΠΌΠ°Π½Π½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΡΡΠΈΠΉ ΡΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ assert, ΡΡΠ²Π΅ΡΠΆΠ΄Π°Π΅ΡΡΡ ΡΡΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ x ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 2. ΠΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Π²ΡΠ΄Π°Π΅Ρ SyntaxError ΠΏΡΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΌ Π°Π½Π°Π»ΠΈΠ·Π΅ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ assert Π² ΡΠ΅Π»Π΅ Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ.
ΠΠ΄ΠΈΠ½ΠΎΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅
Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΎΠ±ΡΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΎΠ΄Π½ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅. Π₯ΠΎΡΡ Π² ΡΠ΅Π»Π΅ Π»ΡΠΌΠ±Π΄Ρ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°Π·Π±ΠΈΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΠΊ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΊΠΎΠ±ΠΊΠΈ ΠΈΠ»ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡΡΡΠΎΡΠ½ΡΡ ΡΡΡΠΎΠΊΡ, ΠΎΠ½ΠΎ ΠΎΡΡΠ°Π΅ΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ:
ΠΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΡΠΎΠΊΡ Β«oddΒ», Π΅ΡΠ»ΠΈ Π»ΡΠΌΠ±Π΄Π°-Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π½Π΅ΡΠ΅ΡΠ½ΡΠΉ, ΠΈ Β«evenΒ», ΠΊΠΎΠ³Π΄Π° Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΡΠ΅ΡΠ½ΡΠΉ. ΠΠ½ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ Π½Π° Π΄Π²Π΅ ΡΡΡΠΎΠΊΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ Π² ΡΠΊΠΎΠ±ΠΊΠ°Ρ , Π½ΠΎ ΠΎΡΡΠ°Π΅ΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ.
ΠΠ½Π½ΠΎΡΠ°ΡΠΈΠΈ ΡΠΈΠΏΠΎΠ²
ΠΡΠ»ΠΈ Π²Ρ Π½Π°ΡΠ°Π»ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π°Π½ΠΎΡΠ°ΡΠΈΠΈ ΡΠΈΠΏΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅ΠΏΠ΅ΡΡ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π² Python, Ρ Π²Π°Ρ Π΅ΡΡΡ Π΅ΡΠ΅ ΠΎΠ΄Π½Π° Π²Π΅ΡΠΊΠ°Ρ ΠΏΡΠΈΡΠΈΠ½Π° ΠΏΡΠ΅Π΄ΠΏΠΎΡΠ΅ΡΡΡ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΡΠΌ Python. Π Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅Ρ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ° Π΄Π»Ρ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ:
IIFE
ΠΡ ΡΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΠΊΠ° ΡΡΠ½ΠΊΡΠΈΠΈ:
ΠΠ½Π΅ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΡ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅. ΠΡΠΎ ΠΏΡΡΠΌΠΎΠ΅ ΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΡ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π°. ΠΠΎ, ΡΡΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π»ΡΠΌΠ±Π΄Ρ Π² ΡΡΠ½ΠΊΡΠΈΡ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ map(), filter() ΠΈΠ»ΠΈ functools.reduce().
ΠΡΠ³ΡΠΌΠ΅Π½ΡΡ
ΠΠ°ΠΊ ΠΈ ΠΎΠ±ΡΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ def, Π»ΡΠΌΠ±Π΄Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π²ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ². ΠΡΠΎ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ:
Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΈΠ»Π»ΡΡΡΡΠΈΡΡΡΡ ΠΎΠΏΡΠΈΠΈ, Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π² Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ:
ΠΠ΅ΠΊΠΎΡΠ°ΡΠΎΡΡ
Π Python Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ β ΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ°Π±Π»ΠΎΠ½Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ»ΠΈ ΠΊΠ»Π°ΡΡΡ. ΠΠ±ΡΡΠ½ΠΎ ΡΡΠΎ Π²ΡΡΠ°ΠΆΠ°Π΅ΡΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠΎΠΌ @decorator Ρ ΠΏΡΠ΅ΡΠΈΠΊΡΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ:
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ some_decorator() β ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊ decorated_function(), ΡΠ°ΠΊ ΡΡΠΎ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ decorated_function(2) ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
decorated_function() ΠΏΠ΅ΡΠ°ΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ With argument βPythonβ, Π½ΠΎ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠ΅ΡΠ°ΡΠ°Π΅Ρ Calling function βdecorated_functionβ.
ΠΠ΅ΠΊΠΎΡΠ°ΡΠΎΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ ΠΊ Π»ΡΠΌΠ±Π΄Π΅. Π₯ΠΎΡΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅ΠΊΠΎΡΠΈΡΠΎΠ²Π°ΡΡ Π»ΡΠΌΠ±Π΄Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° @decorator, Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ β ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π»ΡΠΌΠ±Π΄Π°:
add_two(), Π΄Π΅ΠΊΠΎΡΠΈΡΠΎΠ²Π°Π½Π° @trace Π² ΡΡΡΠΎΠΊΠ΅ 11, Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ 3 Π² ΡΡΡΠΎΠΊΠ΅ 15. Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΡΠΎΠ³ΠΎ, Π² ΡΡΡΠΎΠΊΠ΅ 18 ΡΡΠ°Π·Ρ ΠΆΠ΅ Π²ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΡ ΠΈ Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅ΡΡΡ Π² Π²ΡΠ·ΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄Π° trace(), Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ°. ΠΠΎΠ³Π΄Π° Π²Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΠ΅ ΠΊΠΎΠ΄ Π²ΡΡΠ΅, Π²Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
ΠΠ΅ΠΊΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π»ΡΠΌΠ±Π΄Ρ ΡΠ°ΠΊΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π΄Π»Ρ ΡΠ΅Π»Π΅ΠΉ ΠΎΡΠ»Π°Π΄ΠΊΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΄Π»Ρ ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ Π»ΡΠΌΠ±Π΄Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠΉ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ° ΠΈΠ»ΠΈ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ Ρ map():
ΠΠ΅ΡΠ²ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ map() β ΡΡΠΎ Π»ΡΠΌΠ±Π΄Π°, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΌΠ½ΠΎΠΆΠ°Π΅Ρ ΡΠ²ΠΎΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π½Π° 2. ΠΡΠ° Π»ΡΠΌΠ±Π΄Π° Π΄Π΅ΠΊΠΎΡΠΈΡΠΎΠ²Π°Π½Π° trace(). ΠΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅Ρ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ [0, 2, 4] ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠΏΠΈΡΠΎΠΊ, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° range(3). range(3) ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΡΡΠΌ ΡΠΏΠΈΡΠΊΠΎΠΌ [0, 1, 2].
ΠΠ°ΠΌΡΠΊΠ°Π½ΠΈΠ΅
ΠΠ°ΠΌΡΠΊΠ°Π½ΠΈΠ΅ β ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΊΠ°ΠΆΠ΄Π°Ρ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ, ΠΊΡΠΎΠΌΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π² ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΏΡΠΈΠ²ΡΠ·Π°Π½Π° ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ. Π ΡΡΡΠ½ΠΎΡΡΠΈ, Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΡΠ΅Π΄Ρ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΠ½ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ, ΠΈ ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΠΎΠ³ΡΡ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΠΈΠ· Π»ΡΠ±ΠΎΠ³ΠΎ ΠΌΠ΅ΡΡΠ°. ΠΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΠΎΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΡ ΡΡΠΎ ΠΊΠΎΠ³Π΄Π° ΡΡΠ½ΠΊΡΠΈΠΈ Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΡΠ΅Π³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ° ΠΈΠΌΠ΅ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ°.
ΠΠΎΠ½ΡΡΠΈΡ Π»ΡΠΌΠ±Π΄Ρ ΠΈ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΡ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠ²ΡΠ·Π°Π½Ρ, Ρ ΠΎΡΡ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΡΠΌΠΈ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΡΠΌΠΈ. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ·ΡΠΊΠΈ ΠΈΠΌΠ΅ΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π΄Π»Ρ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΡ ΠΈΠ»ΠΈ Π»ΡΠΌΠ±Π΄Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Groovy Ρ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΠΌ Π±Π»ΠΎΠΊΠΎΠΌ ΠΊΠΎΠ΄Π° Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Closure) ΠΈΠ»ΠΈ Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Java Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ Π΄Π»Ρ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΡ).
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΡ, ΠΏΠΎΡΡΡΠΎΠ΅Π½Π½ΠΎΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ±ΡΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Python:
outer_func() Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ inner_func(), Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΡΠΈΡΠ»ΡΠ΅Ρ ΡΡΠΌΠΌΡ ΡΡΠ΅Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ²:
Π§ΡΠΎΠ±Ρ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ outer_func() ΠΈ inner_func(), outer_func() Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΡΡΠΈ ΡΠ°Π·Π° Π² ΡΠΈΠΊΠ»Π΅ for, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
Π ΡΡΡΠΎΠΊΠ΅ 9 ΠΊΠΎΠ΄Π° inner_func(), Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠΉ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ outer_func(), ΠΏΡΠΈΠ²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΊ ΠΈΠΌΠ΅Π½ΠΈ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΡ. Π ΡΡΡΠΎΠΊΠ΅ 5 inner_func() Π·Π°Ρ Π²Π°ΡΡΠ²Π°Π΅Ρ x ΠΈ y, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ²ΠΎΠ΅ΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ, ΡΠ°ΠΊ ΡΡΠΎ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΡ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π΄Π²ΡΠΌΡ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΠΌΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ x ΠΈ y.
Π’ΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅ Π»ΡΠΌΠ±Π΄Π° ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΠ΅ΠΌ. ΠΠΎΡ ΡΠΎΡ ΠΆΠ΅ ΠΏΡΠΈΠΌΠ΅Ρ Ρ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ Python:
ΠΠΎΠ³Π΄Π° Π²Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π²ΡΡΠ΅ ΠΊΠΎΠ΄, Π²Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π²ΡΠ²ΠΎΠ΄:
Π ΡΡΡΠΎΠΊΠ΅ 6 outer_func() Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π»ΡΠΌΠ±Π΄Ρ ΠΈ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅Ρ Π΅Π΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΡ. Π ΡΡΡΠΎΠΊΠ΅ 3 ΡΠ΅Π»ΠΎ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠΈ ΡΡΡΠ»Π°Π΅ΡΡΡ Π½Π° x ΠΈ y. ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ y Π΄ΠΎΡΡΡΠΏΠ½Π° Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ, ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ x ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΠΊΠΎΠ³Π΄Π° Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ outer_func().
Π ΡΡΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ ΠΈ Π½ΠΎΡΠΌΠ°Π»ΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ, ΠΈ Π»ΡΠΌΠ±Π΄Π° Π²Π΅Π΄ΡΡ ΡΠ΅Π±Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ. Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π»ΡΠΌΠ±Π΄Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠ±ΠΌΠ°Π½ΡΠΈΠ²ΡΠΌ ΠΈΠ·-Π·Π° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π΅Π³ΠΎ ΠΎΡΠ΅Π½ΠΊΠΈ (Π²ΡΠ΅ΠΌΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΡΠΈΠ² Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ).
ΠΡΠ΅ΠΌΡ ΠΎΡΠ΅Π½ΠΊΠΈ
Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠΈΡΡΠ°ΡΠΈΡΡ , ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ ΡΠΈΠΊΠ»Π°ΠΌΠΈ, ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠΈ Python ΠΊΠ°ΠΊ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅Π»ΠΎΠ³ΠΈΡΠ½ΡΠΌ. ΠΡΠΎ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠ²ΡΠ·Π°Π½Ρ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ Π»ΡΠΌΠ±Π΄Ρ. Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΡΡ ΡΠ°Π·Π½ΠΈΡΡ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΠ±ΡΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Python.
Π‘Π½Π°ΡΠ°Π»Π° ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΡΠ΅ΠΌ ΡΡΠ΅Π½Π°ΡΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΎΠ±ΡΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ:
Π Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ n Π²ΡΡΠΈΡΠ»ΡΠ΅ΡΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ, Π² ΡΡΡΠΎΠΊΠ΅ 9, ΠΊΠΎΠ³Π΄Π° ΡΡΠ½ΠΊΡΠΈΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ Π² ΡΠΏΠΈΡΠΎΠΊ: funcs.append (wrap (n)).
Π’Π΅ΠΏΠ΅ΡΡ, ΠΏΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΎΠΉ ΠΆΠ΅ Π»ΠΎΠ³ΠΈΠΊΠΈ Ρ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ, Π½Π°Π±Π»ΡΠ΄Π°Π΅ΠΌ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅:
ΠΠ΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΈΠ·-Π·Π° ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ n, ΠΊΠ°ΠΊ ΠΎΠ½Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π°, ΡΠ²ΡΠ·Π°Π½Π° Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ. ΠΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΡ Python Π² ΡΡΡΠΎΠΊΠ΅ 4 ΡΠ²Π»ΡΠ΅ΡΡΡ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΠ΅ΠΌ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π·Π°Ρ Π²Π°ΡΡΠ²Π°Π΅Ρ n, ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ, ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ f ΠΈΠ· ΡΡΡΠΎΠΊΠΈ 7 Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ n ΡΠ°Π²Π½ΠΎ three.
Π§ΡΠΎΠ±Ρ ΡΠ΅ΡΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°Π·Π½Π°ΡΠΈΡΡ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΡΠΌΠ±Π΄Π° Π²Π΅Π΄Π΅Ρ ΡΠ΅Π±Ρ ΠΊΠ°ΠΊ Π½ΠΎΡΠΌΠ°Π»ΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ Π² ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ². Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π»ΡΠΌΠ±Π΄Π°-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ n ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ n ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π»Ρ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ n. ΠΡΠΌΠ±Π΄Π° ΠΌΠΎΠΆΠ΅Ρ Π±Ρ Π±ΡΡΡ Π·Π°ΠΏΠΈΡΠ°Π½Π° ΠΊΠ°ΠΊ lambda x=n: print(x) ΠΈ Π²Π΅ΡΠ½ΡΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ.
ΠΡΠΌΠ±Π΄Π° Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π±Π΅Π· Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° Π² ΡΡΡΠΎΠΊΠ΅ 7 ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ n, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ΅ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ.
Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΡΠΌΠ±Π΄Ρ
ΠΡΠΌΠ±Π΄Ρ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΎΠ±ΡΡΠ½ΡΠΌ ΡΡΠ½ΠΊΡΠΈΡΠΌ. ΠΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊ unittest, ΡΠ°ΠΊ ΠΈ doctest.
unittest
ΠΠΎΠ΄ΡΠ»Ρ unittest ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠΈ Python Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΎΠ±ΡΡΠ½ΡΠΌ ΡΡΠ½ΠΊΡΠΈΡΠΌ:
LambdaTest ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠ΅ΡΡΠΎΠ²ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Ρ ΡΡΠ΅ΠΌΡ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΠ΅Π½Π°ΡΠΈΠΉ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ addtwo(), ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΊΠ°ΠΊ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΡ. ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Python-ΡΠ°ΠΉΠ»Π° lambda_unittest.py, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π³ΠΎ LambdaTest, ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌΡ:
ΠΠ°ΠΊ ΠΈ ΠΎΠΆΠΈΠ΄Π°Π»ΠΎΡΡ, Ρ Π½Π°Ρ Π΅ΡΡΡ Π΄Π²Π° ΡΡΠΏΠ΅ΡΠ½ΡΡ ΡΠ΅ΡΡΠΎΠ²ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΈ ΠΎΠ΄ΠΈΠ½ ΡΠ±ΠΎΠΉ Π΄Π»Ρ test_add_three: ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ°Π²Π΅Π½ 5, Π½ΠΎ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ°Π²Π΅Π½ 6. ΠΡΠΎΡ ΡΠ±ΠΎΠΉ Π²ΡΠ·Π²Π°Π½ ΠΏΡΠ΅Π΄Π½Π°ΠΌΠ΅ΡΠ΅Π½Π½ΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ Π² ΡΠ΅ΡΡΠΎΠ²ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅. ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ³ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° Ρ 6 Π½Π° 5 ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΠΈΡ Π²ΡΠ΅ ΡΠ΅ΡΡΡ Π΄Π»Ρ LambdaTest.
doctest
ΠΠΎΠ΄ΡΠ»Ρ doctest ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΠΉ ΠΊΠΎΠ΄ Python ΠΈΠ· docstring Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ΅ΡΡΠΎΠ². Π₯ΠΎΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠΉ Python Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠΈΠΏΠΈΡΠ½ΡΡ docstring, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ ΡΡΡΠΎΠΊΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ __doc__ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π»ΡΠΌΠ±Π΄Ρ:
Π’Π΅ΡΡ doctest Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΊ ΡΡΠ½ΠΊΡΠΈΠΈ lambda addtwo() ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΡΠ΅ ΠΆΠ΅ ΡΠ΅ΡΡΡ, ΡΡΠΎ ΠΈ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅.
ΠΠΎΠ³Π΄Π° Π²Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΠ΅ ΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ doctest.testmod(), Π²Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
ΠΠ΅ΡΠ΄Π°ΡΠ½ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΠ΅ΡΡΠ° ΠΎΡ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠ±ΠΎΡ, ΠΎΠ±ΡΡΡΠ½Π΅Π½Π½ΠΎΠ³ΠΎ Π² Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΡ ΡΠ΅ΡΡΠΎΠ² Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ docstring ΠΊ Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ΅ΡΠ΅Π· ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠ΅ __doc__ Π΄Π»Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠΈ. Π₯ΠΎΡΡ ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ docstring Π²ΡΠ΅ ΠΆΠ΅ Π»ΡΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ, Π° Π½Π΅ Π΄Π»Ρ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΠ»ΠΎΡΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΡ Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ
ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π½Π°ΠΏΠΈΡΠ°Π½Ρ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Python, Π±ΡΠ΄ΡΡ ΠΊΠ²Π°Π»ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Ρ ΠΊΠ°ΠΊ Π·Π»ΠΎΡΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΡ.
ΠΡΠ»ΠΈ Π²Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΠ΅, ΡΡΠΎ ΠΏΡΡΠ°Π΅ΡΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎ-ΡΠΎ, ΡΡΠΎ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΡΡΠΎ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΠΏΡΠΈΠ·Π½Π°ΠΊ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π½ΠΎΡΠΌΠ°Π»ΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ Π»ΡΡΡΠ΅. Π₯ΠΎΡΠΎΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ docstring Π΄Π»Ρ Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅. ΠΠΎΠΏΡΡΠΊΠ° ΠΏΡΠ΅ΠΎΠ΄ΠΎΠ»Π΅ΡΡ ΡΠΎΡ ΡΠ°ΠΊΡ, ΡΡΠΎ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΡ Python Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π΅ΡΠ΅ ΠΎΠ΄Π½ΠΈΠΌ ΠΊΡΠ°ΡΠ½ΡΠΌ ΡΠ»Π°Π³ΠΎΠΌ.
Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°Π·Π΄Π΅Π»Ρ ΠΈΠ»Π»ΡΡΡΡΠΈΡΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π»ΡΠΌΠ±Π΄Ρ, ΠΊΠΎΡΠΎΡΡΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΠ·Π±Π΅Π³Π°ΡΡ. Π’Π°ΠΊΠΈΠΌΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠΈΡΡΠ°ΡΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ Π»ΡΠΌΠ±Π΄Π°-ΠΊΠΎΠ΄Π° Python ΠΊΠΎΠ΄ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°Π±Π»ΠΎΠ½:
ΠΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ
ΠΠΎΠΏΡΡΠΊΠ° Π²ΡΠ·Π²Π°ΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π² Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΈ Python Π·Π°ΡΡΠ°Π²ΠΈΡ Π²Π°Ρ Π·Π°Π΄ΡΠΌΠ°ΡΡΡΡ Π΄Π²Π°ΠΆΠ΄Ρ. ΠΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ, Π½ΠΎ Π»ΡΡΡΠ΅ ΠΈΠ·Π±Π΅Π³Π°ΡΡ ΡΠ΅Π³ΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ:
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌ Π² Π»ΡΠΌΠ±Π΄Π°-ΡΠ΅Π»Π΅ Python, ΠΎΠ±Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΡΡ Π² ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠΎΡΡΠΎΠΈΡ Π² Π°Π±ΡΡΡΠ°Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π²ΡΠ·ΠΎΠ²Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ throw(). Π‘Π»Π΅Π΄ΡΠ΅Ρ ΠΈΠ·Π±Π΅Π³Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΎΠ±Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΡΠΈ. ΠΡΠ»ΠΈ Π²Ρ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π΅ΡΠ΅ΡΡ Ρ ΡΡΠΈΠΌ ΡΠΈΠΏΠΎΠΌ ΠΊΠΎΠ΄Π°, Π²Π°ΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³Π° ΠΊΠΎΠ΄Π° Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±ΡΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΠ°Π³Π°Π΄ΠΎΡΠ½ΡΠΉ ΡΡΠΈΠ»Ρ
ΠΠ°ΠΊ ΠΈ Π² Π»ΡΠ±ΡΡ ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π²Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠΎΠ»ΠΊΠ½ΡΡΡΡΡ Ρ ΠΊΠΎΠ΄ Π½Π° Python, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΡΠ΄Π½ΠΎ ΡΠΈΡΠ°ΡΡ ΠΈΠ·-Π·Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΡΠΈΠ»Ρ. ΠΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠΈ, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΈΡ ΠΊΡΠ°ΡΠΊΠΎΡΡΠΈ, ΠΌΠΎΠ³ΡΡ ΡΠΏΠΎΡΠΎΠ±ΡΡΠ²ΠΎΠ²Π°ΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΡΠ΄Π½ΠΎ ΡΠΈΡΠ°ΡΡ.
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ Π»ΡΠΌΠ±Π΄Π°-ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½Π΅ΡΠ΄Π°ΡΠ½ΡΡ ΡΡΠΈΠ»Π΅ΠΉ:
ΠΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅ (_) ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π½Π° ΠΊΠΎΡΠΎΡΡΡ Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΡΡΡΠ»Π°ΡΡΡΡ Π² ΡΠ²Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅. ΠΠΎ Π² ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΡΠΈ _ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΊ ΡΠ°Π·Π½ΡΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ. ΠΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΡΠΌ ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³ΠΎΠΌ ΡΡΠΎΠ³ΠΎ Π»ΡΠΌΠ±Π΄Π°-ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ:
ΠΠΎ ΠΎΠ±ΡΠ΅ΠΌΡ ΠΏΡΠΈΠ·Π½Π°Π½ΠΈΡ, ΡΡΠΎ Π²ΡΠ΅ Π΅ΡΠ΅ ΡΡΡΠ΄Π½ΠΎ Π±ΡΠ΄Π΅Ρ ΡΠΈΡΠ°ΡΡ. ΠΡΠ΅ Π΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π»ΡΠΌΠ±Π΄Ρ, ΠΎΠ±ΡΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎΡ ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΠ°Π±Π΅Π»ΡΠ½ΡΠΌ, ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ² Π»ΠΎΠ³ΠΈΠΊΡ ΠΏΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΡΡΡΠΎΠΊΠ°ΠΌ ΠΈ Π²ΡΠ·ΠΎΠ²Π°ΠΌ ΡΡΠ½ΠΊΡΠΈΠΉ:
ΠΡΠΎ Π²ΡΠ΅ Π΅ΡΠ΅ Π½Π΅ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ, Π½ΠΎ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π²Π°ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΉ ΠΏΡΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΠΈ, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠΉ Python, Π±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±ΠΎΡΠΈΡΠ°Π΅ΠΌΡΡ . Π ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΠ»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌ Π²Ρ Π½Π°ΡΡΠΈΡΠ΅ΡΡ Π·Π°ΠΌΠ΅Π½ΡΡΡ map() ΠΈ Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π° ΡΠΏΠΈΡΠΊΠΈ ΠΈΠ»ΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ-Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΡ. ΠΡΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ»ΡΡΡΠΈΡ ΡΠΈΡΠ°Π±Π΅Π»ΡΠ½ΠΎΡΡΡ ΠΊΠΎΠ΄Π°.
ΠΠ»Π°ΡΡΡ Python
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅, Π½ΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΈΡΠ°ΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΊΠ»Π°ΡΡΠ° ΠΊΠ°ΠΊ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠΈ Python. Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Python, Π½ΠΎ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅Ρ Π½Π΅ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΠΉ ΠΊΠΎΠ΄, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠΉ Π½Π° Π»ΡΠΌΠ±Π΄Π΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΌΠ΅ΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ __str__ ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π»ΡΠΌΠ±Π΄Ρ. ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ, brand ΠΈ year β ΡΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π°, ΡΠ°ΠΊΠΆΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠΉ Π²ΠΌΠ΅ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈΠ»ΠΈ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠ²:
Π₯ΠΎΡΡ flake8 Π½Π΅ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠΉ Π² ΡΠ²ΠΎΠΉΡΡΠ²Π°Ρ , ΠΈΡ ΡΡΡΠ΄Π½ΠΎ ΡΠΈΡΠ°ΡΡ ΠΈ ΠΎΠ½ΠΈ ΠΏΠΎΠ΄Π²Π΅ΡΠΆΠ΅Π½Ρ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌ ΠΈΠ·-Π·Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΡΡΠΎΠΊ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ _brand ΠΈ _year.
ΠΠΆΠΈΠ΄Π°Π΅ΡΡΡ, ΡΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ __str__ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
brand Π±ΡΠ΄Π΅Ρ Π½Π°ΠΏΠΈΡΠ°Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΊΠΎΠ΄Π°, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ Π½Π° Python, ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°ΠΉΡΠ΅ ΠΎΠ±ΡΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π΅ΡΡΡ ΡΠ»ΡΡΠ°ΠΈ, Π² ΠΊΠΎΡΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π»ΡΠΌΠ±Π΄Π°-ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ, ΠΊΠ°ΠΊ Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅.
ΠΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ
ΠΡΠΌΠ±Π΄Ρ Π² Python, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΡΠ²Π»ΡΡΡΡΡ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠΎΠΌ ΡΠΏΠΎΡΠΎΠ². ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΏΡΠΎΡΠΈΠ² Π»ΡΠΌΠ±Π΄Ρ Π² Python:
ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΠΆΠ°ΡΠΊΠΈΠ΅ Π΄Π΅Π±Π°ΡΡ, ΡΡΠ°Π²ΡΡΠΈΠ΅ ΠΏΠΎΠ΄ ΡΠΎΠΌΠ½Π΅Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π² Python, Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠΌΠ΅ΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΡΠ΅Π½Π½ΠΎΡΡΡ ΡΠ·ΡΠΊΡ Python ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ.
Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΈΠ»Π»ΡΡΡΡΠΈΡΡΡΡ ΡΡΠ΅Π½Π°ΡΠΈΠΈ, Π² ΠΊΠΎΡΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠΉ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ, Π½ΠΎ ΠΈ ΠΏΠΎΠΎΡΡΡΠ΅ΡΡΡ Π² ΠΊΠΎΠ΄Π΅ Python.
ΠΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ
ΠΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ map() ΠΈ filter(), Π° ΡΠ°ΠΊΠΆΠ΅ functools.reduce(), ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΌΠΈ Π² ΠΌΠΎΠ΄ΡΠ»Π΅ functools. Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΡΠ²Π»ΡΡΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌΠΈ ΠΈΠ»Π»ΡΡΡΡΠ°ΡΠΈΡΠΌΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ Ρ Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΊΠΎΠΌΠΏΠ°Π½ΡΠΎΠ½ΠΎΠ²:
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π²ΡΡΡΠ΅ΡΠΈΡΡ ΠΊΠΎΠ΄, ΠΏΠΎΡ ΠΎΠΆΠΈΠΉ Π½Π° ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠ΅ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ, Ρ ΠΎΡΡ ΠΈ Ρ Π±ΠΎΠ»Π΅Π΅ Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ. ΠΠΎ ΡΡΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Π΅ Π²Π°ΠΆΠ½ΠΎ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°ΡΡ ΡΡΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΡΡΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΈΠΌΠ΅ΡΡ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΡΠ΅ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠΈΡΠ°ΡΡΡΡ Π±ΠΎΠ»Π΅Π΅ Pythonic. Π ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΠ»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ Π»ΡΠΌΠ±Π΄Π°ΠΌ Π²Ρ ΡΠ·Π½Π°Π΅ΡΠ΅, ΠΊΠ°ΠΊ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ° ΠΈ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°ΡΡΠΈΠ΅ ΠΈΡ Π»ΡΠΌΠ±Π΄Ρ Π² Π΄ΡΡΠ³ΠΈΠ΅, Π±ΠΎΠ»Π΅Π΅ ΠΈΠ΄ΠΈΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠΎΡΠΌΡ.
ΠΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ
ΠΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π² Python β ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΊΠ»ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°. ΠΠ»ΡΡ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ. ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π½Π°ΠΏΡΡΠΌΡΡ Π²Π»ΠΈΡΠ΅Ρ Π½Π° Π°Π»Π³ΠΎΡΠΈΡΠΌ, ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΌΠΎΠΉ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ. ΠΠΎΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ:
ΠΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅, ΡΡΠΎ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ², ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΡ Π² Π²ΠΈΠ΄Π΅ ΡΡΡΠΎΠΊ. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° ΡΡΡΠΎΠΊΠΈ ΠΈ ΡΠΈΡΠ»Π°. ΠΡΠΈ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ΅ ΡΡΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ sorted() ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π»Π΅ΠΊΡΠΈΠΊΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π² ΡΠΏΠΈΡΠΊΠ΅ ΡΠ²Π»ΡΡΡΡΡ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ.
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ²Π»ΠΈΡΡΡ Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°Π·Π½Π°ΡΠΈΡΡ Π»ΡΠΌΠ±Π΄Ρ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠΌΡ ΠΊΠ»ΡΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»Π° ΡΠΈΡΠ»ΠΎ, ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠ΅ Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ:
UI Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ
ΠΡΠΎΡΡΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Tkinter, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½Π°Ρ Π½ΠΈΠΆΠ΅, Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π»ΡΠΌΠ±Π΄Ρ, Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ Reverse:
ΠΠ°ΠΆΠ°ΡΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ Β«ReverseΒ» Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΡΠΎΠ±ΡΡΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΡ, ΠΈΠ·ΠΌΠ΅Π½ΡΡ ΠΌΠ΅ΡΠΊΡ Ρ Lambda Calculus Π½Π° suluclaC adbmaL *:
Π wxPython, ΠΈ IronPython ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΎΠ±ΡΡΠΈΠΉ. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΎΠ±ΡΡΠΈΠΉ, Π½ΠΎ ΡΡΠ½ΠΊΡΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠΎΠΉ ΠΆΠ΅ ΡΠ΅Π»ΠΈ. Π ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΠΈΡΠΎΠ³Π΅ ΠΊΠΎΠ΄ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΡΠΌ ΠΈ ΠΌΠ΅Π½Π΅Π΅ ΠΌΠ½ΠΎΠ³ΠΎΡΠ»ΠΎΠ²Π½ΡΠΌ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π»ΡΠΌΠ±Π΄Ρ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ±ΡΠ΅ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΎΡΠ΅Π½Ρ ΠΌΠ°Π».
ΠΠ½ΡΠ΅ΡΠΏΡΠΈΡΠ°ΡΠΎΡ Python
ΠΠΎΠ³Π΄Π° Π²Ρ ΠΈΠ³ΡΠ°Π΅ΡΠ΅ Ρ ΠΊΠΎΠ΄ΠΎΠΌ Python Π² ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ΅, Π»ΡΠΌΠ±Π΄Π° ΡΠ°ΡΡΠΎ ΡΠ²Π»ΡΡΡΡΡ Π±Π»Π°Π³ΠΎΡΠ»ΠΎΠ²Π΅Π½ΠΈΠ΅ΠΌ. ΠΠ΅Π³ΠΊΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π±ΡΡΡΡΡΡ ΠΎΠ΄Π½ΠΎΡΡΡΠΎΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡΠ²ΠΈΠ΄ΡΡ ΡΠ²Π΅Ρ Π²Π½Π΅ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ°. ΠΡΠΌΠ±Π΄Ρ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π² ΠΈΠ½ΡΠ΅ΡΠΏΡΠΈΡΠ°ΡΠΎΡΠ΅, ΡΠ°Π΄ΠΈ Π±ΡΡΡΡΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΠΊΠ°, ΠΏΠΎΡ ΠΎΠΆΠΈ Π½Π° ΠΌΠ°ΠΊΡΠ»Π°ΡΡΡΡ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ±ΡΠΎΡΠΈΡΡ ΠΏΠΎΡΠ»Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ.
timeit
Π ΡΠΎΠΌ ΠΆΠ΅ Π΄ΡΡ Π΅, ΡΡΠΎ ΠΈ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΡ Π² ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ΅ Python, ΠΌΠΎΠ΄ΡΠ»Ρ timeit ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΠ΄Π°. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, timeit.timeit() ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ Π½Π°ΠΏΡΡΠΌΡΡ, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ ΠΊΠΎΠ΄ Python Π² ΡΡΡΠΎΠΊΡ. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΠΎΠ³Π΄Π° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Π² Π²ΠΈΠ΄Π΅ ΡΡΡΠΎΠΊΠΈ, timeit() Π½ΡΠΆΠ΅Π½ ΠΏΠΎΠ»Π½ΡΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ. Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΡΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅ΡΡΡ Π²ΡΠΎΡΡΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΡΠ΅Π΄Ρ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ NameError.
ΠΡΡΠ³ΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΡΠΌΠ±Π΄Ρ:
ΠΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΡΠ΅, Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΠ°Π±Π΅Π»ΡΠ½ΠΎ ΠΈ Π±ΡΡΡΡΠ΅Π΅ Π²Π²ΠΎΠ΄ΠΈΡΡΡ Π² ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ΅.
Monkey Patching
ΠΠ»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π½Π° ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΠΌΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ, ΠΊΠ°ΠΊ ΠΎΠΆΠΈΠ΄Π°Π΅ΡΡΡ, Π±ΡΠ΄ΡΡ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π±ΡΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΌΠΈ.
ΠΠΎΠΏΡΡΡΠΈΠΌ, Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΠΎ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ΅ΡΡΠ° Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ²ΡΠΎΡΡΡΡ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ Π»ΡΠΌΠ±Π΄Π° monkey patching ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΌΠΎΡΡ:
ΠΠΈΡΠΏΠ΅ΡΡΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ monkey patching ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠ· ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ (Π² ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ secrets ). ΠΡΠΌΠ±Π΄Π° Π½Π°Π·Π½Π°ΡΠ΅Π½Π½Π°Ρ Π΄Π»Ρ secrets.token_hex (), Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Ρ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ Π»ΡΠ±ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ token_hex() ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ. ΠΠ΅ΡΠ΅Π΄ Π²ΡΡ ΠΎΠ΄ΠΎΠΌ ΠΈΠ· Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠ° ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ token_hex() ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π²ΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ, ΡΡΠΎΠ±Ρ ΡΡΡΡΠ°Π½ΠΈΡΡ Π»ΡΠ±ΡΠ΅ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ±ΠΎΡΠ½ΡΠ΅ ΡΡΡΠ΅ΠΊΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ²Π»ΠΈΡΡΡ Π½Π° Π΄ΡΡΠ³ΠΈΠ΅ ΠΎΠ±Π»Π°ΡΡΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ token_hex().
Π‘ΡΠ΅Π΄Ρ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ unittest ΠΈ pytest, ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°ΡΡ ΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ Π½Π° Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΈΠΉ ΡΡΠΎΠ²Π΅Π½Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ.
Π‘ pytest, Π²ΡΠ΅ Π΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΌ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΡ, ΡΠΎΡ ΠΆΠ΅ ΠΏΡΠΈΠΌΠ΅Ρ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ»Π΅Π³Π°Π½ΡΠ½ΡΠΌ ΠΈ Π»Π°ΠΊΠΎΠ½ΠΈΡΠ½ΡΠΌ:
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ pytest secretts.token_hex() ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ΄Π΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π΄Π΅ΡΠ΅ΡΠΌΠΈΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ feedfacecafebeef, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅Π΅ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΡ ΡΠ΅ΡΡΠ°. monkeypatch ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π°ΠΌ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠ±Π»Π°ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ. Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ secretts.token_hex() Π² ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΠ΅ΡΡΠ°Ρ Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ monkey patching Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΎΠ±ΡΡΠ½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΡΠ° pytest Π΄Π°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
Π’Π΅ΡΡ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ, ΡΡΠΎ gen_token() Π±ΡΠ» Π²ΡΠΏΠΎΠ»Π½Π΅Π½, ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π±ΡΠ»ΠΈ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡΠΌΠΈ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΡΠ΅ΡΡΠ°.
ΠΠ»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ Π»ΡΠΌΠ±Π΄Π°ΠΌ
Π₯ΠΎΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π²Π΅ΡΠΊΠΈΠ΅ ΠΏΡΠΈΡΠΈΠ½Ρ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π»ΡΠΌΠ±Π΄Ρ, Π΅ΡΡΡ ΡΠ»ΡΡΠ°ΠΈ, ΠΊΠΎΠ³Π΄Π° Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ ΠΎΠ΄ΠΎΠ±ΡΡΠ΅ΡΡΡ. Π’Π°ΠΊ ΠΊΠ°ΠΊΠΎΠ²Ρ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ?
Π€ΡΠ½ΠΊΡΠΈΠΈ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ°, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ map(), filter() ΠΈ functools.reduce(), ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½Ρ Π² Π±ΠΎΠ»Π΅Π΅ ΡΠ»Π΅Π³Π°Π½ΡΠ½ΡΠ΅ ΡΠΎΡΠΌΡ Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌΠΈ, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΡΠΎ ΡΠΏΠΈΡΠΊΠΎΠΌ ΠΈΠ»ΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠΎΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ.
ΠΡΡΡΠΎΠ΅Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ map() ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅Ρ Π΅Π΅ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΈΠ· ΠΈΠ½ΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠ²ΠΎΠ΅Π³ΠΎ Π²ΡΠΎΡΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°. ΠΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠ²Π»ΡΡΡΡΡ ΡΡΡΠΎΠΊΠΈ, ΡΠΏΠΈΡΠΊΠΈ ΠΈ ΠΊΠΎΡΡΠ΅ΠΆΠΈ.
map() Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΈΡΠ΅ΡΠ°ΡΠΎΡ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ ΡΠΏΠΈΡΠΎΠΊ ΡΡΡΠΎΠΊ Π² Π½ΠΎΠ²ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ Ρ Π·Π°Π³Π»Π°Π²Π½ΡΠΌΠΈ Π±ΡΠΊΠ²Π°ΠΌΠΈ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ map() ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΠ°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠ·Π²Π°ΡΡ list() Π΄Π»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠ°, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ map(), Π² ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡ Π² ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ΅ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ Python.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ° ΡΠΏΠΈΡΠΊΠ° ΠΈΡΠΊΠ»ΡΡΠ°Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΈ Π²ΡΠ·ΠΎΠ²Π° Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠΈ:
Filter
ΠΡΡΡΠΎΠ΅Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ filter(), Π΅ΡΠ΅ ΠΎΠ΄Π½Π° ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½Π°Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½Π° Π² ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ°. ΠΠ½Π° ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΈ ΠΈΡΠ΅ΡΠ°ΡΠΈΠ²Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²ΡΠΎΡΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°. ΠΠ½Π° ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΈΡΠ΅ΡΠ°ΡΠΎΡ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ, ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠ°. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΈΠ»ΡΡΡΡΠ΅Ρ Π²ΡΠ΅ ΡΠ΅ΡΠ½ΡΠ΅ ΡΠΈΡΠ»Π° Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠΏΠΈΡΠΊΠ΅ ΡΠ΅Π»ΡΡ ΡΠΈΡΠ΅Π»:
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ filter() Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΈΡΠ΅ΡΠ°ΡΠΎΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡ list, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ Ρ Π·Π°Π΄Π°Π½Π½ΡΠΌ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ.
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ°Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ° ΡΠΏΠΈΡΠΊΠ°, Π΄Π°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
Reduce
ΠΠ°ΡΠΈΠ½Π°Ρ Ρ Python 3, Reduce() ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΠ»ΡΡ ΠΈΠ· Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΡΡΠ½ΠΊΡΠΈΡ ΠΌΠΎΠ΄ΡΠ»Ρ functools. Π§ΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ map() ΠΈ filter(), Π΅Π³ΠΎ ΠΏΠ΅ΡΠ²ΡΠ΅ Π΄Π²Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΡΠ²Π»ΡΡΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ ΠΈ ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΌ ΡΠΏΠΈΡΠΊΠΎΠΌ. ΠΠ½ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΡΠ΅ΡΡΠ΅Π³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠ΅Π³ΠΎ Π°ΠΊΠΊΡΠΌΡΠ»ΡΡΠΎΡΠ°. ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° reduce() ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΈ Π½Π°ΠΊΠ°ΠΏΠ»ΠΈΠ²Π°Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΈΡΠ΅ΡΠ°ΡΠΈΡ ΠΈΡΡΠ΅ΡΠΏΠ°Π½Π°.
Π§ΡΠΎΠ±Ρ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ reduce() ΠΊ ΡΠΏΠΈΡΠΊΡ ΠΏΠ°Ρ ΠΈ Π²ΡΡΠΈΡΠ»ΠΈΡΡ ΡΡΠΌΠΌΡ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ°ΡΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ°ΠΊ:
ΠΠΎΠ»Π΅Π΅ ΠΈΠ΄ΠΈΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΉ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ° Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° Π΄Π»Ρ sum() Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅:
ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΎΠ΅ ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΡΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΡΡΡΠ°Π½ΡΠ΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΡΠ²Π½ΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΏΠ΅ΡΠ²ΠΎΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΏΠ°ΡΡ ΠΈ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΡ:
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Π° ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΡ (_) ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ Python, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠΌ, ΡΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠΎΡΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ°ΡΡ.
sum() ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ, ΠΏΠΎΡΡΠΎΠΌΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ° Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π² ΡΠΊΠΎΠ±ΠΊΠ°Ρ .
ΠΡΠΌΠ±Π΄Π° β ΡΡΠΎ ΠΏΠΈΡΠΎΠ½ ΠΈΠ»ΠΈ Π½Π΅Ρ?
PEP 8, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎΠΌ ΠΏΠΎ ΡΡΠΈΠ»Ρ Π΄Π»Ρ ΠΊΠΎΠ΄Π° Python, Π³Π»Π°ΡΠΈΡ:
ΠΡΠ΅Π³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ def Π²ΠΌΠ΅ΡΡΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²ΡΠ·ΡΠ²Π°Π΅Ρ Π»ΡΠΌΠ±Π΄Ρ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ. (ΠΡΡΠΎΡΠ½ΠΈΠΊ)
ΠΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ Π½Π°ΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΡΠΌΠ±Π΄Ρ, ΠΏΡΠΈΠ²ΡΠ·Π°Π½Π½ΡΡ ΠΊ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ, Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΡΠ°ΠΌ, Π³Π΄Π΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ. PEP 8 Π½Π΅ ΡΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π»ΡΠΌΠ±Π΄Ρ. ΠΠ°ΠΊ Π²Ρ Π²ΠΈΠ΄Π΅Π»ΠΈ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ ΡΠ°Π·Π΄Π΅Π»Π°Ρ , Π»ΡΠΌΠ±Π΄Ρ, Π±Π΅Π·ΡΡΠ»ΠΎΠ²Π½ΠΎ, ΠΌΠΎΠ³ΡΡ Π½Π°ΠΉΡΠΈ Ρ ΠΎΡΠΎΡΠ΅Π΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, Ρ ΠΎΡΡ ΠΎΠ½ΠΈ ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Ρ.
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΎΡΠ²Π΅ΡΠΈΡΡ Π½Π° ΡΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π»ΡΠΌΠ±Π΄Π° ΡΠ²Π»ΡΡΡΡΡ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Pythonic, Π΅ΡΠ»ΠΈ Π½Π΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ Π±ΠΎΠ»Π΅Π΅ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠ³ΠΎ Pythonic. Π― Π½Π΅ Π±ΡΠ΄Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Β«PythonicΒ», ΠΎΡΡΠ°Π²ΠΈΠ² Π²Π°Ρ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ ΠΌΡΡΠ»Π΅Π½ΠΈΡ, Π° ΡΠ°ΠΊΠΆΠ΅ Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ Π»ΠΈΡΠ½ΠΎΠ³ΠΎ ΡΡΠΈΠ»Ρ ΠΈΠ»ΠΈ ΡΡΠΈΠ»Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²Π°ΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ Π·Π½Π°Π΅ΡΠ΅, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΡΠΌΠ±Π΄Ρ Π² Python ΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅:
ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ ΡΠΊΠ»ΠΎΠ½Π½ΠΎΡΡΡ ΠΊ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠ΅, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅Π»ΠΈΡΡΡΡ, ΠΈΡΡΠ»Π΅Π΄ΡΡ ΡΠ²Π»Π΅ΠΊΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΌΠΈΡ Π»ΡΠΌΠ±Π΄Π°-ΠΈΡΡΠΈΡΠ»Π΅Π½ΠΈΡ (lambda calculus).
Python Π»ΡΠΌΠ±Π΄Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ ΡΠΎΠ»ΠΈ. Π©Π΅ΠΏΠΎΡΠΊΠ° ΡΠΎΠ»ΠΈ ΡΠ»ΡΡΡΠΈΡ Π²ΠΊΡΡ, Π½ΠΎ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΡΡΠΈΡ Π±Π»ΡΠ΄ΠΎ.