Π£ΠΊΡΠ°ΡΠΈΡΡ ΠΊΠ»Π°ΡΡ: ΠΠ°ΠΊ ΡΠΊΡΠ°ΡΠΈΡΡ ΠΊΠ»Π°ΡΡ Π½Π° ΠΠΎΠ²ΡΠΉ Π³ΠΎΠ΄ ΡΠ²ΠΎΠΈΠΌΠΈ ΡΡΠΊΠ°ΠΌΠΈ
ΠΠ°ΠΊ ΡΠΊΡΠ°ΡΠΈΡΡ ΠΊΠ»Π°ΡΡ Π½Π° ΠΠΎΠ²ΡΠΉ Π³ΠΎΠ΄ ΡΠ²ΠΎΠΈΠΌΠΈ ΡΡΠΊΠ°ΠΌΠΈ
ΠΠΎΠ²ΡΠΉ Π³ΠΎΠ΄ β ΡΡΠΎ ΡΠ°ΠΌΡΠΉ Π½Π°ΡΡΠ΄Π½ΡΠΉ ΠΈ ΡΡΠΊΠΈΠΉ ΠΏΡΠ°Π·Π΄Π½ΠΈΠΊ Π² Π³ΠΎΠ΄Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π»ΡΠ±ΡΡ Π΄Π΅ΡΠΈ. Π ΠΏΡΠ΅Π΄Π΄Π²Π΅ΡΠΈΠΈ Π·ΠΈΠΌΠ½ΠΈΡ ΠΏΡΠ°Π·Π΄Π½ΠΈΠΊΠΎΠ² Π²ΡΠ΅ Π²ΠΎΠΊΡΡΠ³ ΠΏΡΠ΅ΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ: ΠΌΠ°Π³Π°Π·ΠΈΠ½Ρ, ΠΊΠ°ΡΠ΅, ΡΠ»ΠΈΡΡβ¦
Π ΡΠΊΠΎΠ»Π΅ Π΄Π΅ΡΠΈ ΠΏΡΠΎΠ²ΠΎΠ΄ΡΡ Π±ΠΎΠ»ΡΡΡΡ ΡΠ°ΡΡΡ ΡΠ²ΠΎΠ΅Π³ΠΎ Π΄Π½Ρ, ΠΏΠΎΡΡΠΎΠΌΡ Π΄Π°Π½Π½ΠΎΠΌΡ Π·Π°Π²Π΅Π΄Π΅Π½ΠΈΡ ΡΡΠΎΠΈΡ ΡΠ΄Π΅Π»ΠΈΡΡ ΠΎΡΠΎΠ±ΠΎΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΈ ΡΠΊΡΠ°ΡΠΈΡΡ Π²ΡΠ΅ Π»ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ. Π Π½Π°ΡΠ΅ΠΌ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π΅ ΠΌΡ ΡΠΎΠ±ΡΠ°Π»ΠΈ Π»ΡΡΡΠΈΠ΅ ΠΈΠ΄Π΅ΠΈ Π΄Π»Ρ ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ ΠΈ ΡΡΠΈΡΠ΅Π»Π΅ΠΉ Ρ ΡΠΎΡΠΎ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΌΠΎΠ³ΡΡ ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΡΡ ΠΎΠ±ΡΡΠ½ΡΡ ΡΠΊΠΎΠ»Ρ Π² ΡΠΊΠ°Π·ΠΎΡΠ½ΡΠΉ Π·Π°ΠΌΠΎΠΊ, Π³Π΄Π΅ ΡΠ°ΡΠΈΡ Π΄ΡΡ ΠΠΎΠ²ΠΎΠ³ΠΎ Π³ΠΎΠ΄Π° ΠΈ Π ΠΎΠΆΠ΄Π΅ΡΡΠ²Π°.
ΠΠ±ΡΠΈΠ΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ ΠΏΠΎ ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΡ ΡΠΊΠΎΠ»Ρ ΠΊ ΠΠΎΠ²ΠΎΠΌΡ Π³ΠΎΠ΄Ρ
ΠΡΠ±ΠΈΡΠ°Π΅ΠΌ Π΅Π»ΠΊΡ. ΠΠ»ΠΊΠ° β ΡΡΠΎ Π³Π»Π°Π²Π½ΡΠΉ Π°ΡΡΠΈΠ±ΡΡ ΠΈ ΡΠΈΠΌΠ²ΠΎΠ» ΠΠΎΠ²ΠΎΠ³ΠΎ Π³ΠΎΠ΄Π°, ΠΏΠΎΡΡΠΎΠΌΡ ΠΊ Π΅Π΅ Π²ΡΠ±ΠΎΡΡ ΠΈ ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΡ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΎΠΉΡΠΈ ΡΠΎ Π²ΡΠ΅ΠΉ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡΡ. ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, Π² ΡΠΊΠΎΠ»Π΅ ΡΡΠ°Π²ΡΡ ΠΎΠ΄Π½Ρ Π³Π»Π°Π²Π½ΡΡ Π΅Π»ΠΊΡ Π² ΡΠ΅Π½ΡΡΠ°Π»ΡΠ½ΠΎΠΌ Ρ ΠΎΠ»Π»Π΅ ΠΈΠ»ΠΈ Π°ΠΊΡΠΎΠ²ΠΎΠΌ Π·Π°Π»Π΅, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎ ΠΆΠ΅Π»Π°Π½ΠΈΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ ΠΈ ΡΡΠΈΡΠ΅Π»Π΅ΠΉ ΡΠΊΡΠ°ΡΠ°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π΅Π»ΠΊΠΈ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅. ΠΡΠΎΡΠΌΠ»Π΅Π½ΠΈΠ΅ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΏΡΠ°Π·Π΄Π½ΠΈΡΠ½ΠΎΠ³ΠΎ Π΄Π΅ΡΠ΅Π²Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΡΡ Π² ΡΡΠΊΠΎΠ΅ ΡΠΊΠΎΠ»ΡΠ½ΠΎΠ΅ ΡΠΎΠ±ΡΡΠΈΠ΅ Π΄Π»Ρ Π²ΡΠ΅Ρ Π΄Π΅ΡΠ΅ΠΉ. ΠΠΎΠΆΠ½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π·Π°Π΄Π°Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ ΠΏΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π΅Π»ΠΎΡΠ½ΡΡ ΠΈΠ³ΡΡΡΠ΅ΠΊ ΡΠ²ΠΎΠΈΠΌΠΈ ΡΡΠΊΠ°ΠΌΠΈ, ΡΡΠΎΠ±Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠ² Π²Π½Π΅Ρ ΡΠ²ΠΎΡ Π»Π΅ΠΏΡΡ Π² ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΡ. ΠΠ°ΠΆΠ½ΠΎ! ΠΠ»Ρ ΡΠΊΡΠ°ΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌ Π²ΡΠ±ΠΈΡΠ°ΡΡ ΠΏΠ»Π°ΡΡΠΈΠΊΠΎΠ²ΡΠ΅, Π΄Π΅ΡΠ΅Π²ΡΠ½Π½ΡΠ΅ ΠΈΠ»ΠΈ ΡΠ΅ΠΊΡΡΠΈΠ»ΡΠ½ΡΠ΅ ΠΈΠ³ΡΡΡΠΊΠΈ, Π½ΠΎ Π½Π΅ ΡΡΠ΅ΠΊΠ»ΡΠ½Π½ΡΠ΅. ΠΠ»ΠΊΠ° ΡΡΠ°Π½Π΅Ρ ΠΌΠ΅ΡΡΠΎΠΌ ΠΏΡΠΈΡΡΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΠΊΠΎΠ² ΠΈ Π΄Π΅ΡΠΈ ΠΌΠΎΠ³ΡΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ ΡΠ°Π·Π±ΠΈΡΡ ΡΠΊΡΠ°ΡΠ΅Π½ΠΈΡ ΠΈΠ· ΡΡΠ΅ΠΊΠ»Π°. ΠΠ»Ρ ΠΊΠ»Π°ΡΡΠ° Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π²ΡΠ±ΡΠ°ΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΡΡ Π΅Π»ΠΊΡ Π΄ΠΎ ΠΏΠΎΠ»ΡΡΠΎΡΠ° ΠΌΠ΅ΡΡΠ° Π² Π²ΡΡΠΎΡΡ, ΡΡΠΎΠ±Ρ ΠΎΠ½Π° Π½Π΅ Π·Π°Π½ΠΈΠΌΠ°Π»Π° ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΡΠ°, Π½Π΅ ΠΎΡΠ²Π»Π΅ΠΊΠ°Π»Π° Π΄Π΅ΡΠ΅ΠΉ ΠΎΡ Π·Π°Π½ΡΡΠΈΠΉ ΠΈ Π½Π΅ ΠΌΠ΅ΡΠ°Π»Π° ΠΏΡΠΎΡ ΠΎΠ΄Ρ. Π ΡΠΊΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠ½ΠΎΠΉ Π΅Π»ΠΊΠΈ ΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ ΠΏΡΠΈΠ²Π»Π΅ΡΡ ΡΠ°ΠΌΠΈΡ Π΄Π΅ΡΠ΅ΠΉ. ΠΡΡΠΊΠ°ΠΉ Π½Π° ΡΡΠΎΠΊΠ°Ρ ΡΡΡΠ΄Π° ΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°Π·ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΊΡΡΡΡΠ²Π° ΠΎΠ½ΠΈ ΠΌΠ°ΡΡΠ΅ΡΡΡ Π΅Π»ΠΎΡΠ½ΡΠ΅ ΠΈΠ³ΡΡΡΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΏΠΎΡΠΎΠΌ ΠΈ ΡΠΊΡΠ°ΡΡΡ ΠΏΡΠ°Π·Π΄Π½ΠΈΡΠ½ΠΎΠ΅ Π΄Π΅ΡΠ΅Π²ΠΎ. ΠΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡΠ΅ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅, ΡΡΠΎΠ±Ρ Π²ΡΠ±ΡΠ°ΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΡΡ Π΅Π»ΠΊΡ Π΄Π»Ρ ΠΠΎΠ²ΠΎΠ³ΠΎ Π³ΠΎΠ΄Π° Π² ΡΠΊΠΎΠ»Π΅. Π£ Π½Π°Ρ Π΅ΡΡΡ ΠΈΡΠΊΡΡΡΡΠ²Π΅Π½Π½ΡΠ΅ Π΅Π»ΠΊΠΈ Π»ΡΠ±ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² ΠΈ ΡΠΎΡΠΌ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ°ΡΡ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π΄Π΅ΡΠ΅Π²ΠΎ ΠΈΠ»ΠΈ Π²Π·ΡΡΡ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ΡΡΠΊΡΡ Π΅Π»ΠΊΡ Ρ Π³ΠΎΡΠΎΠ²ΡΠΌ Π΄Π΅ΠΊΠΎΡΠΎΠΌ.
-
Π‘ΠΈΠΌΠ²ΠΎΠ» ΠΠΎΠ²ΠΎΠ³ΠΎ Π³ΠΎΠ΄Π°. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ²Π΅ΡΠΎΠ²ΡΡ Π³Π°ΠΌΠΌΡ ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΠΊΡ ΠΏΡΠ΅Π΄ΡΡΠΎΡΡΠ΅Π³ΠΎ Π³ΠΎΠ΄Π°.
-
ΠΠ±ΡΠ΅Π΅ Π΄Π΅Π»ΠΎ. Π‘ΡΠ°ΡΠ°ΠΉΡΠ΅ΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΠΏΡΠΈΠ²Π»Π΅ΠΊΠ°ΡΡ Π΄Π΅ΡΠ΅ΠΉ ΠΊ ΠΏΡΠΎΡΠ΅ΡΡΡ ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΡ ΡΠΊΠΎΠ»Ρ ΠΈ ΠΊΠ»Π°ΡΡΠΎΠ² Π½Π° ΠΠΎΠ²ΡΠΉ Π³ΠΎΠ΄. Π‘ΠΎΠ²ΠΌΠ΅ΡΡΠ½Π°Ρ ΡΠ°Π±ΠΎΡΠ° Ρ ΠΎΡΠΎΡΠΎ ΡΠΏΠ»Π°ΡΠΈΠ²Π°Π΅Ρ Π΄Π΅ΡΠ΅ΠΉ ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΈΠΌ Π½Π°ΡΡΠΈΡΡΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅.
-
Π¨ΠΊΠΎΠ»ΡΠ½Π°Ρ ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠ°. Π‘ΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΊΠ»Π°ΡΡΡ (ΠΊΠ»Π°ΡΡ Ρ ΠΈΠΌΠΈΠΈ, ΠΊΠ»Π°ΡΡ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ°, ΠΊΠ»Π°ΡΡ ΠΈΡΡΠΎΡΠΈΠΈ) ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΎΡΠΌΠΈΡΡ, ΠΏΡΠΈΠΌΠ΅Π½ΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΡ ΡΡΠΎΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°ΠΌ ΠΏΡΠ΅ΠΏΠΎΠ΄Π°Π΅ΡΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ Π΄Π΅ΠΊΠΎΡΠ° ΠΊΠ»Π°ΡΡΠ° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΠ΅ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΈΠ΅ ΡΠΊΡΠ°ΡΠ΅Π½ΠΈΡ ΠΈ ΡΠ²Π΅ΡΠΎΠ²ΡΡ Π³Π°ΠΌΠΌΡ, Π° Π² ΠΊΠ»Π°ΡΡΠ΅ Ρ ΠΈΠΌΠΈΠΈ ΡΠΊΡΠ°ΡΠΈΡΡ Π΅Π»ΠΊΡ ΠΊΠ°ΡΡΠΎΡΠΊΠ°ΠΌΠΈ Ρ Π½Π°Π·Π²Π°Π½ΠΈΡΠΌΠΈ Ρ ΠΈΠΌΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ².
-
ΠΠΎΠ·ΡΠ°ΡΡΠ½ΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ. Π£ΡΠΈΡΡΠ²Π°ΠΉΡΠ΅ Π²ΠΎΠ·ΡΠ°ΡΡ ΡΡΠ΅Π½ΠΈΠΊΠΎΠ² ΠΏΡΠΈ Π²ΡΠ±ΠΎΡΠ΅ ΡΡΠΈΠ»ΠΈΡΡΠΈΠΊΠΈ Π΄Π»Ρ ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΊ ΠΠΎΠ²ΠΎΠΌΡ Π³ΠΎΠ΄Ρ. ΠΠ΅ΡΠΈ ΠΈΠ· ΡΡΠ°ΡΡΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ², ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ Π·Π°Ρ ΠΎΡΡΡ ΠΎΡΠΎΡΠΌΠΈΡΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠ΄Π΅ΡΠΆΠ°Π½Π½ΠΎ ΠΈ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎ, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΠΌΠ»Π°Π΄ΡΠ΅ΠΊΠ»Π°ΡΡΠ½ΠΈΠΊΠ°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΌΠ΅Π»ΠΎ ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ ΡΡΠΊΠΈΠ΅ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΡ ΡΠ²Π΅ΡΠΎΠ², ΠΎΠ±ΠΈΠ»ΠΈΠ΅ ΡΠΊΠ°Π·ΠΎΡΠ½ΡΡ ΠΏΠ΅ΡΡΠΎΠ½Π°ΠΆΠ΅ΠΉ ΠΈ Ρ.Π΄.
Π£ΠΊΡΠ°ΡΠ°Π΅ΠΌ ΠΊ ΠΠΎΠ²ΠΎΠΌΡ Π³ΠΎΠ΄Ρ ΠΊΠΎΡΠΈΠ΄ΠΎΡΡ ΠΈ ΡΠΎΠΉΠ΅ ΡΠΊΠΎΠ»Ρ
Π¦Π΅Π½ΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΎΠΉΠ΅ ΠΈ ΠΊΠΎΡΠΈΠ΄ΠΎΡΡ β ΡΡΠΎ ΠΏΡΠΎΡΡΠΎΡΠ½ΡΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°, ΠΊΠΎΡΠΎΡΡΠ΅ Π² ΠΎΠ±ΡΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΏΡΡΡΡΡΡ. ΠΠΎΡΡΠΎΠΌΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΠΎΠ²ΡΠΌ Π³ΠΎΠ΄ΠΎΠΌ ΠΈΡ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅Π»ΡΠ·Ρ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈ Π½ΡΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°ΡΠΈΡΡ Π½Π° Π½ΠΈΡ ΠΎΡΠΎΠ±ΠΎΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅.
ΠΠΎΡΠΈΠ΄ΠΎΡΡ Π²ΡΠ΅-ΡΠ°ΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ²ΠΎΡ ΠΏΡΡΠΌΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡ Π΄Π΅ΡΠ΅ΠΉ ΠΊ ΠΊΠ»Π°ΡΡΠ°ΠΌ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΈΡ Π½ΡΠΆΠ½ΠΎ ΡΠΊΡΠ°ΡΠ°ΡΡ ΠΊ Π½ΠΎΠ²ΠΎΠΌΡ Π³ΠΎΠ΄Ρ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ Π΄Π΅ΠΊΠΎΡ Π½Π΅ ΠΌΠ΅ΡΠ°Π» ΠΏΠ΅ΡΠ΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ Π»ΡΠ΄Π΅ΠΉ. ΠΠΊΡΠ΅Π½Ρ Π»ΡΡΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ Π½Π° ΡΡΠ΅Π½Ρ ΠΈ ΠΏΠΎΡΠΎΠ»ΠΎΠΊ.
Π‘ΡΠ΅Π½Ρ Π΄Π»Ρ ΠΠΎΠ²ΠΎΠ³ΠΎ Π³ΠΎΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΡΠ°ΡΠΈΡΡ Π΄Π΅ΡΡΠΊΠΈΠΌΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎΠ΄Π½ΠΈΠΌΠΈ ΡΠΈΡΡΠ½ΠΊΠ°ΠΌΠΈ ΠΈ ΡΡΠ΅Π½Π³Π°Π·Π΅ΡΠ°ΠΌΠΈ, ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΠ² ΠΊΠΎΡΠΈΠ΄ΠΎΡΡ Π² Π²ΡΡΡΠ°Π²ΠΎΡΠ½ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ. ΠΠ° ΠΏΠΎΡΠΎΠ»ΠΎΠΊ ΠΏΠΎΠ²Π΅ΡΡΡΠ΅ Π³ΠΈΡΠ»ΡΠ½Π΄Ρ ΠΈΠ»ΠΈ Π»Π΅Π³ΠΊΠΈΠ΅ Π±ΡΠΌΠ°ΠΆΠ½ΡΠ΅ ΡΠΈΠ³ΡΡΡ Π½Π° ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΠΉ Π»Π΅ΡΠΊΠ΅.
Π ΠΏΡΠΎΡΡΠΎΡΠ½ΠΎΠΌ ΠΈ ΡΠ²Π΅ΡΠ»ΠΎΠΌ ΡΠΎΠΉΠ΅ ΠΊΡΠ΅Π°ΡΠΈΠ² ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ, ΡΡΠ΅Π½ΠΈΠΊΠΎΠ² ΠΈ ΡΡΠΈΡΠ΅Π»Π΅ΠΉ ΠΏΠ΅ΡΠ΅Π΄ ΠΠΎΠ²ΡΠΌ Π³ΠΎΠ΄ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡΡΡ Π½Π° ΠΏΠΎΠ»Π½ΡΡ ΡΠΈΠ»Ρ. ΠΠ΄Π΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΎΡΠΌΠΈΡΡ ΡΡΠ°Π·Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π·ΠΎΠ½:
-
Π€ΠΎΡΠΎΠ·ΠΎΠ½Π°. Π§ΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΠΊΡΠ°ΡΠΈΠ²ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎΠ΄Π½ΡΡ ΡΠΎΡΠΎΠ·ΠΎΠ½Ρ ΡΠ²ΠΎΠΈΠΌΠΈ ΡΡΠΊΠ°ΠΌΠΈ, Π²Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΡΡΡΡ Π΄Π΅ΡΠ΅Π²ΡΠ½Π½ΡΠ΅ ΡΠ΅ΠΉΠΊΠΈ, Π³Π²ΠΎΠ·Π΄ΠΈ ΠΈ ΠΏΠΈΠ»ΠΊΠ°. ΠΠ· ΡΡΠΈΡ ΠΏΡΠΎΡΡΡΡ Π΄Π΅ΡΠ°Π»Π΅ΠΉ Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠΎΡΡΠ΄ΠΈΡΡ ΠΊΠ°ΡΠΊΠ°Ρ Π΄Π»Ρ Π±ΡΠ΄ΡΡΠ΅ΠΉ ΡΠΎΡΠΎΠ·ΠΎΠ½Ρ, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π±ΡΠ΄Π΅Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΡΡ ΡΠΎΠ½ ΠΈΠ· ΡΠ΅ΠΊΡΡΠΈΠ»Ρ ΠΈΠ»ΠΈ Π±ΡΠΌΠ°Π³ΠΈ. Π§ΡΠΎΠ±Ρ ΡΠΎΡΠΎΠ·ΠΎΠ½Π° Π΄Π»Ρ ΠΠΎΠ²ΠΎΠ³ΠΎ Π³ΠΎΠ΄Π° Π²ΡΠ³Π»ΡΠ΄Π΅Π»Π° ΠΊΡΠ°ΡΠΈΠ²ΠΎ ΠΈ Π½Π°ΡΡΠ΄Π½ΠΎ, ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΠΌ ΡΠΊΡΠ°ΡΠΈΡΡ Π΅Π΅ ΠΏΡΡΠ½ΡΠΌΠΈ Π³ΠΈΡΠ»ΡΠ½Π΄Π°ΠΌΠΈ ΠΈΠ· Ρ Π²ΠΎΠΈ, ΡΠ°ΡΠΈΠΊΠ°ΠΌΠΈ, ΠΈΠ³ΡΡΡΠΊΠ°ΠΌΠΈ ΠΈ ΠΏΡΠΎΡΠΈΠΌΠΈ ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ. ΠΠ° ΠΏΠΎΠ»Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠΈΠ³ΡΡΡ ΠΠ΅Π΄Π° ΠΌΠΎΡΠΎΠ·Π° ΠΈ Π‘Π½Π΅Π³ΡΡΠΎΡΠΊΠΈ, ΡΠ½Π΅Π³ΠΎΠ²ΠΈΠΊΠΎΠ², ΠΎΠ»Π΅Π½Π΅ΠΉ ΠΈ Ρ.Π΄.
-
ΠΡΡΡΠ°Π²ΠΊΠ° ΠΏΠΎΠ΄Π΅Π»ΠΎΠΊ. ΠΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π·Π° ΠΌΠ΅ΡΡΡ Π΄ΠΎ ΠΠΎΠ²ΠΎΠ³ΠΎ Π³ΠΎΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΠΊΠΎΠ½ΠΊΡΡΡ Π½Π° Π»ΡΡΡΡΡ ΠΏΡΠ°Π·Π΄Π½ΠΈΡΠ½ΡΡ ΠΏΠΎΠ΄Π΅Π»ΠΊΡ. ΠΡΡΠΊΠ°ΠΉ Π΄Π΅ΡΠΈ ΠΏΡΠΈΠ½ΠΎΡΡΡ ΡΠΈΡΡΠ½ΠΊΠΈ, ΡΠΈΠ³ΡΡΠΊΠΈ, ΠΈΠ³ΡΡΡΠΊΠΈ, ΡΠ΄Π΅Π»Π°Π½Π½ΡΠ΅ ΡΠ²ΠΎΠΈΠΌΠΈ ΡΡΠΊΠ°ΠΌΠΈ ΠΈ Π²ΡΡΡΠ°Π²Π»ΡΡΡ ΠΈΡ Π² ΡΡΠ»ΠΎΠ²Π»Π΅Π½Π½ΠΎΠΉ Π·ΠΎΠ½Π΅. ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠΎΠΌΡ, ΡΡΠΎ Π²ΡΡΡΠ°Π²ΠΎΡΠ½ΡΠ΅ ΡΡΠΎΠ»Ρ Π±ΡΠ΄ΡΡ ΡΡΠΎΡΡΡ Π² Ρ ΠΎΠ»Π»Π΅, Π΄Π΅ΡΡΠΊΠΎΠ΅ ΡΠ²ΠΎΡΡΠ΅ΡΡΠ²ΠΎ ΡΠ²ΠΈΠ΄ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π»ΡΠ΄Π΅ΠΉ.
-
Π’Π΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΈΠ½ΡΡΠ°Π»Π»ΡΡΠΈΡ. ΠΡΠΎΠΌΠ΅ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΎΠΉ Π΅Π»ΠΊΠΈ Π² ΡΠΎΠΉΠ΅, Π΅ΡΠ»ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΈΠ½ΡΡΠ°Π»Π»ΡΡΠΈΡ Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎΠ΄Π½ΠΈΠΌΠΈ ΠΈΠ»ΠΈ ΡΠΎΠΆΠ΄Π΅ΡΡΠ²Π΅Π½ΡΠΊΠΈΠΌΠΈ ΠΏΠ΅ΡΡΠΎΠ½Π°ΠΆΠ°ΠΌΠΈ. Π‘Π°ΠΌΠΎΠ΅ ΠΏΡΠΎΡΡΠΎΠ΅ β ΡΡΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΠΎΠ΄ΠΈΡΠΌ ΠΈΠ· ΠΊΠΎΡΠΎΠ±ΠΎΠΊ ΠΈΠ»ΠΈ ΡΠ°Π½Π΅ΡΡ, Π½Π°ΠΊΡΡΡΡ Π΅Π³ΠΎ Π±Π΅Π»ΡΠΌ Π²ΠΎΠΉΠ»ΠΎΠΊΠΎΠΌ ΠΈΠ»ΠΈ ΠΏΠΎΡ ΠΎΠΆΠ΅ΠΉ ΡΠΊΠ°Π½ΡΡ, ΡΠΊΡΠ°ΡΠΈΡΡ ΠΈΡΠΊΡΡΡΡΠ²Π΅Π½Π½ΡΠΌ ΡΠ½Π΅Π³ΠΎΠΌ ΠΈ Β«ΡΠ°Π·ΡΠ³ΡΠ°ΡΡΒ» ΠΏΡΠ°Π·Π΄Π½ΠΈΡΠ½ΡΡ ΡΡΠ΅Π½ΠΊΡ. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΠ΅Π½Π° Π² Π»Π΅ΡΡ ΡΠΎ Π·Π²Π΅ΡΡΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΠΎΠ΄ΡΡ Ρ ΠΎΡΠΎΠ²ΠΎΠ΄ Π²ΠΎΠΊΡΡΠ³ Π΅Π»ΠΊΠΈ ΠΈ ΠΏΡΠ°Π·Π΄Π½ΡΡΡ ΠΠΎΠ²ΡΠΉ Π³ΠΎΠ΄, ΠΈΠ»ΠΈ Π΄Π΅ΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΡΡΠ΅ΡΠ°ΡΡ Π΄Π΅Π΄Π° ΠΌΠΎΡΠΎΠ·Π° Ρ ΠΏΠΎΠ΄Π°ΡΠΊΠ°ΠΌΠΈ.
Π‘ΠΌΠΎΡΡΠΈΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ Π½Π° ΡΠΎΡΠΎ Π½ΠΈΠΆΠ΅.
Π£ΠΊΡΠ°ΡΠ°Π΅ΠΌ ΠΊΠ»Π°ΡΡ ΠΊ ΠΠΎΠ²ΠΎΠΌΡ Π³ΠΎΠ΄Ρ
ΠΠΎΠ΄Π±ΠΈΡΠ°Ρ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ ΠΏΡΠ°Π·Π΄Π½ΠΈΡΠ½ΠΎΠ³ΠΎ Π΄Π΅ΠΊΠΎΡΠ° ΠΊ ΠΠΎΠ²ΠΎΠΌΡ Π³ΠΎΠ΄Ρ Π΄Π»Ρ ΡΠΊΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°, Π²Π°ΠΆΠ½ΠΎ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π±Π°Π»Π°Π½Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΡΠΌΡΠΌ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ΠΌ ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΡΡ Π΅Π³ΠΎ Π² Π·ΠΈΠΌΠ½ΡΡ ΡΠΊΠ°Π·ΠΊΡ.
ΠΠ°ΠΆΠ½ΠΎ, ΡΡΠΎΠ±Ρ ΡΠΊΡΠ°ΡΠ΅Π½ΠΈΡ Π½Π΅ ΠΌΠ΅ΡΠ°Π»ΠΈ ΡΡΠ΅Π±Π½ΠΎΠΌΡ ΠΏΡΠΎΡΠ΅ΡΡΡ, Π½Π΅ ΠΏΠ΅ΡΠ΅ΡΡΠ³ΠΈΠ²Π°Π»ΠΈ Π½Π° ΡΠ΅Π±Ρ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ, Π° ΡΠΎΠ»ΡΠΊΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΡΠ»ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅Ρ ΠΊΠ»Π°ΡΡΠ° ΠΈ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Π»ΠΈ Π½Π°ΡΡΡΠΎΠ΅Π½ΠΈΠ΅ ΡΡΠ΅Π½ΠΈΠΊΠ°ΠΌ.
ΠΠΊΠ½Π°
ΠΠΊΠ½Π° β ΡΡΠΎ ΠΎΡΠ»ΠΈΡΠ½ΠΎΠ΅ ΠΏΠΎΠ»Π΅ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΡΠ΅Π°ΡΠΈΠ²Π°. ΠΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ², ΠΊΠ°ΠΊ ΠΊΡΠ°ΡΠΈΠ²ΠΎ ΡΠΊΡΠ°ΡΠΈΡΡ ΠΎΠΊΠ½Π° Π² ΡΠΊΠΎΠ»ΡΠ½ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅:
-
ΠΠΈΡΠ»ΡΠ½Π΄Ρ. Π‘Π°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΠΈ Π±ΡΡΡΡΡΠΉ ΡΠΏΠΎΡΠΎΠ± β ΠΏΠΎΠ²Π΅ΡΠΈΡΡ Π½Π° ΠΎΠΊΠ½ΠΎ Π΄ΠΎΠΆΠ΄ΠΈΠΊ ΠΈΠ΄ΠΈ ΡΠ²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄Π½ΡΡ Π³ΠΈΡΠ»ΡΠ½Π΄Ρ. ΠΠ΄Π½Π°ΠΊΠΎ, Π²ΡΠ±ΠΈΡΠ°Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠΏΠΎΡΠΎΠ±, ΡΡΠΈΡΡΠ²Π°ΠΉΡΠ΅, ΡΡΠΎ ΠΌΠΈΠ³Π°ΡΡΠΈΠ΅ Π»Π°ΠΌΠΏΠΎΡΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π°Ρ ΠΈΠ»ΠΈ ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠΊΠΎΠ². ΠΠΎ Π²ΡΠ΅ΠΌΡ Π·Π°Π½ΡΡΠΈΠΉ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΠΎΡΠ²Π»Π΅ΠΊΠ°ΡΡ ΡΡΠ΅Π½ΠΈΠΊΠΎΠ².
-
Π‘Π½Π΅ΠΆΠΈΠ½ΠΊΠΈ. Π‘Π°ΠΌΡΠΉ Π±ΡΠ΄ΠΆΠ΅ΡΠ½ΡΠΉ ΠΈ ΠΈΡΠΏΡΡΠ°Π½Π½ΡΠΉ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄ ΡΠΊΡΠ°ΡΠ΅Π½ΠΈΡ ΠΎΠΊΠΎΠ½. ΠΠ΅ΡΠΈ ΡΠ°ΠΌΠΈ ΡΠ²ΠΎΠΈΠΌΠΈ ΡΡΠΊΠ°ΠΌΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ²ΡΡΠ΅Π·Π°ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ½Π΅ΠΆΠΈΠ½ΠΎΠΊ ΡΠ°Π·Π½ΡΡ ΡΠΎΡΠΌ ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ², Π° Π²Π·ΡΠΎΡΠ»ΡΠ΅ ΠΏΠΎΡΠΎΠΌ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠΌΠΎΠ³ΡΡ ΠΊΡΠ°ΡΠΈΠ²ΠΎ ΡΠΊΡΠ°ΡΠΈΡΡ ΠΈΠΌΠΈ ΡΡΠ΅ΠΊΠ»ΠΎ.
-
Π ΠΎΡΠΏΠΈΡΡ. Π‘ΡΠ΅ΠΊΠ»ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΠΏΠΈΡΠ°ΡΡ ΡΠΌΠ΅ΡΡΡ Π³ΡΠ°ΡΠΈ ΠΈ Π·ΡΠ±Π½ΠΎΠΉ ΠΏΠ°ΡΡΡ. ΠΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π» ΡΠ΄ΠΎΠ±Π΅Π½ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ, Π° ΠΏΠΎΡΠ»Π΅ ΠΠΎΠ²ΠΎΠ³ΠΎ Π³ΠΎΠ΄Π° ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π»Π΅Π³ΠΊΠΎ ΡΠΌΡΡΡ Π²ΠΎΠ΄ΠΎΠΉ. Π ΠΌΠ»Π°Π΄ΡΠΈΡ ΠΊΠ»Π°ΡΡΠ°Ρ ΡΠΎΡΠΏΠΈΡΡΡ ΠΎΠΊΠΎΠ½ ΠΊΡΠ°ΡΠΊΠ°ΠΌΠΈ Π»ΡΡΡΠ΅, ΡΡΠΎΠ±Ρ Π·Π°Π½ΡΠ»ΠΈΡΡ Π²Π·ΡΠΎΡΠ»ΡΠ΅ (ΡΡΠΈΡΠ΅Π»Ρ ΠΈΠ»ΠΈ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΌΠ΅ΡΡ ΡΠΈΡΠΎΠ²Π°ΡΡ). Π ΡΡΠ°ΡΡΠΈΡ ΠΊΠ»Π°ΡΡΠ°Ρ ΡΠ°ΠΊΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡΡΠΈΡΡ ΠΈ ΡΠ°ΠΌΠΈΠΌ Π΄Π΅ΡΡΠΌ.
ΠΠ° ΡΠΎΡΠΎ Π½ΠΈΠΆΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ ΠΊΡΠ°ΡΠΈΠ²ΠΎΠ³ΠΎ ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΡ ΠΎΠΊΠΎΠ½ Π² ΠΊΠ»Π°ΡΡΠ΅ ΠΊ ΠΠΎΠ²ΠΎΠΌΡ Π³ΠΎΠ΄Ρ.
ΠΠ²Π΅ΡΠΈ
ΠΠ²Π΅ΡΡ ΠΊΠ»Π°ΡΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΡΠ°ΡΠΈΡΡ ΡΠΎΠΆΠ΄Π΅ΡΡΠ²Π΅Π½ΡΠΊΠΈΠΌ Π²Π΅Π½ΠΊΠΎΠΌ. Π ΠΎΠ΄ΠΈΡΠ΅Π»ΠΈ ΠΌΠΎΠ³ΡΡ ΠΊΡΠΏΠΈΡΡ Π΅Π³ΠΎ Π³ΠΎΡΠΎΠ²ΡΠΌ ΠΈΠ»ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΊΡΠΎ-ΡΠΎ Π²ΡΠ·ΠΎΠ²Π΅ΡΡΡ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΡΠ²ΠΎΠΈΠΌΠΈ ΡΡΠΊΠ°ΠΌΠΈ. Π ΡΠ»ΠΎΠ²Ρ, Π²Π΅Π½ΠΎΠΊ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½Π΅ ΡΠ»ΠΎΠΆΠ½ΠΎ ΡΠΌΠ°ΡΡΠ΅ΡΠΈΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΆΠΈΠ²ΡΠ΅ Ρ Π²ΠΎΠΉΠ½ΡΠ΅ Π²Π΅ΡΠΊΠΈ. ΠΠ΅Π±ΠΎΠ»ΡΡΠΈΠ΅ Π΅Π»ΠΎΠ²ΡΠ΅ ΠΈΠ»ΠΈ ΡΠΎΡΠ½ΠΎΠ²ΡΠ΅ Π²Π΅ΡΠΎΡΠΊΠΈ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠΏΠ»Π΅ΡΡΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ Π±Π΅ΡΠ΅Π²ΠΊΠΎΠΉ Π² ΡΠΎΡΠΌΠ΅ ΠΊΠΎΠ»ΡΡΠ°, Π° Π·Π°ΡΠ΅ΠΌ ΡΠΊΡΠ°ΡΠΈΡΡ ΠΏΠΎΠ»ΡΡΠΈΠ²ΡΠ΅Π΅ΡΡ ΠΈΠ·Π΄Π΅Π»ΠΈΠ΅ Π»Π΅Π½ΡΠ°ΠΌΠΈ, ΠΈΡΠΊΡΡΡΡΠ²Π΅Π½Π½ΡΠΌΠΈ ΡΠ³ΠΎΠ΄Π°ΠΌΠΈ, ΡΠ°ΡΠ°ΠΌΠΈ, ΡΠΈΡΠΊΠ°ΠΌΠΈ ΠΈ Ρ.Π΄.
ΠΠΎΡΠΎΠ»ΠΎΠΊ
ΠΠ»Ρ ΡΠΊΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ Π΄Π΅ΠΊΠΎΡΠ° ΠΏΠΎΡΠΎΠ»ΠΊΠ° ΠΊ ΠΠΎΠ²ΠΎΠΌΡ Π³ΠΎΠ΄Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΠΈΠ΅ ΠΏΡΠΈΠ΅ΠΌΡ:
-
ΠΠΎΠ·Π΄ΡΡΠ½ΡΠ΅ ΡΠ°ΡΡ. ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΡΠ°ΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ΅ΠΉ ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ Π³Π°ΠΌΠΌΡ (ΠΊΡΠ°ΡΠ½ΡΠΉ, Π·Π΅Π»Π΅Π½ΡΠΉ, Π·ΠΎΠ»ΠΎΡΠΎΠΉ, Π±Π΅Π»ΡΠΉ, ΡΠΈΠ½ΠΈΠΉ, ΡΠ΅ΡΠ΅Π±ΡΠΈΡΡΡΠΉ ΡΠ²Π΅ΡΠ°) ΠΈ ΡΠ°Π·Π²Π΅ΡΡΡΠ΅ ΠΈΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ Π³ΡΡΠΏΠΏΠ°ΠΌΠΈ ΠΏΠΎ ΡΡΠΈ ΡΠ°ΡΠ° ΠΏΠΎΠ΄ ΠΏΠΎΡΠΎΠ»ΠΊΠΎΠΌ. ΠΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΡΡ Ρ Π³Π΅Π»ΠΈΠ΅ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π½ΠΈΡΠ΅ΠΌ ΠΊΡΠ΅ΠΏΠΈΡΡ ΠΊ ΠΏΠΎΡΠΎΠ»ΠΊΡ.
-
ΠΠΎΠΆΠ΄ΠΈΠΊ ΠΈ ΠΌΠΈΡΡΡΠ°. ΠΡΠ»ΠΈ Π½Π΅Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π° ΠΏΡΠΈΠ΄ΡΠΌΡΠ²Π°Π½ΠΈΠ΅ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ Π΄Π΅ΠΊΠΎΡΠ°, Π²ΡΠ΅Π³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ±Π΅Π³Π½ΡΡΡ ΠΊ ΠΏΠΎΠΌΠΎΡΠΈ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠΆΠ΄ΠΈΠΊΠ°. Π Π°Π·Π²Π΅ΡΠΈΠ²Π°Ρ Π±Π»Π΅ΡΡΡΡΡΡ ΠΌΠΈΡΡΡΡ, ΠΏΡΠΎΡΠ»Π΅Π΄ΠΈΡΠ΅, ΡΡΠΎΠ±Ρ ΠΎΠ½Π° Π½Π΅ Π²ΠΈΡΠ΅Π»Π° ΡΠ»ΠΈΡΠΊΠΎΠΌ Π½ΠΈΠ·ΠΊΠΎ ΠΈ Π½Π΅ ΠΌΠ΅ΡΠ°Π»Π° ΠΏΡΠΎΡ ΠΎΠ΄Ρ ΠΏΠΎ ΠΊΠΎΠΌΠ½Π°ΡΠ΅.
-
Π‘Π°ΠΌΠΎΠ΄Π΅Π»ΡΠ½ΡΠ΅ Π³ΠΈΡΠ»ΡΠ½Π΄Ρ. ΠΠΎΠ³Π΄Π° ΡΠ΅ΡΡ ΠΈΠ΄Π΅Ρ ΠΎ ΡΠΊΠΎΠ»ΡΠ½ΡΡ ΠΏΡΠ°Π·Π΄Π½ΠΈΠΊΠ°Ρ , ΡΠΎ ΡΠ°ΠΌΠΎΠ΄Π΅Π»ΡΠ½ΡΠΉ Π΄Π΅ΠΊΠΎΡ, ΡΠ΄Π΅Π»Π°Π½Π½ΡΠΉ ΡΡΠΊΠ°ΠΌΠΈ Π΄Π΅ΡΠ΅ΠΉ, Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ Π»ΡΡΡΠ΅ ΠΏΠΎΠΊΡΠΏΠ½ΠΎΠ³ΠΎ, Π²Π΅Π΄Ρ Π² Π½Π΅ΠΌ Π±ΡΠ΄Π΅Ρ ΡΠΊΠΎΠ½ΡΠ΅Π½ΡΡΠΈΡΠΎΠ²Π°Π½ΠΎ ΡΡΠ°ΡΠ°Π½ΠΈΠ΅ ΡΡΠ΅Π½ΠΈΠΊΠΎΠ², Π°ΡΠΌΠΎΡΡΠ΅ΡΠ° ΠΊΡΠ΅Π°ΡΠΈΠ²Π° ΠΈ Π΄ΡΡΠ΅Π²Π½ΠΎΡΡΡ. ΠΡΠ»ΠΈ Π²Ρ ΡΠ΅ΡΠΈΠ»ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°ΠΌΠΎΠ΄Π΅Π»ΡΠ½ΡΠ΅ Π³ΠΈΡΠ»ΡΠ½Π΄Ρ, ΡΠΎ ΡΠ°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ β ΡΡΠΎ Π³ΠΈΡΠ»ΡΠ½Π΄Π°-ΡΠ΅ΠΏΠΎΡΠΊΠ°. ΠΠ΅ ΡΠΌΠΎΠ³ΡΡ ΡΠ΄Π΅Π»Π°ΡΡ Π΄Π°ΠΆΠ΅ ΡΡΠ΅Π½ΠΈΠΊΠΈ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°. Π’Π°ΠΊΠΆΠ΅ Π»Π΅Π³ΠΊΠΎ ΠΈ Π±ΡΡΡΡΠΎ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π³ΠΈΡΠ»ΡΠ½Π΄Π° Π² ΡΠΎΡΠΌΠ΅ ΡΠΏΠΈΡΠ°Π»ΠΈ (Π²Π°ΠΌ ΠΏΡΠΎΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π²Π·ΡΡΡ Π±ΡΠΌΠ°ΠΆΠ½ΡΠΉ ΠΊΡΡΠ³ ΠΈ Π²ΡΡΠ΅Π·Π°ΡΡ ΠΈΠ· Π½Π΅Π³ΠΎ ΡΠΏΠΈΡΠ°Π»Ρ, ΠΏΡΠΎΠ΄Π²ΠΈΠ³Π°ΡΡΡ Π½ΠΎΠΆΠ½ΠΈΡΠ°ΠΌΠΈ ΠΎΡ ΠΊΡΠ°Ρ ΠΊ ΡΠ΅Π½ΡΡΡ).
ΠΠΎΡΠΊΠ°
Π ΠΎΡΠ»ΠΈΡΠΈΠΈ ΠΎΡ ΠΏΠΎΡΠΎΠ»ΠΊΠ°, ΠΎΠΊΠΎΠ½ ΠΈ Π΄Π²Π΅ΡΠΈ, ΡΠΊΠΎΠ»ΡΠ½Π°Ρ Π΄ΠΎΡΠΊΠ° Π²ΡΠ΅Π³Π΄Π° Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΠΏΠΎΠ»Π΅ Π·ΡΠ΅Π½ΠΈΡ Π²ΡΠ΅Ρ ΡΡΠ΅Π½ΠΈΠΊΠΎΠ². Π£ΠΊΡΠ°ΡΠ°ΡΡ Π΄ΠΎΡΠΊΡ Π½ΡΠΆΠ½ΠΎ Π°ΠΊΠΊΡΡΠ°ΡΠ½ΠΎ, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠΊΠΈΡ ΠΈ ΠΎΠ±ΡΠ΅ΠΌΠ½ΡΡ Π°ΠΊΡΠ΅Π½ΡΠΎΠ². ΠΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π½Π° Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ΅ Π΅Π΅ ΡΠ°ΡΡΠΈ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΌΠ΅Π»ΠΎΠΌ ΠΏΠΎΠΆΠ΅Π»Π°Π½ΠΈΠ΅ Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΡΠ΅Π½ΠΈΠΊΠΎΠ² ΠΈΠ»ΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΡΡ ΡΠΊΠΎΠ»ΡΠ½ΠΈΠΊΠ°ΠΌ ΡΠ°ΠΌΠΈΠΌ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΏΠΎΠΆΠ΅Π»Π°Π½ΠΈΡ ΠΈ ΠΏΠΎΠ·Π΄ΡΠ°Π²Π»Π΅Π½ΠΈΡ Ρ ΠΠΎΠ²ΡΠΌ Π³ΠΎΠ΄ΠΎΠΌ.
Π’Π°ΠΊΠΆΠ΅ Π΄ΠΎΡΠΊΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΡΠ°ΡΠΈΡΡ Π΄ΠΎΠΆΠ΄ΠΈΠΊΠΎΠΌ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅ΡΠΈΡΡ Π½Π° Π½Π΅Π΅ ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΡΡ ΡΡΠ΅Π½Π³Π°Π·Π΅ΡΡ.
Π£ΠΊΡΠ°ΡΠ°Π΅ΠΌ ΡΠ°ΡΠ°Π΄ Π² ΡΠΊΠΎΠ»Π΅ ΠΊ ΠΠΎΠ²ΠΎΠΌΡ Π³ΠΎΠ΄Ρ
ΠΠ°ΡΠ°Π΄Π½ΡΠΉ Π²Ρ ΠΎΠ΄ β ΡΡΠΎ Π»ΠΈΡΠΎ Π»ΡΠ±ΠΎΠΉ ΡΠΊΠΎΠ»Ρ. Π§ΡΠΎΠ±Ρ Π·Π°Π΄Π°ΡΡ Π²ΡΠ΅ΠΌ ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»ΡΠΌ ΠΈ ΡΡΠ΅Π½ΠΈΠΊΠ°ΠΌ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ Π½Π°ΡΡΡΠΎΠΉ Π΅ΡΠ΅ Π½Π° ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π΅ ΠΊ ΡΡΠ΅Π±Π½ΠΎΠΌΡ Π·Π°Π²Π΅Π΄Π΅Π½ΠΈΡ, Π½ΡΠΆΠ½ΠΎ Π½Π΅ Π·Π°Π±ΡΡΡ ΡΠΊΡΠ°ΡΠΈΡΡ ΡΠ°ΡΠ°Π΄ Π·Π΄Π°Π½ΠΈΡ ΠΈ ΠΏΡΠΈΠ»Π΅Π³Π°ΡΡΡΡ ΡΠ΅ΡΡΠΈΡΠΎΡΠΈΡ.
Π₯ΠΎΡΠΎΡΠΎ, Π΅ΡΠ»ΠΈ Π²ΠΎ Π΄Π²ΠΎΡΠ΅ ΡΠΊΠΎΠ»Ρ ΡΠ°ΡΡΠ΅Ρ ΠΆΠΈΠ²Π°Ρ Π΅Π»Ρ. ΠΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅ΠΊΠΎΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄Π½ΡΠΌΠΈ Π³ΠΈΡΠ»ΡΠ½Π΄Π°ΠΌΠΈ ΠΈ ΠΈΠ³ΡΡΡΠΊΠ°ΠΌΠΈ.
ΠΠ°Π΄ Π²Ρ ΠΎΠ΄ΠΎΠΌ Π² Π·Π΄Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ²Π΅ΡΠΈΡΡ ΠΏΡΠ°Π·Π΄Π½ΠΈΡΠ½ΡΠΉ ΠΏΠ»Π°ΠΊΠ°Ρ Β«Π‘ ΠΠΎΠ²ΡΠΌ Π³ΠΎΠ΄ΠΎΠΌΒ» ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΡ Π΅Π³ΠΎ ΠΊΠΎΡΠΎΡΠΊΠΈΠΌ ΠΈ Π·Π²ΡΡΠ½ΡΠΌ ΠΏΠΎΠ·Π΄ΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ.
ΠΠ° ΠΏΠΎΡΠΎΠ³Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΡΠΈΠ³ΡΡΡ ΠΠ΅Π΄Π° ΠΠΎΡΠΎΠ·Π°, ΡΠ½Π΅Π³ΠΎΠ²ΠΈΠΊΠΎΠ², ΠΎΠ»Π΅Π½Π΅ΠΉ, ΡΠ»ΡΡΠΎΠ², Π‘Π½Π΅Π³ΡΡΠΎΡΠΊΠΈ. ΠΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡΠ΅Π·Π°ΡΡ ΠΈΠ· ΡΠ°Π½Π΅ΡΡ ΠΈ ΡΠ°Π·ΡΠΊΡΠ°ΡΠΈΡΡ Π°ΠΊΡΠΈΠ»ΠΎΠ²ΡΠΌΠΈ ΠΈΠ»ΠΈ ΠΌΠ°ΡΠ»ΡΠ½ΡΠΌΠΈ ΠΊΡΠ°ΡΠΊΠ°ΠΌΠΈ.
ΠΠ΅ΡΠΈΠ»Π° Π½Π° ΡΡΡΠΏΠ΅Π½ΡΠΊΠ°Ρ ΠΎΠ±Π΅ΡΠ½ΠΈΡΠ΅ Π³ΠΈΡΠ»ΡΠ½Π΄ΠΎΠΉ ΠΈΠ· ΠΈΡΠΊΡΡΡΡΠ²Π΅Π½Π½ΠΎΠΉ Ρ Π²ΠΎΠΈ.
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, ΡΠΎΠ·Π΄Π°ΡΡ Π΄Π»Ρ Π΄Π΅ΡΠ΅ΠΉ ΡΠΊΠ°Π·ΠΊΡ Π½Π° ΠΠΎΠ²ΡΠΉ Π³ΠΎΠ΄ Π² ΡΠΊΠΎΠ»Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅ ΡΡΡΠ΄Π½ΠΎ ΠΈ Π½Π΅ Π·Π°ΡΡΠ°ΡΠ½ΠΎ ΠΏΠΎ Π±ΡΠ΄ΠΆΠ΅ΡΡ. ΠΠ»Π°Π²Π½ΠΎΠ΅ Π²ΠΊΠ»ΡΡΠΈΡΡ ΡΠ°Π½ΡΠ°Π·ΠΈΡ, ΠΏΡΠΈΠ²Π»Π΅ΡΡ ΠΊ ΠΏΡΠΎΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ΡΠ°Π²Π½ΠΎΠ΄ΡΡΠ½ΡΡ Π»ΡΠ΄Π΅ΠΉ ΠΈ ΡΠΎΠ³Π΄Π° Π±ΡΠΊΠ²Π°Π»ΡΠ½ΠΎ Π·Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄Π½Π΅ΠΉ ΡΡΠ΅Π±Π½ΠΎΠ΅ Π·Π°Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π²Π°ΡΠΈΡ Π΄Π΅ΡΠ΅ΠΉ ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΡΡΡ Π² Π²ΠΎΠ»ΡΠ΅Π±Π½ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ, ΠΊΡΠ΄Π° ΠΈΠΌ Π·Π°Ρ ΠΎΡΠ΅ΡΡΡ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π΄Π΅Π½Ρ.
Π£ΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ° ΠΊ 1 ΡΠ΅Π½ΡΡΠ±ΡΡ. ΠΠ°ΠΊ ΡΠΊΡΠ°ΡΠΈΡΡ ΠΊΠ»Π°ΡΡ?
ΠΠ΅Π½Ρ ΠΠ½Π°Π½ΠΈΠΉ β ΡΡΠΎ Π΄ΠΎΠ»Π³ΠΎΠΆΠ΄Π°Π½Π½ΠΎΠ΅ ΡΠΎΠ±ΡΡΠΈΠ΅ Π΄Π»Ρ ΠΏΠ΅ΡΠ²ΠΎΠΊΠ»Π°ΡΡΠ½ΠΈΠΊΠΎΠ² ΠΈ ΠΈΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ, ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΠ΅ Π΄Π»Ρ ΡΡΠΈΡΠ΅Π»Π΅ΠΉ ΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΠΈ ΡΠΊΠΎΠ»Ρ. Π 1 ΡΠ΅Π½ΡΡΠ±ΡΡ Π²ΡΠ΅ ΡΠΊΠΎΠ»Ρ ΡΡΠ°ΡΠ°ΡΡΡΡ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΡΡ ΠΏΡΠ°Π·Π΄Π½ΠΈΡΠ½ΡΡ ΡΠΊΠΎΠ»ΡΠ½ΡΡ Π»ΠΈΠ½Π΅ΠΉΠΊΡ, ΡΠΊΡΠ°ΡΠΈΡΡ ΡΠΊΠΎΠ»Ρ ΠΈ ΠΊΠ»Π°ΡΡΡ ΠΊ ΠΏΡΠΈΡ ΠΎΠ΄Ρ ΡΠ²ΠΎΠΈΡ ΡΡΠ΅Π½ΠΈΠΊΠΎΠ².
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΠ»ΠΈ Π΄Π»Ρ Π²Π°Ρ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΡΠ°ΡΠΈΡΡ ΠΊΠ»Π°ΡΡ ΠΊ 1 ΡΠ΅Π½ΡΡΠ±ΡΡ ΡΠ²ΠΎΠΈΠΌΠΈ ΡΡΠΊΠ°ΠΌΠΈ, Π° ΡΠ°ΠΊ ΠΆΠ΅ ΠΈΠ΄Π΅ΠΈ ΠΏΠΎ ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠ° Π²ΠΎΠ·Π΄ΡΡΠ½ΡΠΌΠΈ ΡΠ°ΡΠ°ΠΌΠΈ.
Π£ΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ° ΠΊ 1 ΡΠ΅Π½ΡΡΠ±ΡΡ ΡΠ°ΡΠ°ΠΌΠΈ
ΠΠΎΠ·Π΄ΡΡΠ½ΡΠ΅ ΡΠ°ΡΠΈΠΊΠΈ β ΡΡΠΎ ΡΠ΄ΠΈΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ, Π½Π΅ Π΄ΠΎΡΠΎΠ³ΠΎΠΉ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π» Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π°ΡΠΌΠΎΡΡΠ΅ΡΡ ΠΏΡΠ°Π·Π΄Π½ΠΈΠΊΠ° ΠΏΠΎ Π»ΡΠ±ΠΎΠΌΡ ΠΏΠΎΠ²ΠΎΠ΄Ρ. ΠΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΡΡΠΎΠΌΡ Π²ΠΎΠ·Π΄ΡΡΠ½ΡΠ΅ ΡΠ°ΡΡ ΡΠ°ΠΊ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² ΡΠΊΡΠ°ΡΠ΅Π½ΠΈΠΈ Π»ΡΠ±ΡΡ ΠΏΡΠ°Π·Π΄Π½ΠΈΠΊΠΎΠ², ΠΈ Π΄Π΅ΡΡΠΊΠΈΠ΅ ΠΌΠ΅ΡΠΎΠΏΡΠΈΡΡΠΈΡ Π½Π΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅.
ΠΠ· Π²ΠΎΠ·Π΄ΡΡΠ½ΡΡ ΡΠ°ΡΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠΎΡΡΠΆΠ°ΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΡΠΈΠ³ΡΡΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ²ΠΎΠΊΠ»Π°ΡΠΊΠΈ, ΡΠΈΡΡΡ ΠΈ Π±ΡΠΊΠ²Ρ, ΡΠ°Π΄ΡΠ³Π°, ΠΌΡΠ»ΡΡΠΈΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ Π³Π΅ΡΠΎΠΈ ΠΈ Ρ.ΠΏ. Π‘ ΡΠ°ΠΊΠΈΠΌ ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΠ΅ΠΌ ΡΠΊΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΡΠΎΠ²Π°ΡΡΡΡ.
ΠΡΠ»ΠΈ Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π·Π°ΠΊΠ°Π·Π°ΡΡ Π²ΠΎΠ·Π΄ΡΡΠ½ΡΠ΅ ΡΠ°ΡΠΈΠΊΠΈ, Π½Π°Π΄ΡΡΡΠ΅ Π³Π΅Π»ΠΈΠ΅ΠΌ, ΡΠΎ Π±ΡΠ΄ΡΡΠ΅ ΡΠ²Π΅ΡΠ΅Π½Ρ, Π²Π°Ρ ΡΠΊΠΎΠ»ΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ Π±ΡΠ΄Π΅Ρ Π²Π΅Π»ΠΈΠΊΠΎΠ»Π΅ΠΏΠ΅Π½. ΠΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠ΄Π²ΡΠ·Π°ΡΡ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ Π³Π΅Π»ΠΈΠ΅Π²ΠΎΠΌΡ ΡΠ°ΡΠΈΠΊΡ ΠΊ ΡΡΡΠ»Ρ ΠΈΠ»ΠΈ ΠΏΠ°ΡΡΠ΅ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ Π²ΡΡΠΎΡΠ΅, ΡΡΠΎΠ±Ρ ΡΠΊΠΎΠ»ΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ Π·Π°ΡΠΈΡΠ» Π½ΠΎΠ²ΡΠΌΠΈ ΠΊΡΠ°ΡΠΊΠ°ΠΌΠΈ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ±ΡΠ°ΡΡ Π²ΠΎΠ·Π΄ΡΡΠ½ΡΠ΅ ΡΠ°ΡΠΈΠΊΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ²Π΅ΡΠ°, Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΎΡΡΠ΅Π½ΠΊΠΎΠ² ΠΈΠ»ΠΈ ΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΡΠΈΠΊΠΈ Ρ Π½Π°Π΄ΠΏΠΈΡΡΠΌΠΈ ΠΈ ΡΠΈΡΡΠ½ΠΊΠ°ΠΌΠΈ. ΠΠΎ ΡΠ»ΡΡΠ°Ρ ΠΏΡΠ°Π·Π΄Π½ΠΎΠ²Π°Π½ΠΈΡ 1 ΡΠ΅Π½ΡΡΠ±ΡΡ ΠΎΡΠ΅Π½Ρ Π·Π΄ΠΎΡΠΎΠ²ΠΎ ΡΠΌΠΎΡΡΡΡΡΡ ΡΠ°ΡΠΈΠΊΠΈ Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π²Π΅ΡΠ΅Π»ΡΡ ΠΌΠΎΡΠ΄Π°ΡΠ΅ΠΊ ΠΈ ΠΎΡΠ΅Π½Π½ΠΈΡ Π»ΠΈΡΡΡΠ΅Π².
ΠΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π·Π°ΠΊΠ°ΠΆΠΈΡΠ΅ Π½Π°Π΄ΡΠ²Π½ΡΠ΅ ΡΠ²Π΅ΡΡ. Π‘ΡΠΎΡΡ ΡΠ°ΠΊΠΈΠ΅ ΡΠ²Π΅ΡΡ ΠΎΡΠ΅Π½Ρ Π½Π΅ Π΄ΠΎΡΠΎΠ³ΠΎ. Π, ΠΊΡΡΠ°ΡΠΈ Π³ΠΎΠ²ΠΎΡΡ, ΠΏΡΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΠΈΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ. ΠΠΎΠ½Π°Π΄ΠΎΠ±ΡΡΡΡ Π»ΠΈΡΡ: Π½Π°ΡΠΎΡ ΠΈ Π΄Π»ΠΈΠ½Π½ΡΠ΅ ΡΠ°ΡΠΈΠΊΠΈ Π΄Π»Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠΎΠ΄ΡΠΎΠ±Π½ΡΠΉ ΠΌΠ°ΡΡΠ΅Ρ ΠΊΠ»Π°ΡΡ ΠΏΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ²Π΅ΡΠΎΠ² ΠΈΠ· ΡΠ°ΡΠΈΠΊΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π² Π²ΠΈΠ΄Π΅ΠΎ.
ΠΠΎΡΠΎΠ²ΡΠ΅ ΡΠ²Π΅ΡΡ ΡΠ°Π·Π»ΠΎΠΆΠΈΡΠ΅ Π½Π° ΠΏΠ°ΡΡΠ°Ρ .
ΠΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΎΡΠΎΡΠΌΠΈΡΠ΅ Π²ΠΎΠ·Π΄ΡΡΠ½ΡΠΌΠΈ ΡΠ°ΡΠΈΠΊΠ°ΠΌΠΈ Π²Ρ ΠΎΠ΄Π½ΡΡ Π΄Π²Π΅ΡΡ Π² ΡΠΊΠΎΠ»ΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ. ΠΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠ΄Π²Π΅ΡΠΈΡΡ Π²ΠΎΠ·Π΄ΡΡΠ½ΡΠ΅ ΡΠ°ΡΠΈΠΊΠΈ ΠΈΠ»ΠΈ ΠΆΠ΅ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ· Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΌΠ½ΡΡ Π³ΠΈΡΠ»ΡΠ½Π΄Ρ.
ΠΠ°ΠΊ ΡΠΊΡΠ°ΡΠΈΡΡ ΡΠΊΠΎΠ»ΡΠ½ΡΡ Π΄ΠΎΡΠΊΡ ΠΊ 1 ΡΠ΅Π½ΡΡΠ±ΡΡ?
Π¨ΠΊΠΎΠ»ΡΠ½Π°Ρ Π΄ΠΎΡΠΊΠ° ΠΊ 1 ΡΠ΅Π½ΡΡΠ±ΡΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠ·Π»ΡΡΠ°ΡΡ ΠΏΡΠ°Π·Π΄Π½ΠΈΡΠ½ΠΎΠ΅ Π½Π°ΡΡΡΠΎΠ΅Π½ΠΈΠ΅. ΠΡΠ»ΠΈ ΡΡΠΈΡΠ΅Π»Ρ Π²Π»Π°Π΄Π΅Π΅Ρ Ρ ΡΠ΄ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΌΠΈ Π½Π°Π²ΡΠΊΠ°ΠΌΠΈ, ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΠΎΡΠΎΡΠΌΠΈΡΡ ΡΠΊΠΎΠ»ΡΠ½ΡΡ Π΄ΠΎΡΠΊΡ ΡΠΈΡΡΠ½ΠΊΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°Π½Π΅ΡΡΠΈ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠ°Π·Π½ΠΎΡΠ²Π΅ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Π»Π°.
Π£ΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ° ΠΊ 1 ΡΠ΅Π½ΡΡΠ±ΡΡ Π² 11 ΠΊΠ»Π°ΡΡΠ΅ ΡΠ²ΠΎΠΈΠΌΠΈ ΡΡΠΊΠ°ΠΌΠΈ
ΠΡΠ΅ ΠΎΠ΄ΠΈΠ½ Π²Π°ΡΠΈΠ°Π½Ρ β ΡΡΠΎ ΡΠ°ΡΠΏΠ΅ΡΠ°ΡΠ°ΡΡ Π³ΠΎΡΠΎΠ²ΡΠ΅ ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ ΠΈ ΠΏΠ»Π°ΠΊΠ°ΡΡ ΠΈ ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΡΡ ΠΈΡ ΠΊ ΡΠΊΠΎΠ»ΡΠ½ΠΎΠΉ Π΄ΠΎΡΠΊΠ΅.
ΠΡ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΠΌ ΠΠ°ΠΌ ΡΠ°ΡΠΏΠ΅ΡΠ°ΡΠ°ΡΡ ΡΡΠΊΡΡ ΠΈ ΠΎΡΠ΅Π½Ρ ΠΊΡΠ°ΡΠΈΠ²ΡΡ Π½Π°Π΄ΠΏΠΈΡΡ Β«1 ΡΠ΅Π½ΡΡΠ±ΡΡ β ΠΠ΅Π½Ρ ΠΠ½Π°Π½ΠΈΠΉΒ».
Π’Π°ΠΊΠΎΠ΅ ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΎΡΠ΅Π½Ρ Π±ΡΡΡΡΠΎ, Π° ΠΏΠΎ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΠΈ 1 ΡΠ΅Π½ΡΡΠ±ΡΡ ΡΠ±ΡΠ°ΡΡ Π΄Π΅ΠΊΠΎΡ Π΄ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ Π³ΠΎΠ΄Π° Π΄Π»Ρ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ.
ΠΠ°ΠΊ ΡΠΊΡΠ°ΡΠΈΡΡ ΠΊΠ»Π°ΡΡ Π½Π° Π½ΠΎΠ²ΡΠΉ Π³ΠΎΠ΄: ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠ°, Π²ΠΈΠ΄Ρ ΡΠΊΡΠ°ΡΠ΅Π½ΠΈΡ, ΠΌΠ°ΡΡΠ΅Ρ ΠΊΠ»Π°ΡΡ
Π‘Π°ΠΌΡΠΉ Π»ΡΠ±ΠΈΠΌΡΠΉ ΠΈ ΡΠ°ΠΌΡΠΉ ΡΠ°Π΄ΠΎΡΡΠ½ΡΠΉ Π΄Π΅Π½Ρ Π² Π³ΠΎΠ΄Ρ β ΠΏΡΠ°Π·Π΄Π½ΠΈΠΊ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π³ΠΎΠ΄Π°. ΠΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΆΠ΄ΡΡ ΡΡΠΎΠ³ΠΎ Π΄Π½Ρ Π΄Π΅ΡΠΈ, ΡΠ°Π΄ΡΡΡΡ ΠΏΠΎΠ΄Π°ΡΠΊΠ°ΠΌ ΠΈ Π²Π΅ΡΠ΅Π»ΠΎΠΉ Π°ΡΠΌΠΎΡΡΠ΅ΡΠ΅. Π§ΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΡΠ°Π·Π΄Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠΊΠΈΠΌ ΠΈ ΠΏΠΎ β Π½Π°ΡΡΠΎΡΡΠ΅ΠΌΡ ΠΊΡΠ°ΡΠΎΡΠ½ΡΠΌ, ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠΎΠΈΡ ΠΏΠΎΠ΄ΡΠΌΠ°ΡΡ ΠΈ ΠΎΠ± ΡΠΊΡΠ°ΡΠ΅Π½ΠΈΠΈ ΠΊΠ»Π°ΡΡΠ° Π½Π° Π½ΠΎΠ²ΡΠΉ Π³ΠΎΠ΄ ΡΠ²ΠΎΠΈΠΌΠΈ ΡΡΠΊΠ°ΠΌΠΈ. ΠΠΎΠ΄ΠΎΠ±Π½Π°Ρ Π·Π°Π΄Π°ΡΠ° ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΏΠΎ Π²ΠΊΡΡΡ ΡΠΊΠΎΠ»ΡΠ½ΠΈΠΊΠ°ΠΌ, Π²Π΅Π΄Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ Π΄Π΅ΠΊΠΎΡ ΠΈ ΠΏΠΎΡΡΠ°ΡΡΠ²ΠΎΠ²Π°ΡΡ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅. Π Π½Π°ΡΠ΅ΠΉ ΡΡΠ°ΡΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Ρ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΈΠ΄Π΅ΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎΠ΄Π½ΠΈΡ ΡΠΊΡΠ°ΡΠ΅Π½ΠΈΠΉ.
Π£ΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ° ΠΊ Π½ΠΎΠ²ΠΎΠΌΡ Π³ΠΎΠ΄Ρ
Π’Π΅ΠΌΠ°ΡΠΈΠΊΠ° Π΄Π΅ΠΊΠΎΡΠ°ΡΠΈΠΉ ΠΊ Π½ΠΎΠ²ΠΎΠΌΡ Π³ΠΎΠ΄Ρ ΡΡΠ΅Π·Π²ΡΡΠ°ΠΉΠ½ΠΎ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·Π½Π° ΠΈ ΡΠ²Π»Π΅ΠΊΠ°ΡΠ΅Π»ΡΠ½Π°. ΠΠ»Ρ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ΅Π³ΠΎ Π΄Π΅ΠΊΠΎΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π΅Π»ΠΎΡΠ½ΡΠ΅ ΠΈΠ³ΡΡΡΠΊΠΈ ΠΈ ΡΠ½Π΅ΠΆΠΈΠ½ΠΊΠΈ Π½Π° ΠΎΠΊΠ½Π°Ρ . Π£ΠΌΠ΅ΡΡΠ½ΡΠΌ Π±ΡΠ΄Π΅Ρ Π»ΡΠ±ΠΎΠΉ Π½Π°ΡΡΠ΄Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅Ρ, ΡΠ΅ΠΌ Π±ΠΎΠ»Π΅Π΅ ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΡΠ°ΡΡΠ²Π΅ΡΠΎΠΊ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½Π΅ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎ.
ΠΠ΄Π΅ΠΈ
ΠΡΠ΅ ΡΠΈΠΏΡ ΡΠΊΡΠ°ΡΠ΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ»ΠΎΠ²Π½ΠΎ ΠΊΠ»Π°ΡΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π° ΠΏΠΎΠΊΡΠΏΠ½ΡΠ΅ ΠΈ ΡΠ°ΠΌΠΎΠ΄Π΅Π»ΡΠ½ΡΠ΅. ΠΡΠΈ ΡΡΠΎΠΌ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½Π΅Ρ ΡΠ°Π·Π½ΠΈΡΡ, ΠΈΠ· ΡΠ΅Π³ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ, Π²Π΅Π΄Ρ Π² Ρ ΠΎΠ΄ ΠΏΠΎΠΉΠ΄ΡΡ Π΄Π°ΠΆΠ΅ Π½Π΅Π½ΡΠΆΠ½ΡΠ΅ Π²Π΅ΡΠΈ.
ΠΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ:
- ΠΡΠΌΠ°Π³Π°. ΠΡΡΠ΅Π·Π°Π½ΠΈΠ΅ ΡΠ½Π΅ΠΆΠΈΠ½ΠΎΠΊ ΠΈ ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π΄Π΅ΠΊΠΎΡΠ°, ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΌΠ½ΡΡ ΡΠΈΠ³ΡΡ, Π³ΠΈΡΠ»ΡΠ½Π΄ ΠΈ Π°ΠΏΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΉ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΡΠ°ΡΠ°ΡΠ΅ΡΠΎΠ² Π½Π° ΠΎΠΊΠ½Π° ΠΈ Π΄Π΅ΠΊΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π»ΡΠ±ΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ΅ΠΉ ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΠΈ.
- Π’ΠΊΠ°Π½Ρ. ΠΠ±ΡΠ΅Π·ΠΊΠΈ ΠΏΠΎΠ»ΠΎΡΠ΅Π½ ΡΠ°Π·Π»ΠΈΡΠ½ΠΎΠΉ ΠΏΠ»ΠΎΡΠ½ΠΎΡΡΠΈ ΠΈ ΡΡΡΡΠΊΡΡΡΡ ΠΏΠΎΠ΄ΠΎΠΉΠ΄ΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π΄Π΅ΠΊΠΎΡΠ°. Π’Π°ΠΊΠΆΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ»Ρ ΠΈ Π³Π°Π·Π° ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΌΠ½ΡΠ΅ Π³ΠΈΡΠ»ΡΠ½Π΄Ρ, ΠΈΠΌΠΈΡΠ°ΡΠΈΡ ΡΠ½Π΅Π³Π° ΠΈΠ»ΠΈ ΠΎΠ±Π»Π°ΠΊΠΎΠ².
- ΠΠΈΡΠΈ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ Π³ΠΈΡΠ»ΡΠ½Π΄ ΠΈ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΌΠ½ΡΡ ΡΠΈΠ³ΡΡ. Π‘Π°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠΊΡΠ°ΡΠΈΡΡ ΠΊΠ»Π°ΡΡ β ΡΠ°Π·Π²Π΅ΡΠΈΡΡ Π²ΡΡΠ΅Π·Π°Π½Π½ΡΠ΅ ΡΠ½Π΅ΠΆΠΈΠ½ΠΊΠΈ Π½Π° Π½ΠΈΡΡΡ ΡΠ°Π·Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ. ΠΠΎΠ΄ΠΎΠ±Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅ΠΊΠΎΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΎΡΡ ΠΈ ΡΡΠ΅Π½Ρ, Π° ΡΠ°ΠΊΠΆΠ΅ Π·ΠΎΠ½ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ.
- ΠΠ»Π΅ΡΡΠΊΠΈ, Π±ΠΈΡΠ΅Ρ. ΠΠΎΠ΄ΠΎΠΉΠ΄ΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΡΠ΅ΠΊΡΠ° ΡΠΈΡΠ½ΠΈΡ Π½Π° ΡΠΆΠ΅ Π³ΠΎΡΠΎΠ²ΡΡ ΠΏΠΎΠ΄Π΅Π»ΠΊΠ°Ρ . ΠΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎ ΠΈ ΠΎΡΠ΅Π½Ρ ΡΡΠΈΠ»ΡΠ½ΠΎ ΡΠΌΠΎΡΡΡΡΡΡ ΠΏΠΎΠ΄Π²Π΅ΡΠ΅Π½Π½ΡΠ΅ Π½Π° ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΠΉ Π»Π΅ΡΠΊΠ΅ ΠΊΡΡΠΏΠ½ΡΠ΅ Π±ΡΡΠΈΠ½ΠΊΠΈ ΡΠ°Π·Π½ΡΡ ΡΠ²Π΅ΡΠΎΠ².
ΠΠ»Ρ ΠΈΠ·Π³ΠΎΡΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΏΠΎΠ΄Π΅Π»ΠΎΠΊ Π½Π° Π½ΠΎΠ²ΡΠΉ Π³ΠΎΠ΄ ΡΠ²ΠΎΠΈΠΌΠΈ ΡΡΠΊΠ°ΠΌΠΈ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΠΊΠ»Π΅ΠΉ ΠΠΠ, ΡΠΊΠΎΡΡ, Π°ΠΊΡΠΈΠ»ΠΎΠ²ΡΠ΅ ΠΊΡΠ°ΡΠΊΠΈ ΠΈΠ»ΠΈ Π³ΡΠ°ΡΡ, Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈ ΡΠ°Π½ΡΠ°Π·ΠΈΠΈ. ΠΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΠΏΠΎΠ΄Π΅Π»ΠΊΠΈ ΠΏΡΠΈΡΡΠ½ΠΎ ΠΌΠ°ΡΡΠ΅ΡΠΈΡΡ Π²ΡΠ΅ΠΉ ΡΠ΅ΠΌΡΠ΅ΠΉ, Π° Π΄Π»Ρ ΡΠΊΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ² Π±ΡΠ΄Π΅Ρ ΡΠΌΠ΅ΡΡΠ½ΡΠΌ Π²ΡΠ΄Π΅Π»ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠΎΠΊΠΎΠ² ΡΠ²ΠΎΡΡΠ΅ΡΡΠ²Π°.
Π£ΠΊΡΠ°ΡΠ°Π΅ΠΌ Π²Ρ ΠΎΠ΄Π½ΡΡ Π΄Π²Π΅ΡΡ
ΠΠ΅ΡΠ²ΠΎΠ΅ Π²ΠΏΠ΅ΡΠ°ΡΠ»Π΅Π½ΠΈΠ΅ ΠΎΡ ΠΊΠ»Π°ΡΡΠ° ΠΈ ΠΎΠΊΡΡΠΆΠ°ΡΡΠ΅ΠΉ ΠΎΠ±ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π±ΡΠ΄Π΅Ρ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΡ Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ Π΄Π²Π΅ΡΠΈ. ΠΠ»Ρ Π½Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ³ΠΎΡΠΎΠ²ΠΈΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΎΠ±ΡΠ΅ΠΌΠ½ΡΡ ΡΠ½Π΅ΠΆΠΈΠ½ΠΊΡ, ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΡΡ Π½Π°Π΄ΠΏΠΈΡΡ ΠΈΠ»ΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎΠ΄Π½ΠΈΠΉ Π²Π΅Π½ΠΎΠΊ. ΠΠ³ΠΎ ΠΎΠ±ΡΡΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ ΠΈΠ· ΠΏΡΠΈΡΠΎΠ΄Π½ΡΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΎΠ². ΠΡΠ»ΠΈΡΠ½Π°Ρ ΠΈΠ΄Π΅Ρ β ΡΠΊΡΠ°ΡΠΈΡΡ Π²Π΅Π½ΠΎΠΊ ΠΆΠΈΠ²ΡΠΌΠΈ ΡΠΈΡΠΊΠ°ΠΌΠΈ, ΡΡΠΊΠΈΠΌΠΈ Π±Π°Π½ΡΠ°ΠΌΠΈ ΠΈ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ Π΅Π»ΠΎΡΠ½ΡΠΌΠΈ ΠΈΠ³ΡΡΡΠΊΠ°ΠΌΠΈ.
Π£ΠΊΡΠ°ΡΠ°Π΅ΠΌ ΠΎΠΊΠ½Π°
ΠΠΆΠΈΠ²ΠΈΡΡ ΡΠΊΠΎΠ»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅Ρ ΠΊ Π½ΠΎΠ²ΠΎΠΌΡ Π³ΠΎΠ΄Ρ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΠΈ ΡΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΎΠΊΠΎΠ½. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΠ½Π΅ΠΆΠ½ΠΈΠΊΠΈ, Π½ΠΎ Π±ΠΎΠ»ΡΡΠΈΠΉ ΠΏΡΠΎΡΡΠΎΡ Π΄Π»Ρ ΡΠ°Π½ΡΠ°Π·ΠΈΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡ ΡΠΈΡΡΠ½ΠΊΠΈ ΠΈΠ»ΠΈ ΡΡΠ°ΡΠ°ΡΠ΅ΡΡ.
ΠΠ°ΠΊ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡ:
- ΠΠ° ΡΡΠ΅ΠΊΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΊΠ° ΠΌΠ΅ΡΡΠ° ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π°Π΄ΠΏΠΈΡΡ (Β«Π‘ΡΠ°ΡΡΠ»ΠΈΠ²ΠΎΠ³ΠΎ 2021 Π³ΠΎΠ΄Π°Β», Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ), ΡΠΈΡΡΠ½ΠΊΠΎΠ² ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠΊΡΠ°ΡΠ΅Π½ΠΈΠΉ;
- ΠΠ°Π½ΠΎΡΡΡΡΡ ΡΠ°ΠΌΡΠ΅ ΠΊΡΡΠΏΠ½ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΏΠΎΡΠ»Π΅ ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡ Π²ΡΠ΅ΠΌΡ ΠΈ ΠΌΠ΅Π»ΠΊΠΈΡ Π΄Π΅ΡΠ°Π»Π΅ΠΉ. Π ΠΈΡΡΠ½ΠΊΠΈ Π»ΡΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π³ΡΠ°ΡΡΡ ΠΈΠ»ΠΈ Π°ΠΊΡΠΈΠ»ΠΎΠ²ΡΠΌΠΈ ΠΊΡΠ°ΡΠΊΠ°ΠΌΠΈ. ΠΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Ρ ΠΈ Π»Π΅Π³ΠΊΠΎ ΡΠΌΡΠ²Π°ΡΡΡΡ ΡΠΎ ΡΡΠ΅ΠΊΠ»ΡΠ½Π½ΠΎΠΉ ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΠΈ;
- ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΠ°ΡΠ°ΡΠ΅ΡΠΎΠ² ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΡΠ΅Π·Π°ΡΡΡΡ Π±ΡΠΌΠ°ΠΆΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡ. Π§Π΅ΡΠ΅Π· Π½ΠΈΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΊΡΠ°ΡΠΎΠΊ Π½Π°Π½ΠΎΡΡΡ ΡΠΈΡΡΠ½ΠΊΠΈ. ΠΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΊΠ»Π΅ΠΉ ΠΠΠ, ΡΠΌΠ΅ΡΠ°Π½Π½ΡΠΉ Ρ Π±Π»Π΅ΡΡΠΊΠ°ΠΌΠΈ. ΠΠΎΡΠ»Π΅ Π²ΡΡΡΡ Π°Π½ΠΈΡ ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΡ ΡΡΠ°Π½Π΅Ρ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΠΉ, Π½ΠΎ Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ Π±Π»Π΅ΡΠΊΠΎΠΌ.
ΠΠ»Ρ Π΄Π΅ΠΊΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ΅ΠΊΠ»ΡΠ½Π½ΠΎΠΉ ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°Π·Π²Π΅Π΄Π΅Π½Π½ΡΡ Ρ Π²ΠΎΠ΄ΠΎΠΉ Π·ΡΠ±Π½ΡΡ ΠΏΠ°ΡΡΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π°Π΄ΠΎ Π΄ΠΎΠ±ΠΈΡΡΡΡ ΠΊΠΎΠ½ΡΠΈΡΡΠ΅Π½ΡΠΈΠΈ Π³ΡΡΡΠΎΠΉ ΡΠΌΠ΅ΡΠ°Π½Ρ, Π° Π½Π°Π½Π΅ΡΠ΅Π½ΠΈΠ΅ Β«ΠΊΡΠ°ΡΠΊΠΈΒ» Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΡΠ°ΡΠΎΠΉ Π·ΡΠ±Π½ΠΎΠΉ ΡΠ΅ΡΠΊΠΎΠΉ ΠΈΠ»ΠΈ ΠΊΠΈΡΡΡΡ. ΠΡΡΠ°ΡΠΈ, Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΌ ΡΠΎΡΡΠ°Π²ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±ΠΈΡΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΠΎΠΉ ΡΠ²Π΅ΡΠ½ΠΎΠΉ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π² ΠΏΠΈΡΠ΅Π²ΠΎΠΉ ΠΊΡΠ°ΡΠΈΡΠ΅Π»Ρ ΠΈΠ»ΠΈ Π³ΡΠ°ΡΡ.
ΠΠΎΠΏΡΠΎΡ, ΠΊΠ°ΠΊ ΡΠΊΡΠ°ΡΠΈΡΡ ΠΊΠ»Π°ΡΡ Π½Π° Π½ΠΎΠ²ΡΠΉ Π³ΠΎΠ΄, ΠΊΠ°ΠΆΠ΄Π°Ρ ΡΠΊΠΎΠ»Π° ΡΠ΅ΡΠ°Π΅Ρ ΠΏΠΎ β ΡΠ²ΠΎΠ΅ΠΌΡ. ΠΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ β ΠΏΡΠΈΠ²Π»Π΅ΡΡ ΠΊ ΡΡΠΎΠΌΡ ΠΏΡΠΎΡΠ΅ΡΡΡ Π΄Π΅ΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΡ Π² ΠΈΠ³ΡΠΎΠ²ΠΎΠΉ ΡΠΎΡΠΌΠ΅ Π·Π°Π½ΡΡΡ ΠΈΠ·Π³ΠΎΡΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ Π½Π΅ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΏΠΎΠ΄Π΅Π»ΠΎΠΊ. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΈΠ΄Π΅ΠΉ ΠΊΡΠ°ΡΠΈΠ²ΠΎΠ³ΠΎ Π΄Π΅ΠΊΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠ°, Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ Π½Π΅ ΡΡΠ΅Π±ΡΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠΈΠ½Π°Π½ΡΠΎΠ²ΡΡ Π·Π°ΡΡΠ°Ρ, Π° ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ Π²ΡΠ·ΠΎΠ²ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Π² ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ.
ΠΠΎΠ»ΡΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠ³ΠΎ Π½Π° Π½Π°ΡΠ΅ΠΌ ΡΠ°ΠΉΡΠ΅:
ΠΠ°ΠΊ ΡΠΊΡΠ°ΡΠΈΡΡ ΠΊΠ»Π°ΡΡ ΠΊ ΠΠΎΠ²ΠΎΠΌΡ Π³ΠΎΠ΄Ρ? ΠΡΠΎΡΡΡΠ΅ ΠΈΠ΄Π΅ΠΈ
ΠΠ΅ΡΠΈ Π²ΡΠ΅Ρ Π²ΠΎΠ·ΡΠ°ΡΡΠΎΠ² Ρ Π½Π΅ΡΠ΅ΡΠΏΠ΅Π½ΠΈΠ΅ΠΌ ΠΆΠ΄ΡΡ Π½ΠΎΠ²ΠΎΠ³ΠΎΠ΄Π½ΠΈΡ ΠΏΡΠ°Π·Π΄Π½ΠΈΠΊΠΎΠ² β Π²ΠΎΠ»ΡΠ΅Π±Π½ΠΎΠΉ ΠΏΠΎΡΡ, Ρ ΡΡΡΡΡΡΠ΅Π³ΠΎ ΡΠ½Π΅Π³Π°, ΠΏΠΎΠ΄Π°ΡΠΊΠΎΠ², ΡΡΡΠΏΡΠΈΠ·ΠΎΠ² ΠΈ Π·ΠΈΠΌΠ½ΠΈΡ ΠΊΠ°Π½ΠΈΠΊΡΠ». ΠΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π²Π°ΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠ°Π·Π΄Π½ΠΈΡΠ½ΠΎΠ΅ Π½Π°ΡΡΡΠΎΠ΅Π½ΠΈΠ΅ ΠΈ Π² ΠΊΠ»Π°ΡΡΠ΅. Π’Π°ΠΊ ΠΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΡΠ΅ Ρ Π΄Π΅ΡΠΎΠΊ ΠΏΡΠ΅Π΄Π²ΠΊΡΡΠ΅Π½ΠΈΠ΅ Π²ΠΎΠ»ΡΠ΅Π±Π½ΠΎΠ³ΠΎ ΠΏΡΠ°Π·Π΄Π½ΠΈΠΊΠ° ΠΈ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΡΡ ΡΠ²ΠΎΡΡΠ΅ΡΠΊΠΈ, Π²Π΅Π΄Ρ ΡΠΊΡΠ°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΊΠ°Π±ΠΈΠ½Π΅ΡΠ° ΠΌΠΎΠΆΠ½ΠΎ Π΄ΡΡΠΆΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ Π²ΡΠ΅ΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ.
ΠΠ°ΠΊ ΡΠΊΡΠ°ΡΠΈΡΡ ΠΊΠ»Π°ΡΡ ΠΊ ΠΠΎΠ²ΠΎΠΌΡ Π³ΠΎΠ΄Ρ?
ΠΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ°ΡΡΠΎ ΡΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΊΠ»Π°ΡΡΠΎΠ² Π·Π°Π½ΠΈΠΌΠ°ΡΡΡΡ ΡΠ°ΠΌΠΈ ΡΡΠΈΡΠ΅Π»Ρ, ΡΡΠ°ΡΡΠ΅ΠΊΠ»Π°ΡΡΠ½ΠΈΠΊΠΈ ΠΈΠ»ΠΈ ΠΌΠ°ΠΌΡ ΠΈ ΠΏΠ°ΠΏΡ ΡΡΠ΅Π½ΠΈΠΊΠΎΠ². ΠΠΎ Pagremuski.info ΠΏΡΠΈΠ³ΠΎΡΠΎΠ²ΠΈΠ»ΠΈ Π΄Π»Ρ ΠΠ°Ρ ΠΌΠ°ΡΡΡ ΠΏΡΠΎΡΡΡΡ ΠΈΠ΄Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π° ΡΡΠΎΠΊΠ°Ρ ΡΡΡΠ΄Π°, ΠΈ ΠΏΡΠΈ ΡΡΠΎΠΌ, Π½Π΅ Π·Π°ΡΡΠ°ΡΠΈΠ² Π±ΠΎΠ»ΡΡΠΈΡ Π΄Π΅Π½Π΅Π³ Π½Π° Π½ΠΎΠ²ΠΎΠ³ΠΎΠ΄Π½ΠΈΠΉ Π΄Π΅ΠΊΠΎΡ.
ΠΠΎΠ²ΠΎΠ³ΠΎΠ΄Π½ΡΡ Π΅Π»ΠΊΠ° Π² ΠΊΠ»Π°ΡΡΠ΅
Π‘ΡΠ°Π·Ρ Π½ΡΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π½Π΅ ΡΡΠΎΠΈΡ Π² ΠΊΠ»Π°ΡΡΠ΅ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΠΆΠΈΠ²ΡΡ Π΅Π»ΠΊΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½Π° ΠΎΡΡΠΏΠ°Π΅ΡΡΡ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΡΡΠΎΡΠ°. Π’Π°ΠΊ ΠΆΠ΅ Π½Π΅ ΡΡΠΎΠΈΡ ΡΠΊΡΠ°ΡΠ°ΡΡ Π΄Π°ΠΆΠ΅ ΠΈΡΠΊΡΡΡΡΠ²Π΅Π½Π½ΡΡ Π½ΠΎΠ²ΠΎΠ³ΠΎΠ΄Π½ΡΡ ΠΊΡΠ°ΡΠ°Π²ΠΈΡΡ ΡΡΠ΅ΠΊΠ»ΡΠ½Π½ΡΠΌΠΈ Π΅Π»ΠΎΡΠ½ΡΠΌΠΈ ΠΈΠ³ΡΡΡΠΊΠ°ΠΌΠΈ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π»Π΅Π³ΠΊΠΎ ΡΠ°Π·Π±ΠΈΠ²Π°ΡΡΡΡ ΠΈ ΠΏΡΠΈΡΠΈΠ½ΡΡΡ Π²ΡΠ΅Π΄ Π·Π΄ΠΎΡΠΎΠ²ΡΡ Π΄Π΅ΡΠ΅ΠΉ.
ΠΡΡΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΈΡΠΊΡΡΡΡΠ²Π΅Π½Π½ΡΡ Π΅Π»ΠΎΡΠΊΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΈ ΡΠΊΡΠ°ΡΠΈΡΡ Π΅Π΅ Π΄Π΅ΡΡΠΊΠΈΠΌΠΈ ΠΏΠΎΠ΄Π΅Π»ΠΊΠ°ΠΌΠΈ ΠΈΠ»ΠΈ ΠΏΠΎΠΏΡΠΎΡΠΈΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ΅Π±Π΅Π½ΠΊΠ° ΠΏΡΠΈΠ½Π΅ΡΡΠΈ ΠΈΠ· Π΄ΠΎΠΌΠ° ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ Π΅Π»ΠΎΡΠ½ΠΎΠΉ ΠΈΠ³ΡΡΡΠΊΠ΅, ΡΡΠΎ Π½Π΅ ΠΏΠΎΠ½Π΅ΡΠ΅Ρ Π±ΠΎΠ»ΡΡΠΈΡ ΡΠΈΠ½Π°Π½ΡΠΎΠ²ΡΡ Π·Π°ΡΡΠ°Ρ, Π° Π²Π°ΡΠ° Ρ Π²ΠΎΠΉΠ½Π°Ρ ΠΊΡΠ°ΡΠ°Π²ΠΈΡΠ° ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠ°Π·Π΄Π½ΠΈΡΠ½ΡΠΉ Π±Π»Π΅ΡΠΊ.
Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΌΠ°Π»Π΅Π½ΡΠΊΡΡ Π΅Π»ΠΎΡΠΊΡ Π½Π° ΡΡΠΎΠ» ΡΡΠΈΡΠ΅Π»Ρ. Π Π°Π·ΡΠΌΠ΅Π΅ΡΡΡ, Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΡΠΏΠΈΡΡ, Π½ΠΎ Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΡΡ Π΄Π΅ΡΠΊΠ°ΠΌ ΡΠ΄Π΅Π»Π°ΡΡ Π΅Π΅ Π½Π° ΡΡΠΎΠΊΠ΅ ΡΡΡΠ΄Π°. Π Ρ ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ ΡΠ°ΠΌΠ°Ρ ΠΊΡΠ°ΡΠΈΠ²Π°Ρ, ΡΠ° ΠΈ Π±ΡΠ΄Π΅Ρ ΡΠΊΡΠ°ΡΠ°ΡΡ ΡΡΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΡΡΠΎΠ».
ΠΡΠ»ΠΈ ΠΌΠ΅ΡΡΠΎ Π² ΠΊΠ»Π°ΡΡΠ΅ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΅Π»ΠΊΡ, ΡΠΎ ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ Π΅Π΅ ΠΈΠ· Π±ΡΠΌΠ°Π³ΠΈ ΠΈΠ»ΠΈ Π³ΠΈΡΠ»ΡΠ½Π΄ ΠΈ ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΡΡ Π½Π° ΡΠΊΠΎΠ»ΡΠ½ΡΡ Π΄ΠΎΡΠΊΡ, Π΄Π²Π΅ΡΡ ΠΈΠ»ΠΈ ΡΡΠ΅Π½Ρ.
Π£ΠΊΡΠ°ΡΠ°Π΅ΠΌ ΠΎΠΊΠ½Π° Π² ΠΊΠ»Π°ΡΡΠ΅ ΠΊ ΠΠΎΠ²ΠΎΠΌΡ Π³ΠΎΠ΄Ρ
ΠΠΎ ΡΡΠ°Π΄ΠΈΡΠΈΠΈ, Π½Π΅ Π·Π°Π±ΡΠ΄ΡΡΠ΅ ΡΠΊΡΠ°ΡΠΈΡΡ ΠΎΠΊΠ½Π° Π² ΠΊΠ»Π°ΡΡΠ½ΠΎΠΉ ΠΊΠΎΠΌΠ½Π°ΡΠ΅. Π£ΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠ³ΡΡ ΡΠ»ΡΠΆΠΈΡΡ ΠΏΡΠΈΠ²ΡΡΠ½ΡΠ΅ ΡΠ½Π΅ΠΆΠΈΠ½ΠΊΠΈ ΠΈΠ· ΡΠ°Π»ΡΠ΅ΡΠΎΠΊ, Π±Π΅Π»ΠΎΡΠ½Π΅ΠΆΠ½ΡΠ΅ ΡΠ·ΠΎΡΡ ΠΈΠ· Π·ΡΠ±Π½ΠΎΠΉ ΠΏΠ°ΡΡΡ, Π½Π°ΠΊΠ»Π΅Π΅Π½Π½ΡΠ΅ ΡΡΠ°ΡΠ°ΡΠ΅ΡΡ ΠΈΠ»ΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΠΈ.
Π’Π°ΠΊΠΆΠ΅ Π½Π΅ ΡΡΠΎΠΈΡ Π·Π°Π±ΡΠ²Π°ΡΡ ΠΎΠ± ΡΠΊΡΠ°ΡΠ΅Π½ΠΈΠΈ ΠΏΠΎΠ΄ΠΎΠΊΠΎΠ½Π½ΠΈΠΊΠ°. ΠΠ° Π½Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΡΡ Π΅Π»ΠΎΡΠΊΡ, ΠΈΡΠΊΡΡΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΊΠΈ ΠΈΠ»ΠΈ Π·Π°ΡΡΠ΅Π»ΠΈΡΡ Ρ Π»ΠΎΠΏΡΡΠΌΠΈ Π²Π°ΡΡ ΠΈ ΠΌΠΈΡΡΡΠΎΠΉ.
ΠΡΠ»ΠΈ, ΠΏΠΎ ΠΊΠ°ΠΊΠΈΠΌ-ΡΠΎ ΠΏΡΠΈΡΠΈΠ½Π°ΠΌ ΠΠ°ΠΌ Π½Π΅ ΡΠ°Π·ΡΠ΅ΡΠ°ΡΡ ΠΎΠ±ΠΊΠ»Π΅ΠΈΠ²Π°ΡΡ ΠΈ ΡΠ°Π·ΡΠΈΡΠΎΠ²ΡΠ²Π°ΡΡ ΠΎΠΊΠ½Π°, ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·Π²Π΅ΡΠΈΡΡ ΠΊΡΠ°ΡΠΈΠ²ΡΠ΅ Π³ΠΈΡΠ»ΡΠ½Π΄Ρ.
Π‘Π½Π΅Π³ΠΎΠ²ΠΈΠΊ Π² ΡΠΊΠΎΠ»ΡΠ½ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅
ΠΡΠ»ΠΈ ΠΡ ΡΡΡΡΠ°ΠΈΠ²Π°Π΅ΡΠ΅ ΡΠΊΠΎΠ»ΡΠ½ΡΠ΅ ΡΠΎΡΠ΅Π²Π½ΠΎΠ²Π°Π½ΠΈΡ, Π½Π° ΡΠ°ΠΌΡΠΉ Π»ΡΡΡΠΈΠΉ Π½ΠΎΠ²ΠΎΠ³ΠΎΠ΄Π½ΠΈΠΉ ΠΊΠ»Π°ΡΡ, ΡΠΎ Π±Π΅ΡΡΠΏΠΎΡΠ½ΡΡ ΠΏΠΎΠ±Π΅Π΄Ρ ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΡΠ»ΡΠΆΠΈΡΡ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΊΡΠ°ΡΠΈΠ²ΠΎΠΌΡ ΡΠ½Π΅Π³ΠΎΠ²ΠΈΠΊΡ ΠΈΠ· ΠΏΠ»Π°ΡΡΠΈΠΊΠΎΠ²ΡΡ ΡΡΠ°ΠΊΠ°Π½ΡΠΈΠΊΠΎΠ².
ΠΡΠ΅ ΡΡΠΎ ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ β ΡΡΠΎ ΠΊΡΠΏΠΈΡΡ Π½Π° ΠΎΠΏΡΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅ ΠΎΠ΄Π½ΠΎΡΠ°Π·ΠΎΠ²ΡΠ΅ ΡΡΠ°ΠΊΠ°Π½ΡΠΈΠΊΠΈ ΠΈ Π²ΠΎΠΎΡΡΠΆΠΈΡΡΡ ΡΡΠ΅ΠΏΠ»Π΅ΡΠΎΠΌ. Π ΠΈΡΠΎΠ³Π΅ ΠΡ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ Π²ΠΎΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΊΡΠ°ΡΠ°Π²ΡΠ°, ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΡΠ΄ΠΎΠΌ Ρ Π΅Π»ΠΎΡΠΊΠΎΠΉ ΠΈΠ»ΠΈ ΠΎΠΊΠΎΠ»ΠΎ ΡΠΊΠΎΠ»ΡΠ½ΠΎΠΉ Π΄ΠΎΡΠΊΠΈ. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ½Π΅Π³ΠΎΠ²ΠΈΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π»Π΅Π³ΠΊΠΎ ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΡΡΡΡ Π½Π° Π΄Π²Π΅ΡΡ ΠΈΠ»ΠΈ ΡΠΊΠΎΠ»ΡΠ½ΡΡ Π΄ΠΎΡΠΊΡ.
ΠΠ°ΠΊ ΡΠΊΡΠ°ΡΠΈΡΡ ΡΠΊΠΎΠ»ΡΠ½ΡΡ Π΄ΠΎΡΠΊΡ ΠΊ Π½ΠΎΠ²ΠΎΠΌΡ Π³ΠΎΠ΄Ρ?
ΠΡΡΠ°ΡΠΈ ΠΎ ΡΠΊΠΎΠ»ΡΠ½ΠΎΠΉ Π΄ΠΎΡΠΊΠ΅, Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΡΠ°ΡΠΈΡΡ Π³ΠΈΡΠ»ΡΠ½Π΄Π°ΠΌΠΈ, ΡΠ½Π΅ΠΆΠΈΠ½ΠΊΠ°ΠΌΠΈ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅ΡΠΈΡΡ ΡΠΎΠΆΠ΄Π΅ΡΡΠ²Π΅Π½ΡΠΊΠΈΠΉ Π²Π΅Π½ΠΎΠΊ.
Π ΡΠ»ΠΎΠ²Ρ ΡΠΊΠ°Π·Π°ΡΡ, ΡΠ°ΠΊΠΎΠΉ Π²Π΅Π½ΠΎΠΊ Π½Π΅ ΡΠ»ΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Ρ Π΄Π΅ΡΡΠΌΠΈ, Π²ΡΠ΅, ΡΡΠΎ ΠΠ°ΠΌ Π±ΡΠ΄Π΅Ρ Π½ΡΠΆΠ½ΠΎ ΡΡΠΎ:
- ΠΡΡΠΎΠΊ ΠΏΡΠΎΠ²ΠΎΠ»ΠΎΠΊΠΈ ΠΈΠ»ΠΈ Π²Π΅ΡΠ°Π»ΠΊΠ°;
- Π£ΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΠΏΡΠΈΡΠ΅ΠΏΠΎΠΊ;
- ΠΡΡΠΈΠ½Ρ;
- ΠΡΠ»Π°ΡΠ½Π°Ρ Π»Π΅Π½ΡΠ°;
- ΠΡΠ°ΡΠΊΠ°.
ΠΠ· Π²Π΅ΡΠ°Π»ΠΊΠΈ Π΄Π΅Π»Π°Π΅ΠΌ ΠΊΠ°ΡΠΊΠ°Ρ ΠΊΡΡΠ³Π»ΠΎΠΉ ΡΠΎΡΠΌΡ ΠΈ Π½Π° Π½Π΅Π³ΠΎ ΡΠ΅ΠΏΠ»ΡΠ΅ΠΌ ΠΏΡΠΈΡΠ΅ΠΏΠΊΠΈ, ΡΠ΅ΡΠ΅Π΄ΡΡ Ρ Π±ΡΡΠΈΠ½Π°ΠΌΠΈ. ΠΡΠΈΡΠ΅ΠΏΠΊΠΈ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΊΡΠ°ΡΠΈΠΌ Π² Π½ΡΠΆΠ½ΡΠΉ ΡΠ²Π΅Ρ. ΠΠΎΠ³Π΄Π° Π²Π΅Π½ΠΎΠΊ Π±ΡΠ΄Π΅Ρ Π³ΠΎΡΠΎΠ², ΠΏΠΎΠ²ΡΠΆΠΈΡΠ΅ ΠΊΡΠ°ΡΠΈΠ²ΡΠΉ Π±Π°Π½Ρ ΠΈ ΠΏΡΠΈΠ΄Π΅Π»Π°ΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅Π»ΡΠΊΡ.
ΠΠ°Π΄Π΅Π΅ΠΌΡΡ, Π½Π°Ρ ΠΈΠ΄Π΅ΠΈ ΠΏΠΎΠΌΠΎΠ³ΡΡ ΠΠ°ΠΌ ΡΠΊΡΠ°ΡΠΈΡΡ ΡΠΊΠΎΠ»ΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ ΠΊ ΠΠΎΠ²ΠΎΠΌΡ Π³ΠΎΠ΄Ρ. ΠΠ°ΠΉΡΠ΅ Π²ΠΎΠ»Ρ ΡΠ²ΠΎΠ΅ΠΉ ΡΠ°Π½ΡΠ°Π·ΠΈΠΈ ΠΈ ΠΏΠΎΠ»ΡΡΠ°ΠΉΡΠ΅ ΡΠ΄ΠΎΠ²ΠΎΠ»ΡΡΡΠ²ΠΈΠ΅ ΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΈ ΡΠΎΠ³Π΄Π° Ρ ΠΠ°Ρ Π²ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ!
ΠΠ°ΠΊ ΡΠΊΡΠ°ΡΠΈΡΡ ΠΊΠ»Π°ΡΡ?
Π― ΡΠΎΠ³Π»Π°ΡΠ΅Π½ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ Π»ΡΡΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΠΏΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
Π― Π½Π°ΡΠ΅Π» ΡΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΄ΠΎΠ±Π½ΡΠΌ ΠΏΡΠΈ Π΄Π΅ΠΊΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠ»Π°ΡΡΠΎΠ², ΡΠΏΠ°ΡΠΈΠ±ΠΎ Π²ΡΠ΅ΠΌ.
ΠΠΎΡ Π΅ΡΠ΅ ΠΏΠ°ΡΠ° ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ², ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΡ Π½Π° Π΄ΡΡΠ³ΠΈΡ ΠΎΡΠ²Π΅ΡΠ°Ρ , Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π»ΠΈΡΠ΅Ρ Π½Π° Π²Π΅ΡΠΈ Π² Python 2.7 (ΠΈ @wraps , ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΡΡΡΠΎΠΊΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ Ρ. Π.):
def dec(klass):
old_foo = klass.foo
@wraps(klass.foo)
def decorated_foo(self, *args ,**kwargs):
print('@decorator pre %s' % msg)
old_foo(self, *args, **kwargs)
print('@decorator post %s' % msg)
klass.foo = decorated_foo
return klass
@dec # No parentheses
class Foo...
Π§Π°ΡΡΠΎ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π² ΡΠ²ΠΎΠΉ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ:
from functools import wraps
def dec(msg='default'):
def decorator(klass):
old_foo = klass.foo
@wraps(klass.foo)
def decorated_foo(self, *args ,**kwargs):
print('@decorator pre %s' % msg)
old_foo(self, *args, **kwargs)
print('@decorator post %s' % msg)
klass.foo = decorated_foo
return klass
return decorator
@dec('foo decorator') # You must add parentheses now, even if they're empty
class Foo(object):
def foo(self, *args, **kwargs):
print('foo.foo()')
@dec('subfoo decorator')
class SubFoo(Foo):
def foo(self, *args, **kwargs):
print('subfoo.foo() pre')
super(SubFoo, self).foo(*args, **kwargs)
print('subfoo.foo() post')
@dec('subsubfoo decorator')
class SubSubFoo(SubFoo):
def foo(self, *args, **kwargs):
print('subsubfoo.foo() pre')
super(SubSubFoo, self).foo(*args, **kwargs)
print('subsubfoo.foo() post')
SubSubFoo().foo()
ΠΡΡ ΠΎΠ΄Ρ:
@decorator pre subsubfoo decorator
subsubfoo.foo() pre
@decorator pre subfoo decorator
subfoo.foo() pre
@decorator pre foo decorator
foo.foo()
@decorator post foo decorator
subfoo.foo() post
@decorator post subfoo decorator
subsubfoo.foo() post
@decorator post subsubfoo decorator
Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠΈΡΠ°Ρ ΠΈΡ Π±ΠΎΠ»Π΅Π΅ Π»Π°ΠΊΠΎΠ½ΠΈΡΠ½ΡΠΌΠΈ. ΠΠΎΡ ΠΊΠ»Π°ΡΡ Π΄Π»Ρ ΡΠΊΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠ°:
class Dec(object):
def __init__(self, msg):
self.msg = msg
def __call__(self, klass):
old_foo = klass.foo
msg = self.msg
def decorated_foo(self, *args, **kwargs):
print('@decorator pre %s' % msg)
old_foo(self, *args, **kwargs)
print('@decorator post %s' % msg)
klass.foo = decorated_foo
return klass
ΠΠΎΠ»Π΅Π΅ Π½Π°Π΄Π΅ΠΆΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΡΡΠΈ ΡΠΊΠΎΠ±ΠΊΠΈ ΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π΅ΡΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π² Π΄Π΅ΠΊΠΎΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅:
from inspect import isclass
def decorate_if(condition, decorator):
return decorator if condition else lambda x: x
def dec(msg):
# Only use if your decorator's first parameter is never a class
assert not isclass(msg)
def decorator(klass):
old_foo = getattr(klass, 'foo', None)
@decorate_if(old_foo, wraps(klass.foo))
def decorated_foo(self, *args ,**kwargs):
print('@decorator pre %s' % msg)
if callable(old_foo):
old_foo(self, *args, **kwargs)
print('@decorator post %s' % msg)
klass.foo = decorated_foo
return klass
return decorator
Π assert
ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ , ΡΡΠΎ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π±Π΅Π· ΡΠΊΠΎΠ±ΠΎΠΊ. ΠΡΠ»ΠΈ Π΄Π°, ΡΠΎ Π΄Π΅ΠΊΠΎΡΠΈΡΡΠ΅ΠΌΡΠΉ ΠΊΠ»Π°ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ msg
ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ·ΡΠ²Π°Π΅Ρ AssertionError
.
@decorate_if
ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ decorator
Π΅ΡΠ»ΠΈ ΠΈΠΌΠ΅Π΅Ρ condition
Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ True
.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ getattr
, callable
test ΠΈ @decorate_if
, ΡΡΠΎΠ±Ρ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ Π½Π΅ ΡΠ»ΠΎΠΌΠ°Π»ΡΡ, Π΅ΡΠ»ΠΈ foo()
ΠΌΠ΅ΡΠΎΠ΄ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π² Π΄Π΅ΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅.
ΠΊ 1 ΡΠ΅Π½ΡΡΠ±ΡΡ, ΡΠ²ΠΎΠΈΠΌΠΈ ΡΡΠΊΠ°ΠΌΠΈ, ΡΠΊΠΎΠ»Π°, ΡΠΎΡΠΎ, ΠΊΠΎ ΠΠ½Ρ ΡΡΠΈΡΠ΅Π»Ρ
ΠΡΠ΅Π½Ρ β Π²ΡΠ΅ΠΌΡ ΠΎΡΠΊΡΡΡΠΈΡ Π½ΠΎΠ²ΡΡ ΡΠ΅Π·ΠΎΠ½ΠΎΠ², Π½Π°ΡΠ°Π»ΠΎ ΡΡΠ΅Π±Π½ΠΎΠ³ΠΎ Π³ΠΎΠ΄Π°. Π ΡΡΠΎ Π²ΡΠ΅ΠΌΡ Π³ΠΎΠ΄Π° Ρ ΠΎΡΠ΅ΡΡΡ Π²ΠΎΠΉΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΌ. ΠΡΠ΅Π½Ρ Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΊΠ°Ρ ΡΠ°ΠΌΠ° ΠΏΠΎ ΡΠ΅Π±Π΅, ΡΡΠΎ Π΅Π΅ ΠΊΡΠ°ΡΠΎΡΠ½Π°Ρ Π³Π°ΠΌΠΌΠ° β Π±ΡΠΊΠ΅ΡΡ ΡΠ²Π΅ΡΠΎΠ² Π²ΡΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΠΎΡΡΠ΅Π½ΠΊΠΎΠ², ΠΆΠ΅Π»ΡΡΠ΅, ΠΊΡΠ°ΡΠ½ΡΠ΅, Π±Π°Π³ΡΡΠ½ΡΠ΅ ΠΈ ΠΎΡΠ°Π½ΠΆΠ΅Π²ΡΠ΅ Π»ΠΈΡΡΡΡ β ΡΠΆΠ΅ ΡΠ°ΠΌΠΈ ΠΏΠΎ ΡΠ΅Π±Π΅ ΠΌΠΎΠ³ΡΡ ΡΡΠ°ΡΡ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΡΠΌ ΡΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ΠΌ. Π Π²ΡΠ΅ ΠΆΠ΅, ΠΊ ΠΏΠ΅ΡΠ²ΠΎΠΌΡ ΡΠ΅Π½ΡΡΠ±ΡΡ ΠΈ ΠΠ½Ρ ΡΡΠΈΡΠ΅Π»Ρ ΠΈΠ½ΠΎΠ³Π΄Π° Ρ ΠΎΡΠ΅ΡΡΡ ΡΠΊΡΠ°ΡΠΈΡΡ ΠΊΠ»Π°ΡΡ ΠΊΠ°ΠΊ-ΡΠΎ ΠΏΠΎ-ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΠΌΡ. ΠΠ°ΠΊ ΡΠΊΡΠ°ΡΠΈΡΡ ΠΊΠ»Π°ΡΡ ΡΠ²ΠΎΠΈΠΌΠΈ ΡΡΠΊΠ°ΠΌΠΈ.
Π£ΠΊΡΠ°ΡΠ°Π΅ΠΌ ΠΊΠ»Π°ΡΡ ΠΊ ΠΏΠ΅ΡΠ²ΠΎΠΌΡ ΡΠ΅Π½ΡΡΠ±ΡΡ
ΠΠΎΠΉΡΠΈ Π² ΠΊΡΠ°ΡΠΈΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ Π±ΡΠ΄Π΅Ρ Π²Π΅ΡΠ΅Π»ΠΎ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠ΅ΡΠ²ΠΎΠΊΠ»Π°ΡΡΠ½ΠΈΠΊΠ°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΠΏΠ΅ΡΠ²ΡΠ΅ ΠΏΠ΅ΡΠ΅ΡΡΡΠΏΠ°ΡΡ ΡΠΊΠΎΠ»ΡΠ½ΡΠΉ ΠΏΠΎΡΠΎΠ³. ΠΠΎ ΠΈ ΡΡΠ΅Π½ΠΈΠΊΠ°ΠΌ ΡΡΠ°ΡΡΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΌ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΡΡΠΆΠ΅Π»ΠΎ ΡΠ°ΡΡΡΠ°ΡΡΡΡ Ρ Π²ΠΎΠ»ΡΠ½ΡΠΌΠΈ Π»Π΅ΡΠ½ΠΈΠΌΠΈ Π΄Π΅Π½ΡΠΊΠ°ΠΌΠΈ.
ΠΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ, ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΡΠΊΠΈΡ ΠΏΡΡΠ΅Π½. ΠΠ½ΠΈ ΠΏΡΠΈΠ΄Π°Π΄ΡΡ Π°ΡΠΌΠΎΡΡΠ΅ΡΠ΅ ΠΏΡΠ°Π·Π΄Π½ΠΈΡΠ½ΡΠΉ ΠΎΡΡΠ΅Π½ΠΎΠΊ. Π―ΡΠΊΠΈΠ΅ Π³ΠΈΡΠ»ΡΠ½Π΄Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ²Π΅ΡΠΈΡΡ Π½Π° ΠΊΠ»Π°ΡΡΠ½ΡΡ Π΄ΠΎΡΠΊΡ, Π½Π° ΡΡΠ΅Π½Ρ ΠΈ Π½Π° ΡΡΠΎΡΡ. ΠΠΎΡΡΠ΅ΡΡ, ΡΠΈΡΡΠ½ΠΊΠΈ ΠΈ ΠΊΠ°ΡΡΠΈΠ½Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΠΊΠ»Π°ΡΡΠ½ΡΠ΅ ΡΡΠ΅Π½Ρ.
Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΠ΅Π½Ρ Π·Π½Π°Π½ΠΈΠΉ ΠΎΠ±ΡΡΠ½ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ²ΡΠΌ ΠΎΡΠ΅Π½Π½ΠΈΠΌ Π΄Π½Π΅ΠΌ, ΡΠΎ Β«ΠΎΡΠ΅Π½Π½ΡΡΒ» ΡΠ΅ΠΌΠ°, Π²Π·ΡΡΠ°Ρ Π·Π° ΠΎΡΠ½ΠΎΠ²Ρ ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠ° ΠΊ ΠΏΠ΅ΡΠ²ΠΎΠΌΡ ΡΠ΅Π½ΡΡΠ±ΡΡ β ΡΡΠΎ ΡΠ°ΠΌΡΠΉ Π»ΡΡΡΠΈΠΉ Π²Π°ΡΠΈΠ°Π½Ρ. Π’Π°ΠΊ ΡΠΊΡΠ°ΡΠΈΡΡ ΡΠΊΠΎΠ»ΡΠ½ΡΠΉ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ ΠΌΠΎΠΆΠ½ΠΎ Π³ΠΈΡΠ»ΡΠ½Π΄Π°ΠΌΠΈ, ΡΠ΄Π΅Π»Π°Π½Π½ΡΠΌΠΈ Π² Π²ΠΈΠ΄Π΅ ΡΠ°Π·Π½ΠΎΡΠ²Π΅ΡΠ½ΡΡ Π»ΠΈΡΡΡΠ΅Π². ΠΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡΠ΅Π·Π°ΡΡ ΠΈΠ· ΠΏΡΠΎΡΡΠΎΠΉ ΡΠ²Π΅ΡΠ½ΠΎΠΉ Π±ΡΠΌΠ°Π³ΠΈ, Π·Π°ΠΊΡΠ΅ΠΏΠ»ΡΡ Π΄Π»ΠΈΠ½Π½ΡΠΌΠΈ ΡΡΠ΅ΠΆΠΊΠ°ΠΌΠΈ Π½Π° Π½ΠΈΡΡΡ . Π’Π°ΠΊΠΈΠ΅ Π·Π°Π³ΠΎΡΠΎΠ²ΠΊΠΈ ΡΡΠ°Π½ΡΡ ΠΎΡΠ»ΠΈΡΠ½ΡΠΌΠΈ ΡΠΊΡΠ°ΡΠ΅Π½ΠΈΡΠΌΠΈ Π΄Π»Ρ ΠΎΠΊΠΎΠ½.
ΠΡΠ»ΠΈΡΠ½ΡΠΌ ΡΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ ΡΠ°Π·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡΠΈΡ ΡΠ²Π»ΡΡΡΡΡ Π½Π°ΡΡΠ΅Π½Π½ΡΠ΅ Π³Π°Π·Π΅ΡΡ. ΠΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΌ Π±ΡΠ΄Π΅Ρ ΡΠ΅ΠΌΠ° Π»Π΅ΡΠ½Π΅Π³ΠΎ ΠΎΡΠ΄ΡΡ Π°. Π‘ΡΠΎΠΈΡ ΡΡΡΡ ΠΎΠ±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡΡΡΡ ΡΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π³Π°Π·Π΅ΡΡ Π·Π°ΡΠ°Π½Π΅Π΅, ΡΠΎΠ±ΡΠ°ΡΡ Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΊΠΎΠ»ΡΠ½ΠΈΠΊΠ° ΠΏΠΎ ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠΈ, ΠΈ Π²ΠΎΡ, ΡΡΠΊΠΈΠΉ ΡΠ°ΡΡΠΊΠ°Π· Π½Π° ΡΠ΅ΠΌΡ Β«ΠΠ°ΠΊ Ρ ΠΏΡΠΎΠ²Π΅Π» Π»Π΅ΡΠΎΒ» ΡΠΆΠ΅ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½. ΠΠ΅ΡΠ½ΠΈΠ΅ ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠΈ ΡΡΠ°Π½ΡΡ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΡΠΌ ΡΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΊΠ»Π°ΡΡΠ° Π²ΠΏΠ»ΠΎΡΡ Π΄ΠΎ Π·ΠΈΠΌΠ½ΠΈΡ ΠΊΠ°Π½ΠΈΠΊΡΠ».
ΠΠ΅ΡΠΏΡΠΎΠΈΠ³ΡΡΡΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΡΠΊΡΠ°ΡΠ΅Π½ΠΈΡ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ΠΈΡ β Π²ΠΎΠ·Π΄ΡΡΠ½ΡΠ΅ ΡΠ°ΡΠΈΠΊΠΈ. ΠΡ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΊΡΠ΅ΠΏΠΈΡΡ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ°ΡΡΠ΅, ΠΏΠΎΠ²Π΅ΡΠΈΡΡ Π½Π° ΠΎΠΊΠ½Π°, ΡΠΊΡΠ°ΡΠΈΡΡ ΠΊΠ»Π°ΡΡΠ½ΡΡ Π΄ΠΎΡΠΊΡ, ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΡΡ ΠΊ ΠΏΠΎΡΠΎΠ»ΠΊΡ. Π’ΡΡ Π²ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΈΠ½Π°Π½ΡΠΎΠ²ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ ΠΈ ΡΠ°Π·Π²ΠΈΡΠΈΡ Π²Π°ΡΠ΅ΠΉ ΡΠ°Π½ΡΠ°Π·ΠΈΠΈ.
Π£ΠΊΡΠ°ΡΠ°Π΅ΠΌ ΠΊΠ»Π°ΡΡ ΠΊΠΎ ΠΠ½Ρ ΡΡΠΈΡΠ΅Π»Ρ
ΠΡΠΎΡ Π²ΡΠΎΡΠΎΠΉ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠΊΠΎΠ»ΡΠ½ΡΠΉ ΠΏΡΠ°Π·Π΄Π½ΠΈΠΊ Π² ΡΡΠ΅Π±Π½ΠΎΠΌ Π³ΠΎΠ΄Ρ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ. ΠΠ° ΠΏΠ΅ΡΠ²ΡΠΉ ΠΏΠ»Π°Π½ Π²ΡΡ ΠΎΠ΄ΠΈΡ Π½Π΅ ΡΠ°Π·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅Π½ΠΈΠΊΠΎΠ², Π° ΠΏΡΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ ΠΈ ΡΠ²Π°ΠΆΠ΅Π½ΠΈΡ ΠΊ ΠΏΠ΅Π΄Π°Π³ΠΎΠ³Π°ΠΌ. ΠΡΠΊΠ΅Ρ ΡΠ²Π΅ΡΠΎΠ² Π½Π° ΡΡΠΈΡΠ΅Π»ΡΡΠΊΠΎΠΌ ΡΡΠΎΠ»Π΅ β ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΈ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΎΡΠΏΠ°ΡΠΈΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΡΡΠΎ Π½Π΅ ΠΏΠΎΠ΄Π»Π΅ΠΆΠΈΡ. ΠΡΡΠ°Π»ΡΠ½ΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ β ΠΏΠΎ Π²Π°ΡΠ΅ΠΌΡ ΠΆΠ΅Π»Π°Π½ΠΈΡ.
ΠΠ°ΠΊ Π²Π°ΡΠΈΠ°Π½Ρ Π΄Π΅ΠΊΠΎΡΠ° ΡΡΠ΅Π½, ΠΊΠ»Π°ΡΡΠ½ΠΎΠΉ Π΄ΠΎΡΠΊΠΈ, ΡΡΠΎΡ β Π³ΠΈΡΠ»ΡΠ½Π΄Ρ ΠΈΠ· Π»ΠΈΡΡΡΠ΅Π². ΠΡΠΎΠΌΠ΅ ΡΡΠΎΠ³ΠΎ, ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠΌ ΡΡΠ°Π½ΡΡ Π³ΠΈΡΠ»ΡΠ½Π΄Ρ ΠΈΠ· ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΡΠΆΠ΅ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΊ ΡΡΠΈΡΠ΅Π»ΡΡΠΊΠΎΠΉ Π΄Π΅ΡΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΡΠΊΠΈ, Π·Π²ΠΎΠ½ΠΊΠΈ, ΠΊΠ°ΡΠ°Π½Π΄Π°ΡΠΈ ΠΈΠ»ΠΈ ΡΠΊΠ°Π·ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ Π²ΡΡΠ΅Π·Π°ΡΡ ΠΈ ΡΠ°Π·Π²Π΅ΡΠΈΡΡ Π² ΠΊΠ»Π°ΡΡΠ΅.
ΠΡΠΏΠΎΠΌΠΈΠ½Π°Π΅ΠΌ ΡΠ΅ ΠΆΠ΅ ΡΡΠ΅Π½Π½ΡΠ΅ Π³Π°Π·Π΅ΡΡ, ΡΠΎΠ»ΡΠΊΠΎ Π΄Π΅Π»Π°Π΅ΠΌ ΠΈΡ Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π»ΡΠ±ΠΈΠΌΡΡ ΡΡΠΈΡΠ΅Π»Π΅ΠΉ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΡΠ΅Π½ΠΎΠΊ ΠΈΠ· ΡΠΊΠΎΠ»ΡΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ. ΠΠ΅ Π»ΠΈΡΠ½ΠΈΠΌ Π±ΡΠ΄Π΅Ρ ΠΎΡΠ²Π΅ΡΡΠΈ ΡΠΈΡΡΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΡΡΠ΅Π½ΠΈΠΊΠΎΠ² Π½Π°ΠΏΠΈΡΠ°Π» ΠΏΠΎΠ·Π΄ΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΡ ΡΠ΅Π±Ρ.
ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠΌ Π±ΡΠ΄ΡΡ Π½Π°Π΄ΠΏΠΈΡΠΈ ΡΠΈΡΠ°Ρ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ Π»ΡΠ΄Π΅ΠΉ ΠΎΠ± ΡΡΠΈΡΠ΅Π»ΡΡΠΊΠΎΠΌ ΡΡΡΠ΄Π΅, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π΅Π»Π°ΡΡΡΡ Π½Π° Π΄Π»ΠΈΠ½Π½ΡΡ ΠΏΠΎΠ»ΠΎΡΠ°Ρ Π±ΡΠΌΠ°Π³ΠΈ. Π Π°Π·Π²Π΅ΡΠΈΡΡ ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π΄ Π΄ΠΎΡΠΊΠΎΠΉ, Π½Π° ΡΡΠ΅Π½Π°Ρ , Π° ΡΠ°ΠΊΠΆΠ΅ Π² ΡΠΊΠΎΠ»ΡΠ½ΡΡ ΠΊΠΎΡΠΈΠ΄ΠΎΡΠ°Ρ .
Π¨ΡΡΠΎΡΠ½ΡΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠΌ ΠΏΠΎΠ·Π΄ΡΠ°Π²ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΎΡΠΊΡΡΡΠΊΠΈ ΡΡΠ°Π½Π΅Ρ ΠΎΠ³ΡΠΎΠΌΠ½Π°Ρ ΠΊΠ½ΠΎΠΏΠΊΠ°, ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡΠ΅Π·Π°ΡΡ ΠΈΠ· ΡΠ²Π΅ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ°ΡΡΠΎΠ½Π°. ΠΠ° Β«ΠΊΠ½ΠΎΠΏΠΊΠ΅Β» ΠΏΠΈΡΠ΅ΠΌ ΡΠ΅ΠΏΠ»ΠΎΠ΅ ΠΏΠΎΠ·Π΄ΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΌ ΠΏΡΠ°Π·Π΄Π½ΠΈΠΊΠΎΠΌ ΠΈ Π½Π΅Π·Π°ΠΌΠ΅ΡΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΠΌ Π½Π° ΡΡΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΡΡΡΠ».
Π£ΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ° Π½Π° 1 ΡΠ΅Π½ΡΡΠ±ΡΡ: 30 ΠΈΠ΄Π΅ΠΉ Π½Π° ΡΠΎΡΠΎ
ΠΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ΠΎ ΠΠ²Π³ 27, 2018
ΠΠΏΠ΅ΡΠ΅Π΄ΠΈ Π½ΠΎΠ²ΡΠΉ ΡΡΠ΅Π±Π½ΡΠΉ Π³ΠΎΠ΄ β Π²ΡΠ΅ ΡΡΠ΅Π½ΠΈΠΊΠΈ ΠΈ ΡΡΠΈΡΠ΅Π»Ρ Π°ΠΊΡΠΈΠ²Π½ΠΎ Π³ΠΎΡΠΎΠ²ΡΡΡΡ ΠΊ ΡΡΠΎΠΌΡ ΠΏΡΠ°Π·Π΄Π½ΠΈΠΊΡ. ΠΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΠΌ Π²Π°ΡΠ΅ΠΌΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ ΡΠ°Π·Π½ΡΠ΅ ΠΈΠ΄Π΅ΠΈ ΡΠΊΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠ° ΠΊ 1 ΡΠ΅Π½ΡΡΠ±ΡΡ.
ΠΡΠΈΠΊΡΠ΅ΠΏΠΈΡΠ΅ ΡΠ°Π·Π½ΠΎΡΠ²Π΅ΡΠ½ΡΠ΅ ΡΠ°ΡΠΈΠΊΠΈ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ°ΡΡΠ΅ Π΄Π»Ρ ΡΠΊΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠ°.
β
ΠΠ»ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅ ΡΠ²Π΅ΡΡ ΠΈΠ· ΡΠ°ΡΠΎΠ² Π½Π° ΠΏΠ°ΡΡΠ°Ρ .
β
Π ΠΊΠ»Π°ΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΎΡΠΌΠΈΡΡ ΡΠ³ΠΎΠ»ΠΎΠΊ Π»Π΅ΡΠ½ΠΈΡ ΠΈΠ»ΠΈ ΠΎΡΠ΅Π½Π½ΠΈΡ Π±ΡΠΊΠ΅ΡΠΎΠ², ΡΠ΄Π΅Π»Π°Π½Π½ΡΡ ΡΠΊΠΎΠ»ΡΠ½ΠΈΠΊΠ°ΠΌΠΈ.
β
Π¦Π΅Π½ΡΡΠ°Π»ΡΠ½ΡΠΌ ΠΌΠ΅ΡΡΠΎΠΌ Π² ΠΊΠ°Π±ΠΈΠ½Π΅ΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°ΡΡ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½Π°Ρ ΠΏΠΎΠ΄Π΅Π»ΠΊΠ° ΠΈΠ· ΡΠ°ΡΠΎΠ².
β
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΏΡΠ°Π·Π΄Π½ΠΈΡΠ½ΠΎΠ΅ Π½Π°ΡΡΡΠΎΠ΅Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ°ΡΠΈΠΊΠΈ Π΄Π²ΡΡ Π³Π°ΡΠΌΠΎΠ½ΠΈΡΡΡΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠ²Π΅ΡΠΎΠ².
β
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΠΈΠ·Π³ΠΎΡΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠΈΠ³ΡΡ ΠΈΠ· ΡΠ°ΡΠΎΠ², Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅Π»ΠΎΠ²Π΅ΡΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΠΊΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ² Ρ Π΄ΠΎΡΠΊΠΈ.
β
ΠΠ»ΠΈ ΡΠ΅Π»ΡΠ΅ ΠΏΠ°Π»ΡΠΌΡ Ρ ΠΈΠ³ΡΡΡΠΊΠ°ΠΌΠΈ.
β
ΠΠ· ΡΠ°ΡΠΈΠΊΠΎΠ² Π΄Π΅Π»Π°ΡΡ ΡΠΈΡΡΡ ΠΈ Π±ΡΠΊΠ²Ρ, ΠΈΠΌΠΈ ΡΠ°ΠΊΠΆΠ΅ ΡΠΊΡΠ°ΡΠ°ΡΡ ΡΡΠΎΡΡ ΠΈ ΠΆΠ°Π»ΡΠ·ΠΈ.
β
ΠΠΎΡΠΎΠ»ΠΎΠΊ ΠΊΠ»Π°ΡΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΎΡΠΌΠΈΡΡ ΠΊΡΠ°ΡΠΈΠ²ΡΠΌΠΈ ΡΠ°ΡΠ°ΠΌΠΈ ΠΈ Π»Π΅Π½ΡΠ°ΠΌΠΈ.
β
ΠΠΊΠ½Π° ΡΠΊΡΠ°ΡΠ°ΡΡ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΡΠ½Π°ΡΡΠΆΠΈ ΠΏΠΎΠ»ΡΡΠΈΠ»ΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΉ Π²ΠΈΠ΄.
β
ΠΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠ΅ ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΠ΅: Π»Π΅Π½ΡΠΎΡΠΊΠΈ, ΡΠ²ΠΈΡΠ°ΡΡΠΈΠ΅ Ρ ΠΏΠΎΡΠΎΠ»ΠΊΠ°.
β
ΠΠ΅ Π·Π°Π±ΡΠ΄ΡΡΠ΅ ΡΠΊΡΠ°ΡΠΈΡΡ Π΄ΠΎΡΠΊΡ β ΠΏΠ»Π°ΠΊΠ°ΡΠ°ΠΌΠΈ ΠΈΠ»ΠΈ ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΡΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ.
β
β
ΠΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡΠ΅Π·Π°ΡΡ ΠΈΠ· ΠΎΠ±ΡΡΠ½ΠΎΠΉ Π±ΡΠΌΠ°Π³ΠΈ.
β
ΠΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π²Π°ΡΠΈΠ°Π½Ρ β ΠΏΠΎΠ²Π΅ΡΠΈΡΡ ΡΠ°ΡΡΡΠΆΠΊΡ Β«ΠΠ΅ΡΠ²ΡΠΉ ΡΠ°Π· Π² 1 ΠΊΠ»Π°ΡΡΒ».
β
ΠΡΡ ΠΎΠ΄Π½Π° ΠΈΠ΄Π΅Ρ β ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΡΡ Π²Π΅ΡΡΠ»ΡΠ΅ ΡΠ°ΡΠΈΠΊΠΈ-ΡΠΌΠ°ΠΉΠ»ΠΈΠΊΠΈ Π²ΠΎΠ·Π»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ°ΡΡΡ.
β
Π Π°Π·Π½ΠΎΡΠ²Π΅ΡΠ½ΡΠ΅ ΡΠ°ΡΠΈΠΊΠΈ Π½Π°ΠΏΠΎΠ»Π½ΡΡΡ Π³Π΅Π»ΠΈΠ΅ΠΌ ΠΈ ΠΎΡΠΏΡΡΠΊΠ°ΡΡ ΠΊ ΠΏΠΎΡΠΎΠ»ΠΊΡ.
β
ΠΡΠ°ΠΊΡΠΈΡΠ½ΡΠΉ ΠΏΠΎΠ΄Π°ΡΠΎΠΊ β ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠ΅ Π±ΡΠΊΠ΅ΡΡ Π² Π²Π°Π·Π°Ρ ΠΈΠ· ΡΠ²Π΅ΡΠ½ΡΡ ΠΊΠ°ΡΠ°Π½Π΄Π°ΡΠ΅ΠΉ.
β
ΠΠ° ΡΡΠΎΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ ΡΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΡΠ²Π΅ΡΠΎΠ², ΡΠ΄Π΅Π»Π°Π½Π½ΠΎΠ΅ Π² ΡΠΎΡΠΌΠ΅ ΡΠΈΡΡΡ.
β
Π ΡΡΠ΅Π½Ρ ΡΠΊΡΠ°ΡΠΈΡΡ ΠΎΠ±ΡΡΠΌΠ½ΡΠΌΠΈ ΡΠ²Π΅ΡΠ°ΠΌΠΈ.
β
ΠΠΈΠ»ΡΠ΅ ΡΠ΅Π»ΠΎΠ²Π΅ΡΠΊΠΈ ΠΈΠ· ΡΠ°ΡΠΈΠΊΠΎΠ² Π½Π΅ΠΏΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΡΠ°Π΄ΡΡΡ ΡΡΠ΅Π½ΠΈΠΊΠΎΠ².
β
ΠΡΠΎΡΠΌΠ»Π΅Π½ΠΈΠ΅ Π΄ΠΎΡΠΊΠΈ: ΡΠ°ΡΠΈΠΊΠΈ ΠΈ ΠΏΠ»Π°ΠΊΠ°Ρ.
β
Π‘ΡΠ΅Π½Ρ ΠΈ ΡΡΠΎΡΡ Π² ΠΊΠ»Π°ΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΡΠ°ΡΠΈΡΡ Π±ΡΠΌΠ°ΠΆΠ½ΡΠΌΠΈ Π³ΠΈΡΠ»ΡΠ½Π΄Π°ΠΌΠΈ.
β
ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½Π°Ρ ΠΈΠ΄Π΅Ρ β ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΠ΅ ΡΡΠ΅Π½Ρ ΡΠΈΠ³ΡΡΠΊΠ°ΠΌΠΈ Π΄Π΅ΡΠ΅Π²ΡΠ΅Π² ΠΈ ΠΆΠΈΠ²ΠΎΡΠ½ΡΡ .
β
Π Π°Π·Π½ΠΎΡΠ²Π΅ΡΠ½ΡΠ΅ ΡΠ°ΡΠΈΠΊΠΈ Ρ ΡΠΈΡΡΠ½ΠΊΠ°ΠΌΠΈ Π»ΠΈΡΡΡΠ΅Π² ΡΠΎΠ·Π΄Π°Π΄ΡΡ ΠΎΡΠ΅Π½Π½Π΅Π΅ Π½Π°ΡΡΡΠΎΠ΅Π½ΠΈΠ΅.
β
ΠΠ΄Π΅Ρ ΡΡΠΊΠΎΠ³ΠΎ ΠΎΡΠ΅Π½Π½Π΅Π³ΠΎ ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠ°.
β
ΠΡΠ΅Π°ΡΠΈΠ²Π½ΠΎΠ΅ ΡΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ½ΠΎΠ³ΠΎ ΡΠ³ΠΎΠ»ΠΊΠ° Π΄Π»Ρ ΠΏΠ΅ΡΠ²ΠΎΠΊΠ»Π°ΡΠ΅ΠΊ.
β
ΠΠΈΠΊΠΊΠΈ ΠΈ ΠΠΈΠ½Π½ΠΈ ΠΠ°ΡΡ Π½Π° 1 ΡΠ΅Π½ΡΡΠ±ΡΡ Π² ΠΊΠ»Π°ΡΡΠ΅.
β
ΠΠ°Π»Π΅Π½ΡΠΊΠΈΠ΅ ΠΊΡΠ°ΡΠΈΠ²ΡΠ΅ ΠΊΠΎΠ»ΠΎΠΊΠΎΠ»ΡΡΠΈΠΊΠΈ ΠΈΠ· Π²ΠΎΠ·Π΄ΡΡΠ½ΡΡ ΡΠ°ΡΠΎΠ² β ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΡΡ Π½Π° ΠΏΠ°ΡΡΡ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅ΡΠΈΡΡ Π½Π° ΡΡΠ΅Π½Ρ.
β
Π‘ΠΊΡΠΎΠΌΠ½ΠΎΠ΅ ΡΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°Π±ΠΈΠ½Π΅ΡΠ°: ΡΠ°ΡΠΈΠΊΠΈ Ρ Π΄ΠΎΡΠΊΠΈ.
β
Π£Π³ΠΎΠ»ΠΎΠΊ ΡΡΠΈΡΠ΅Π»Ρ ΡΠΎΠΆΠ΅ Π·Π°ΡΠ»ΡΠΆΠΈΠ²Π°Π΅Ρ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ. Π ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠΌ ΡΡΠΎΠΈΡ Π²Π·ΡΡΡ Π½Π° Π·Π°ΠΌΠ΅ΡΠΊΡ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎ ΠΏΠΎΡΠ°Π΄ΠΎΠ²Π°ΡΡ ΠΊΠ»Π°ΡΡΠ½ΠΎΠ³ΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΠΈΡΠ΅Π»Ρ.
β
Π£ΠΊΡΠ°ΡΠΈΡΡ ΠΊΠ»Π°ΡΡ Π½Π° 1 ΡΠ΅Π½ΡΡΠ±ΡΡ ΡΠ²ΠΎΠΈΠΌΠΈ ΡΡΠΊΠ°ΠΌΠΈ, ΡΠ΄Π΅Π»Π°Π² ΠΏΡΠ°Π·Π΄Π½ΠΈΠΊ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π²Π΅ΡΠ΅Π»Π΅Π΅ ΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π΅Π΅, ΠΏΡΠΎΡΡΠΎ ΠΈ ΠΎΡΠ΅Π½Ρ ΡΠ²Π»Π΅ΠΊΠ°ΡΠ΅Π»ΡΠ½ΠΎ. ΠΠ»Π°Π²Π½ΠΎΠ΅ β ΠΈΠΌΠ΅ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ (ΡΠ°ΡΠΈΠΊΠΈ, ΡΠ²Π΅ΡΡ, ΠΊΠ»Π΅ΠΉ ΠΈ Π½ΠΎΠΆΠ½ΠΈΡΡ) ΠΈ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π½ΡΠ°Π·ΠΈΠΈ.
ΠΡΠ΅Π½ΠΈΡΠ΅ ΡΡΠ°ΡΡΡ:(12 Π³ΠΎΠ»ΠΎΡΠΎΠ², ΡΡΠ΅Π΄Π½Π΅Π΅: 4.6 ΠΈΠ· 5)
ΠΠΎΠ΄Π΅Π»ΠΈΡΠ΅ΡΡ Ρ Π΄ΡΡΠ·ΡΡΠΌΠΈ!python β ΠΠ°ΠΊ ΡΠΊΡΠ°ΡΠΈΡΡ ΠΊΠ»Π°ΡΡ?
Π― ΡΠΎΠ³Π»Π°ΡΠ΅Π½, ΡΡΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ Π»ΡΡΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΠΏΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ.
ΠΠ½Π΅ ΡΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΠ»ΡΡ ΠΏΡΠΈ Π΄Π΅ΠΊΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠ»Π°ΡΡΠΎΠ², ΡΠΏΠ°ΡΠΈΠ±ΠΎ Π²ΡΠ΅ΠΌ.
ΠΠΎΡ Π΅ΡΠ΅ ΠΏΠ°ΡΠ° ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ², ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΡ Π½Π° Π΄ΡΡΠ³ΠΈΡ ΠΎΡΠ²Π΅ΡΠ°Ρ , Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π»ΠΈΡΠ΅Ρ Π½Π° Π²Π΅ΡΠΈ Π² Python 2.7 (ΠΈ @wraps, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΡΡΡΠΎΠΊΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ Ρ. Π.):
def dec (ΠΊΠ»Π°ΡΡ):
old_foo = klass.foo
@wraps (klass.foo)
def Decorated_foo (self, * args, ** kwargs):
print ('@ decorator pre% s'% msg)
old_foo (ΡΠ°ΠΌ, * Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, ** kwargs)
print ('@ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ post% s'% msg)
ΠΊΠ»Π°ΡΡ.foo = Decorated_foo
Π²Π΅ΡΠ½ΡΡΡ ΠΊΠ»Π°ΡΡ
@dec # ΠΠ΅Π· ΡΠΊΠΎΠ±ΠΎΠΊ
ΠΊΠ»Π°ΡΡ Foo ...
Π§Π°ΡΡΠΎ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΊ ΡΠ²ΠΎΠ΅ΠΌΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΡ:
ΠΎΡ functools import wraps
def dec (msg = 'ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ'):
Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ def (ΠΊΠ»Π°ΡΡ):
old_foo = klass.foo
@wraps (klass.foo)
def Decorated_foo (self, * args, ** kwargs):
print ('@ decorator pre% s'% msg)
old_foo (ΡΠ°ΠΌ, * Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, ** kwargs)
print ('@ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ post% s'% msg)
ΠΊΠ»Π°ΡΡ.foo = Decorated_foo
Π²Π΅ΡΠ½ΡΡΡ ΠΊΠ»Π°ΡΡ
Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°
@dec ('foo decorator') # Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊΡΡΠ³Π»ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ ΠΏΡΡΡΡΠ΅
ΠΊΠ»Π°ΡΡ Foo (ΠΎΠ±ΡΠ΅ΠΊΡ):
def foo (self, * args, ** kwargs):
ΠΏΠ΅ΡΠ°ΡΡ ('foo.foo ()')
@dec ('Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ ΡΡΠ±ΡΡ')
ΠΊΠ»Π°ΡΡ SubFoo (Foo):
def foo (self, * args, ** kwargs):
ΠΏΠ΅ΡΠ°ΡΡ ('subfoo.foo () pre')
super (SubFoo, self) .foo (* Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, ** kwargs)
print ('subfoo.foo () ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅')
@dec ('Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ ΡΡΠ±ΡΡ')
ΠΊΠ»Π°ΡΡ SubSubFoo (SubFoo):
def foo (self, * args, ** kwargs):
print ('subsubfoo.foo () pre ')
super (SubSubFoo, self) .foo (* Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, ** kwargs)
print ('subsubfoo.foo () ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅')
SubSubFoo (). Foo ()
ΠΡΡ ΠΎΠ΄Ρ:
@decorator pre subsubfoo decorator
subsubfoo.foo () ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ
@decorator ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ subfoo
subfoo.foo () pre
@decorator pre foo Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ
foo.foo ()
@decorator ΠΏΠΎΡΡ foo Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ
subfoo.foo () ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅
@decorator ΠΏΠΎΡΡ-Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ subfoo
Subsubfoo.foo () ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅
@decorator post subsubfoo Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ
Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠΈΡΠ°Ρ ΠΈΡ Π±ΠΎΠ»Π΅Π΅ Π»Π°ΠΊΠΎΠ½ΠΈΡΠ½ΡΠΌΠΈ.ΠΠΎΡ ΠΊΠ»Π°ΡΡ Π΄Π»Ρ ΡΠΊΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠ°:
ΠΊΠ»Π°ΡΡ Dec (ΠΎΠ±ΡΠ΅ΠΊΡ):
def __init __ (self, msg):
self.msg = msg
def __call __ (ΡΠ΅Π±Ρ, ΠΊΠ»Π°ΡΡ):
old_foo = klass.foo
msg = self.msg
def Decorated_foo (self, * args, ** kwargs):
print ('@ decorator pre% s'% msg)
old_foo (ΡΠ°ΠΌ, * Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, ** kwargs)
print ('@ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ post% s'% msg)
klass.foo = Decorated_foo
Π²Π΅ΡΠ½ΡΡΡ ΠΊΠ»Π°ΡΡ
ΠΠΎΠ»Π΅Π΅ Π½Π°Π΄Π΅ΠΆΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΡΠΈΡ ΡΠΊΠΎΠ±ΠΎΠΊ ΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π΅ΡΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π² Π΄Π΅ΠΊΠΎΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅:
ΠΈΠ· ΠΈΠ½ΡΠΏΠ΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠΌΠΏΠΎΡΡ isclass
def decorate_if (ΡΡΠ»ΠΎΠ²ΠΈΠ΅, Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ):
Π²Π΅ΡΠ½ΡΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ, Π΅ΡΠ»ΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ ΠΈΠ½Π°ΡΠ΅ Π»ΡΠΌΠ±Π΄Π° x: x
def dec (ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅):
# ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π²Π°ΡΠ΅Π³ΠΎ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ° Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠ»Π°ΡΡΠΎΠΌ
ΡΡΠ²Π΅ΡΠΆΠ΄Π°ΡΡ Π½Π΅ isclass (ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅)
Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ def (ΠΊΠ»Π°ΡΡ):
old_foo = getattr (klass, 'foo', ΠΠ΅Ρ)
@decorate_if (old_foo, ΠΎΠ±Π΅ΡΡΠΊΠΈ (ΠΊΠ»Π°ΡΡ.ΡΡ))
def Decorated_foo (self, * args, ** kwargs):
print ('@ decorator pre% s'% msg)
Π΅ΡΠ»ΠΈ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΠΉ (old_foo):
old_foo (ΡΠ°ΠΌ, * Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, ** kwargs)
print ('@ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ post% s'% msg)
klass.foo = Decorated_foo
Π²Π΅ΡΠ½ΡΡΡ ΠΊΠ»Π°ΡΡ
Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°
assert
ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ, ΡΡΠΎ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ Π±Π΅Π· ΡΠΊΠΎΠ±ΠΎΠΊ. ΠΡΠ»ΠΈ Π΄Π°, ΡΠΎ Π΄Π΅ΠΊΠΎΡΠΈΡΡΠ΅ΠΌΡΠΉ ΠΊΠ»Π°ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ msg
Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ·ΡΠ²Π°Π΅Ρ AssertionError
.
@decorate_if
ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅Ρ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ
, ΡΠΎΠ»ΡΠΊΠΎ Π΅ΡΠ»ΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠ΅
ΠΎΡΠ΅Π½ΠΈΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ True
.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ getattr
, Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΠΉ ΡΠ΅ΡΡ
ΠΈ @decorate_if
, ΡΡΠΎΠ±Ρ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ Π½Π΅ ΡΠ»ΠΎΠΌΠ°Π»ΡΡ, Π΅ΡΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄ foo ()
Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π² Π΄Π΅ΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅.
python β ΠΊΠ°ΠΊ ΡΠΊΡΠ°ΡΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΠΊΠ»Π°ΡΡΠΎΠΌ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ°?
tl; dr
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΅ΡΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΡΠ΄Π΅Π»Π°Π² ΠΊΠ»Π°ΡΡ Timed
Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΎΠΌ ΠΈ Π²Π΅ΡΠ½ΡΠ² ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠ· __get__
, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ Test
Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ
ΠΊΠ»Π°ΡΡ Timed (ΠΎΠ±ΡΠ΅ΠΊΡ):
def __init __ (self, f):
ΡΠ΅Π±Ρ.func = f
def __call __ (self, * args, ** kwargs):
ΠΏΠ΅ΡΠ°ΡΡ (ΡΠ°ΠΌ)
start = dt.datetime.now ()
ret = self.func (* Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, ** kwargs)
time = dt.datetime.now () - Π½Π°ΡΠ°Π»ΠΎ
ret ["Π²ΡΠ΅ΠΌΡ"] = Π²ΡΠ΅ΠΌΡ
Π²ΠΎΠ·Π²ΡΠ°ΡΠΈΡΡΡΡ
def __get __ (Ρ, ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ, Π²Π»Π°Π΄Π΅Π»Π΅Ρ):
from functools import partial
Π²ΠΎΠ·Π²ΡΠ°Ρ ΡΠ°ΡΡΠΈΡΠ½ΠΎΠ³ΠΎ (self .__ call__, ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ)
ΠΠΊΡΡΠ°Π»ΡΠ½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°
Π¦ΠΈΡΠ°ΡΠ° ΠΈΠ· Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Python Π΄Π»Ρ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ° ,
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ° β ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ°Ρ Π°Ρ, ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π΄Π²Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠ΅ΠΌΠ°Π½ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½Ρ:
def f (...): ... f = ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ (f) @staticmethod def f (...): ...
ΠΡΠ°ΠΊ, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π³ΠΎΠ²ΠΎΡΠΈΡΠ΅,
@Timed
def Decorated (self, * args, ** kwargs):
ΡΡΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅
ΡΠΊΡΠ°ΡΠ΅Π½Π½ΡΠΉ = ΠΡΠΈΡΡΠΎΡΠ΅Π½Π½ΡΠΉ (ΡΠΊΡΠ°ΡΠ΅Π½Π½ΡΠΉ)
ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Timed
, ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΎΠ½ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈΠ²ΡΠ·Π°Π½, Π½Π΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π½ΠΈΠΌ . ΠΡΠ°ΠΊ, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π²ΡΠ·ΡΠ²Π°Π΅ΡΠ΅ Π΅Π³ΠΎ Π²ΠΎΡ ΡΠ°ΠΊ
ret = self.func (* Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, ** kwargs)
self.func
Π±ΡΠ΄Π΅Ρ ΡΡΡΠ»Π°ΡΡΡΡ Π½Π° Π½Π΅ΡΠ²ΡΠ·Π°Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Ρ Hello
Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°. ΠΠΎΡ ΠΏΠΎΡΠ΅ΠΌΡ self
ΠΏΠ΅ΡΠ°ΡΠ°Π΅Ρ ΠΊΠ°ΠΊ Hello
.
ΠΠ°ΠΊ ΡΡΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ?
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Ρ Π²Π°Ρ Π½Π΅Ρ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Test
Π² Timed
, Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ β ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ Timed
Π² ΠΊΠ»Π°ΡΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ° .Π¦ΠΈΡΠ°ΡΠ° ΠΈΠ· Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, ΡΠ°Π·Π΄Π΅Π» Β«ΠΡΠ·ΠΎΠ² Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΎΠ²Β»,
Π ΠΎΠ±ΡΠ΅ΠΌ, Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ β ΡΡΠΎ Π°ΡΡΠΈΠ±ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Ρ Β«ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈΒ», Π΄ΠΎΡΡΡΠΏ ΠΊ Π°ΡΡΠΈΠ±ΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π±ΡΠ» ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ Π² ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π΅ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ°:
__get __ ()
,__set __ ()
ΠΈ__delete __ ()
. ΠΡΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΈΠ· ΡΡΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΎΠ½ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΎΠΌ.ΠΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π°ΡΡΠΈΠ±ΡΡΡ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠΈ, ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ ΠΈΠ»ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ Π°ΡΡΠΈΠ±ΡΡΠ° ΠΈΠ· ΡΠ»ΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°.ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ,
ax
ΠΈΠΌΠ΅Π΅Ρ ΡΠ΅ΠΏΠΎΡΠΊΡ ΠΏΠΎΠΈΡΠΊΠ°, Π½Π°ΡΠΈΠ½Π°ΡΡΡΡΡΡ Ρa .__ dict __ ['x']
, Π·Π°ΡΠ΅ΠΌΡΠΈΠΏΠ° (a) .__ dict __ ['x']
ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡΡΡΡΡ ΡΠ΅ΡΠ΅Π· Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΊΠ»Π°ΡΡΡ ΡΠΈΠΏΠ°(a)
Π±Π΅Π· ΠΌΠ΅ΡΠ°ΠΊΠ»Π°ΡΡΠΎΠ².ΠΠ΄Π½Π°ΠΊΠΎ , Π΅ΡΠ»ΠΈ ΠΈΡΠΊΠΎΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΠΌ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ°, ΡΠΎΠ³Π΄Π° Python ΠΌΠΎΠΆΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈ Π²ΡΠ·Π²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ° Π²ΠΌΠ΅ΡΡΠΎ .
ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°ΡΡ Timed
Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΎΠΌ, ΠΏΡΠΎΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ² ΡΠ°ΠΊΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄
def __get __ (Ρ, ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ, Π²Π»Π°Π΄Π΅Π»Π΅Ρ):
...
ΠΠ΄Π΅ΡΡ self
ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΡΠ°ΠΌΠΎΠΌΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ Timed
, instance
ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΌΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΠΎΠΈΡΠΊ Π°ΡΡΠΈΠ±ΡΡΠΎΠ², Π° owner
ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΠΊΠ»Π°ΡΡΡ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΌΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ
.
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ __call__
Π½Π° Timed
, Π±ΡΠ΄Π΅Ρ Π²ΡΠ·Π²Π°Π½ ΠΌΠ΅ΡΠΎΠ΄ __get__
. Π’Π΅ΠΏΠ΅ΡΡ ΠΊΠ°ΠΊΠΈΠΌ-ΡΠΎ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΏΠ΅ΡΠ²ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΊΠ°ΠΊ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° Test
(Π΄Π°ΠΆΠ΅ Π΄ΠΎ Hello
).ΠΡΠ°ΠΊ, ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ Π΅ΡΠ΅ ΠΎΠ΄Π½Ρ ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΏΠ΅ΡΠ²ΡΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ ΠΊΠΎΡΠΎΡΠΎΠΉ Π±ΡΠ΄Π΅Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Test
, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ
def __get __ (Ρ, ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ, Π²Π»Π°Π΄Π΅Π»Π΅Ρ):
from functools import partial
Π²ΠΎΠ·Π²ΡΠ°Ρ ΡΠ°ΡΡΠΈΡΠ½ΠΎΠ³ΠΎ (self .__ call__, ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ)
Π’Π΅ΠΏΠ΅ΡΡ self .__ call__
β ΡΡΠΎ ΡΠ²ΡΠ·Π°Π½Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ (ΠΏΡΠΈΠ²ΡΠ·Π°Π½Π½ΡΠΉ ΠΊ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ Timed
), Π° Π²ΡΠΎΡΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ partial
ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ²ΡΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ Π²ΡΠ·ΠΎΠ²Π° self .__ call__
.
ΠΡΠ°ΠΊ, Π²ΡΠ΅ ΡΡΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡΡΡ ΠΊΠ°ΠΊ ΡΡΠΎ
Ρ.call_deco ()
self.decorated ("ΠΡΠΈΠ²Π΅Ρ", world = "World")
Π’Π΅ΠΏΠ΅ΡΡ self.decorated
Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Timed (Decorated)
(Ρ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΎΠ½ Π±ΡΠ΄Π΅Ρ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ TimedObject
). ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΎΠ±ΡΠ°ΡΠ°Π΅ΠΌΡΡ ΠΊ Π½Π΅ΠΌΡ, Π±ΡΠ΄Π΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ Π² Π½Π΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄ __get__
, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ°ΡΡΠΈΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ
. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΡΡ, ΡΡΠΎ Π²ΠΎΡ ΡΠ°ΠΊ
def call_deco (ΡΠ°ΠΌ):
ΠΏΠ΅ΡΠ°ΡΡ (ΡΠ°ΠΌΠΎΠ΄Π΅ΠΊΠΎΡΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ)
self.decorated ("ΠΡΠΈΠ²Π΅Ρ", world = "World")
Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°Π΅Ρ
...
ΠΡΠ°ΠΊ,
self.decorated ("Hello", world = "World")
ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡΡΡ Π²
Timed .__ get __ (TimedObject, , Test .__ class __) ("Hello", world = "World")
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ ΡΠ°ΡΡΠΈΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ
,
partial (TimedObject .__ call__, ) ("Hello", world = "World"))
, ΡΡΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅
TimedObject.__call __ (, 'Hello', world = "World")
ΠΡΠ°ΠΊ,
ΡΠ°ΠΊΠΆΠ΅ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΠ°ΡΡΡΡ * args
, ΠΈ ΠΊΠΎΠ³Π΄Π° Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ self.func
, ΠΏΠ΅ΡΠ²ΡΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ
.
Primer on Python Decorators β Real Python
Π ΡΡΠΎΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅ ΠΏΠΎ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ°ΠΌ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΡΡΠΎ ΠΎΠ½ΠΈ ΡΠΎΠ±ΠΎΠΉ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ. ΠΠ΅ΠΊΠΎΡΠ°ΡΠΎΡΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π΄Π»Ρ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΉ Π²ΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ°.
ΠΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ β ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΄ΡΡΠ³ΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΈ ΡΠ°ΡΡΠΈΡΡΠ΅Ρ Π΅Π΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡ Π΅Π΅ ΡΠ²Π½ΠΎ.
ΠΠ²ΡΡΠΈΡ Π·Π°ΠΏΡΡΠ°Π½Π½ΠΎ, Π½ΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΡΠΎ Π½Π΅ ΡΠ°ΠΊ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ ΡΠ²ΠΈΠ΄Π΅Π»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΡ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ Π²ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΈΠ· ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠΈ Π·Π΄Π΅ΡΡ.
Π€ΡΠ½ΠΊΡΠΈΠΈ
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ½ΡΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΡ, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ½Π°ΡΠ°Π»Π° ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠ»Ρ Π½Π°ΡΠΈΡ ΡΠ΅Π»Π΅ΠΉ ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π·Π°Π΄Π°Π½Π½ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² . ΠΠΎΡ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ:
>>> >>> def add_one (ΡΠΈΡΠ»ΠΎ):
... Π²Π΅ΡΠ½ΡΡΡ ΡΠΈΡΠ»ΠΎ + 1
>>> add_one (2)
3
Π ΠΎΠ±ΡΠ΅ΠΌ, ΡΡΠ½ΠΊΡΠΈΠΈ Π² Python ΠΌΠΎΠ³ΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅ΡΡ ΠΏΠΎΠ±ΠΎΡΠ½ΡΠ΅ ΡΡΡΠ΅ΠΊΡΡ, Π° Π½Π΅ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠ΅Π²ΡΠ°ΡΠ°ΡΡ Π²Ρ
ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π² Π²ΡΡ
ΠΎΠ΄Π½ΡΠ΅.Π€ΡΠ½ΠΊΡΠΈΡ print ()
ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΡΡΠΎΠ³ΠΎ: ΠΎΠ½Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ None
, ΠΈΠΌΠ΅Ρ ΠΏΠΎΠ±ΠΎΡΠ½ΡΠΉ ΡΡΡΠ΅ΠΊΡ Π²ΡΠ²ΠΎΠ΄Π° ΡΠ΅Π³ΠΎ-Π»ΠΈΠ±ΠΎ Π½Π° ΠΊΠΎΠ½ΡΠΎΠ»Ρ. ΠΠ΄Π½Π°ΠΊΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΡ, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄ΡΠΌΠ°ΡΡ ΠΎ ΡΡΠ½ΠΊΡΠΈΡΡ
ΠΊΠ°ΠΊ ΠΎ ΡΠ΅ΠΌ-ΡΠΎ, ΡΡΠΎ ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π°Π΄Π°Π½Π½ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Π² Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: Π ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ (ΠΏΠΎΡΡΠΈ) ΡΠΎΠ»ΡΠΊΠΎ Ρ ΡΠΈΡΡΡΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ Π±Π΅Π· ΠΏΠΎΠ±ΠΎΡΠ½ΡΡ ΡΡΡΠ΅ΠΊΡΠΎΠ². Π₯ΠΎΡΡ Python Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΈΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ, ΠΎΠ½ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π²ΠΊΠ»ΡΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ²ΠΎΠΊΠ»Π°ΡΡΠ½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ.
ΠΠ΅ΡΠ²ΠΎΠΊΠ»Π°ΡΡΠ½ΡΠ΅ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΡ
Π Python ΡΡΠ½ΠΊΡΠΈΠΈ β ΡΡΠΎ ΠΏΠ΅ΡΠ²ΠΎΠΊΠ»Π°ΡΡΠ½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² , ΠΊΠ°ΠΊ ΠΈ Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ (string, int, float, list ΠΈ Ρ. Π.). Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ:
def say_hello (ΠΈΠΌΡ):
return f "ΠΡΠΈΠ²Π΅Ρ, {ΠΈΠΌΡ}"
def be_awesome (ΠΈΠΌΡ):
return f "ΠΠΉ, {name}, Π²ΠΌΠ΅ΡΡΠ΅ ΠΌΡ ΡΠ°ΠΌΡΠ΅ ΠΊΡΡΡΡΠ΅!"
def greet_bob (greeter_func):
return greeter_func ("ΠΠΎΠ±")
ΠΠ΄Π΅ΡΡ say_hello ()
ΠΈ be_awesome ()
β ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΆΠΈΠ΄Π°ΡΡ ΠΈΠΌΡ Π² Π²ΠΈΠ΄Π΅ ΡΡΡΠΎΠΊΠΈ.ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΡ greet_bob ()
ΠΎΠΆΠΈΠ΄Π°Π΅Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΡΡΠ½ΠΊΡΠΈΡ. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π΅ΠΌΡ say_hello ()
ΠΈΠ»ΠΈ be_awesome ()
:
>>> greet_bob (say_hello)
"ΠΡΠΈΠ²Π΅Ρ, ΠΠΎΠ±"
>>> greet_bob (be_awesome)
Β«ΠΠΎ ΠΠΎΠ±, Π²ΠΌΠ΅ΡΡΠ΅ ΠΌΡ ΡΠ°ΠΌΡΠ΅ ΠΊΡΡΡΡΠ΅!Β»
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ greet_bob (say_hello)
ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ Π΄Π²ΡΠΌ ΡΡΠ½ΠΊΡΠΈΡΠΌ, Π½ΠΎ ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ: greet_bob ()
ΠΈ say_hello
.Π€ΡΠ½ΠΊΡΠΈΡ say_hello
Π½Π°Π·Π²Π°Π½Π° Π±Π΅Π· ΡΠΊΠΎΠ±ΠΎΠΊ. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΡΠ»ΠΊΠ° Π½Π° ΡΡΠ½ΠΊΡΠΈΡ. Π€ΡΠ½ΠΊΡΠΈΡ Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ. Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΡΡΠ½ΠΊΡΠΈΡ greet_bob ()
Π½Π°ΠΏΠΈΡΠ°Π½Π° Π² ΠΊΡΡΠ³Π»ΡΡ
ΡΠΊΠΎΠ±ΠΊΠ°Ρ
, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½Π° Π±ΡΠ΄Π΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ.
ΠΠ½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ
ΠΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π²Π½ΡΡΡΠΈ Π΄ΡΡΠ³ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ . Π’Π°ΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΈ Ρ Π΄Π²ΡΠΌΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ:
def parent ():
print ("ΠΠ΅ΡΠ°ΡΡ ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΈ parent ()")
def first_child ():
print ("ΠΠ΅ΡΠ°ΡΡ ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΈ first_child ()")
def second_child ():
print ("ΠΠ΅ΡΠ°ΡΡ ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΈ second_child ()")
second_child ()
ΠΠ΅ΡΠ²ΡΠΉ ΡΠ΅Π±Π΅Π½ΠΎΠΊ()
Π§ΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π²ΡΠ·ΡΠ²Π°Π΅ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ parent ()
? ΠΠΎΠ΄ΡΠΌΠ°ΠΉΡΠ΅ ΠΎΠ± ΡΡΠΎΠΌ ΠΌΠΈΠ½ΡΡΠΊΡ.Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ:
>>> ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ ()
ΠΠ΅ΡΠ°ΡΡ ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΈ parent ()
ΠΠ΅ΡΠ°ΡΡ ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΈ second_child ()
ΠΠ΅ΡΠ°ΡΡ ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΈ first_child ()
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΏΠΎΡΡΠ΄ΠΎΠΊ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΠ°ΠΊ ΠΈ Π² ΡΠ»ΡΡΠ°Π΅ Ρ Π»ΡΠ±ΡΠΌΠΈ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ, ΠΏΠ΅ΡΠ°ΡΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ.
ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π΄ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ.ΠΠ½ΠΈ ΠΈΠΌΠ΅ΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΎΠ±Π»Π°ΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ parent ()
: ΠΎΠ½ΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π²Π½ΡΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ parent ()
ΠΊΠ°ΠΊ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅. ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π²ΡΠ·Π²Π°ΡΡ first_child ()
. ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΎΡΠΈΠ±ΠΊΡ:
Traceback (ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π·Π²ΠΎΠ½ΠΎΠΊ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ):
Π€Π°ΠΉΠ» "", ΡΡΡΠΎΠΊΠ° 1, Π²
NameError: ΠΈΠΌΡ first_child Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ
ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π²ΡΠ·ΡΠ²Π°Π΅ΡΠ΅ parent ()
, ΡΠ°ΠΊΠΆΠ΅ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ first_child ()
ΠΈ second_child ()
.ΠΠΎ ΠΈΠ·-Π·Π° ΡΠ²ΠΎΠ΅ΠΉ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΎΠ½ΠΈ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½Ρ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Π°ΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ parent ()
.
ΠΠΎΠ·Π²ΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΉ
Python ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ. Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΎΠ΄Π½Π° ΠΈΠ· Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ
ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈΠ· Π²Π½Π΅ΡΠ½Π΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ parent ()
:
def parent (ΡΠΈΡΠ»ΠΎ):
def first_child ():
return "ΠΡΠΈΠ²Π΅Ρ, Ρ ΠΠΌΠΌΠ°"
def second_child ():
return "ΠΠΎΠ²ΠΈ ΠΌΠ΅Π½Ρ ΠΠΈΠ°ΠΌ"
Π΅ΡΠ»ΠΈ num == 1:
Π²Π΅ΡΠ½ΡΡΡ first_child
Π΅ΡΠ΅:
return second_child
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π²Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΠ΅ first_child
Π±Π΅Π· ΡΠΊΠΎΠ±ΠΎΠΊ.ΠΠ°ΠΏΠΎΠΌΠ½ΠΈΠΌ, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π²Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΠ΅ ΡΡΡΠ»ΠΊΡ Π½Π° ΡΡΠ½ΠΊΡΠΈΡ first_child
. Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ first_child ()
Π² ΠΊΡΡΠ³Π»ΡΡ
ΡΠΊΠΎΠ±ΠΊΠ°Ρ
ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΎΡΠ΅Π½ΠΊΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅:
>>> ΠΏΠ΅ΡΠ²ΡΠΉ = ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΉ (1)
>>> Π²ΡΠΎΡΠΎΠΉ = ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΉ (2)
>>> ΠΏΠ΅ΡΠ²ΡΠΉ
<ΡΡΠ½ΠΊΡΠΈΡ parent. .first_child Π² 0x7f599f1e2e18>
>>> Π²ΡΠΎΡΠΎΠΉ
<ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ. .second_child Π½Π° 0x7f599dad5268>
ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π·Π°Π³Π°Π΄ΠΎΡΠ½ΡΠΉ Π²ΡΠ²ΠΎΠ΄ ΠΏΡΠΎΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΏΠ΅ΡΠ²Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ
ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ first_child ()
Π²Π½ΡΡΡΠΈ parent ()
, Π° second
ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° second_child ()
.
Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ²ΡΠΉ
ΠΈ Π²ΡΠΎΡΠΎΠΉ
, ΠΊΠ°ΠΊ Π΅ΡΠ»ΠΈ Π±Ρ ΠΎΠ½ΠΈ Π±ΡΠ»ΠΈ ΠΎΠ±ΡΡΠ½ΡΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΊ ΡΡΠ½ΠΊΡΠΈΡΠΌ, Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½ΠΈ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ, Π½Π΅Π»ΡΠ·Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΡΡΠΌΠΎΠΉ Π΄ΠΎΡΡΡΠΏ:
>>> ΠΏΠ΅ΡΠ²ΡΠΉ ()
'ΠΡΠΈΠ²Π΅Ρ, Ρ ΠΠΌΠΌΠ°'
>>> Π²ΡΠΎΡΠΎΠΉ ()
"ΠΠΎΠ²ΠΈ ΠΌΠ΅Π½Ρ ΠΠΈΠ°ΠΌ"
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ»ΠΈ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ first_child ()
.ΠΠ΄Π½Π°ΠΊΠΎ Π² ΡΡΠΎΠΌ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²Ρ Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΠ»ΠΈ ΠΊΡΡΠ³Π»ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ ΠΊ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΡΠΌ β first_child
β ΠΏΡΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Ρ Π²Π°Ρ Π±ΡΠ΄Π΅Ρ ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΊΠ°ΠΆΠ΄ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΡ Π²Ρ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π²ΡΠ·Π²Π°ΡΡ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ. ΠΡΡΡ ΡΠΌΡΡΠ»?
ΠΡΠΎΡΡΡΠ΅ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΡ
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΡΠ²ΠΈΠ΄Π΅Π»ΠΈ, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ Π»ΡΠ±ΠΎΠΌΡ Π΄ΡΡΠ³ΠΎΠΌΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π² Python, Π²Ρ Π³ΠΎΡΠΎΠ²Ρ Π΄Π²ΠΈΠ³Π°ΡΡΡΡ Π΄Π°Π»ΡΡΠ΅ ΠΈ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π²ΠΎΠ»ΡΠ΅Π±Π½ΠΎΠ³ΠΎ Π·Π²Π΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ Python. ΠΠ°ΡΠ½Π΅ΠΌ Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
def my_decorator (ΡΡΠ½ΠΊΡΠΈΡ):
def wrapper ():
print ("Π§ΡΠΎ-ΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ Π΄ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ.")
func ()
print ("Π§ΡΠΎ-ΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΠΏΠΎΡΠ»Π΅ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ.")
Π²ΠΎΠ·Π²ΡΠ°ΡΠ½Π°Ρ ΠΎΠ±Π΅ΡΡΠΊΠ°
def say_whee ():
print ("Π£Ρ!")
say_whee = my_decorator (say_whee)
ΠΠΎΠΆΠ΅ΡΠ΅ Π»ΠΈ Π²Ρ ΡΠ³Π°Π΄Π°ΡΡ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π²ΡΠ·ΡΠ²Π°Π΅ΡΠ΅ say_whee ()
? ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅:
>>> say_whee ()
Π§ΡΠΎ-ΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ Π΄ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΠΉ!
Π§ΡΠΎ-ΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΠΏΠΎΡΠ»Π΅ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ.
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ, ΡΡΠΎ Π·Π΄Π΅ΡΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, Π²Π΅ΡΠ½ΠΈΡΠ΅ΡΡ ΠΊ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌ.ΠΡ Π±ΡΠΊΠ²Π°Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ Π²ΡΠ΅, ΡΡΠΎ Π²Ρ ΡΠΆΠ΅ ΡΠ·Π½Π°Π»ΠΈ.
Π’Π°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠΎΠ΅ ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡΡΠΎΠΊΠ΅:
say_whee = my_decorator (say_whee)
Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, ΠΈΠΌΡ say_whee
ΡΠ΅ΠΏΠ΅ΡΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° Π²Π½ΡΡΡΠ΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ wrapper ()
. ΠΠΎΠΌΠ½ΠΈΡΠ΅, ΡΡΠΎ Π²Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΠ΅ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΡ
ΠΊΠ°ΠΊ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΠ³Π΄Π° Π²ΡΠ·ΡΠ²Π°Π΅ΡΠ΅ my_decorator (say_whee)
:
>>> say_whee
<ΡΡΠ½ΠΊΡΠΈΡ my_decorator. .wrapper ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ 0x7f3c5dfd42f0>
ΠΠ΄Π½Π°ΠΊΠΎ wrapper ()
ΠΈΠΌΠ΅Π΅Ρ ΡΡΡΠ»ΠΊΡ Π½Π° ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ say_whee ()
ΠΊΠ°ΠΊ func
ΠΈ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²ΡΠΌΡ Π²ΡΠ·ΠΎΠ²Π°ΠΌΠΈ print ()
.
ΠΡΠΎΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ: Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠ² ΠΎΠ±ΠΎΡΠ°ΡΠΈΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΈΠ·ΠΌΠ΅Π½ΡΡ Π΅Π΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅.
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ Π΄Π²ΠΈΠ³Π°ΡΡΡΡ Π΄Π°Π»ΡΡΠ΅, Π΄Π°Π²Π°ΠΉΡΠ΅ Π²Π·Π³Π»ΡΠ½Π΅ΠΌ Π½Π° Π²ΡΠΎΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ wrapper ()
β ΡΡΠΎ ΠΎΠ±ΡΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ Python, ΡΠΏΠΎΡΠΎΠ± ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ.Π§ΡΠΎΠ±Ρ Π½Π΅ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡΡ ΡΠΎΡΠ΅Π΄Π΅ΠΉ, ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π΄Π΅ΠΊΠΎΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π½Ρ:
ΠΈΠ· datetime import datetime
def not_during_the_night (ΡΡΠ½ΠΊΡΠΈΡ):
def wrapper ():
Π΅ΡΠ»ΠΈ 7 <= datetime.now (). hour <22:
func ()
Π΅ΡΠ΅:
pass # Π’ΠΈΡΠ΅, ΡΠΎΡΠ΅Π΄ΠΈ ΡΠΏΡΡ
Π²ΠΎΠ·Π²ΡΠ°ΡΠ½Π°Ρ ΠΎΠ±Π΅ΡΡΠΊΠ°
def say_whee ():
print ("Π£Ρ!")
say_whee = not_during_the_night (say_whee)
ΠΡΠ»ΠΈ Π²Ρ ΠΏΠΎΠΏΡΡΠ°Π΅ΡΠ΅ΡΡ ΠΏΠΎΠ·Π²ΠΎΠ½ΠΈΡΡ ΠΏΠΎ Π½ΠΎΠΌΠ΅ΡΡ say_whee ()
ΠΏΠΎΡΠ»Π΅ ΠΎΡΡ
ΠΎΠ΄Π° ΠΊΠΎ ΡΠ½Ρ, Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ:
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ°Ρ Π°Ρ!
Π’ΠΎ, ΠΊΠ°ΠΊ Π²Ρ ΡΠΊΡΠ°ΡΠΈΠ»ΠΈ say_whee ()
Π²ΡΡΠ΅, Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ΡΠΊΠ»ΡΠΆΠ΅.ΠΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ, Π²Ρ Π½Π°Π±ΠΈΡΠ°Π΅ΡΠ΅ ΠΈΠΌΡ say_whee
ΡΡΠΈ ΡΠ°Π·Π°. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΊΡΡΠ²Π°Π΅ΡΡΡ ΠΏΠΎΠ΄ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Python ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Π° @
, ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠΎΠΌ Β«ΠΏΠΈΡΠΎΠ³Π°Β». Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π΅Π»Π°Π΅Ρ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, ΡΡΠΎ ΠΈ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ°:
def my_decorator (ΡΡΠ½ΠΊΡΠΈΡ):
def wrapper ():
print ("Π§ΡΠΎ-ΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ Π΄ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ.")
func ()
print ("Π§ΡΠΎ-ΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΠΏΠΎΡΠ»Π΅ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ.")
Π²ΠΎΠ·Π²ΡΠ°ΡΠ½Π°Ρ ΠΎΠ±Π΅ΡΡΠΊΠ°
@my_decorator
def say_whee ():
print ("Π£Ρ!")
ΠΡΠ°ΠΊ, @my_decorator
- ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠΊΠ°Π·Π°ΡΡ say_whee = my_decorator (say_whee)
. ΠΠΎΡ ΠΊΠ°ΠΊ Π²Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΠ΅ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ ΠΊ ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΠΎΠ²ΡΠΎΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠ²
ΠΠ°ΠΏΠΎΠΌΠ½ΠΈΠΌ, ΡΡΠΎ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ - ΡΡΠΎ ΠΎΠ±ΡΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ Python. ΠΠΎΡΡΡΠΏΠ½Ρ Π²ΡΠ΅ ΠΎΠ±ΡΡΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π΄Π»Ρ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΠΌ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ Π΄ΡΡΠ³ΠΈΡ ΡΡΠ½ΠΊΡΠΈΡΡ .
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ°ΠΉΠ» Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ decorators.py
ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΡΠΌ:
def do_twice (func):
def wrapper_do_twice ():
func ()
func ()
Π²Π΅ΡΠ½ΡΡΡ wrapper_do_twice
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°Π·Π²Π°ΡΡ ΡΠ²ΠΎΡ Π²Π½ΡΡΡΠ΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΊΠ°ΠΊ Ρ
ΠΎΡΠΈΡΠ΅, ΠΈ ΠΎΠ±ΡΠ΅Π΅ ΠΈΠΌΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ wrapper ()
, ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΈΡ. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠ². Π§ΡΠΎΠ±Ρ ΠΎΡΠ΄Π΅Π»ΠΈΡΡ ΠΈΡ
, ΠΌΡ Π½Π°Π·ΠΎΠ²Π΅ΠΌ Π²Π½ΡΡΡΠ΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΡΠ΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΡΡΠΎ ΠΈ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ, Π½ΠΎ Ρ ΠΏΡΠ΅ΡΠΈΠΊΡΠΎΠΌ wrapper_
.
Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ Π½ΠΎΠ²ΡΠΉ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ Π² Π΄ΡΡΠ³ΠΈΡ ΡΠ°ΠΉΠ»Π°Ρ , Π²ΡΠΏΠΎΠ»Π½ΠΈΠ² ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΠΉ ΠΈΠΌΠΏΠΎΡΡ:
ΠΎΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠ² import do_twice
@do_twice
def say_whee ():
print ("Π£Ρ!")
ΠΠΎΠ³Π΄Π° Π²Ρ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΡΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΡΡΠΎ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ say_whee ()
Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π΄Π²Π°ΠΆΠ΄Ρ:
>>> say_whee ()
ΠΠΉ!
ΠΠΉ!
Π£ΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ
ΠΠΎΠΏΡΡΡΠΈΠΌ, Ρ Π²Π°Ρ Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ.Π’Ρ Π΅ΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΡ Π΅Π³ΠΎ ΡΠΊΡΠ°ΡΠΈΡΡ? ΠΠ°Π²Π°ΠΉ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ:
ΠΎΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠ² import do_twice
@do_twice
def greet (ΠΈΠΌΡ):
print (f "ΠΡΠΈΠ²Π΅Ρ, {ΠΈΠΌΡ}")
Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Π·Π°ΠΏΡΡΠΊ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ:
>>> >>> ΠΏΡΠΈΠ²Π΅Ρ ("ΠΠΈΡ")
ΠΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ (ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π²ΡΠ·ΠΎΠ² ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ):
Π€Π°ΠΉΠ» "", ΡΡΡΠΎΠΊΠ° 1, Π²
TypeError: wrapper_do_twice () ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ 0 ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½Π½ΡΡ
Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², Π½ΠΎ Π΄Π°Π½ 1
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ Π²Π½ΡΡΡΠ΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ wrapper_do_twice ()
Π½Π΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ
Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², Π½ΠΎ Π΅ΠΉ Π±ΡΠ»ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π½ΠΎ name = "World"
.ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΡΡΠΎ, ΡΠ°Π·ΡΠ΅ΡΠΈΠ² wrapper_do_twice ()
ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΎΠ΄ΠΈΠ½ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ, Π½ΠΎ ΡΠΎΠ³Π΄Π° ΠΎΠ½ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠΉ Π²Π°ΠΌΠΈ ΡΠ°Π½Π΅Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ say_whee ()
.
Π Π΅ΡΠ΅Π½ΠΈΠ΅ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ * args
ΠΈ ** kwargs
Π²ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ. ΠΠ°ΡΠ΅ΠΌ ΠΎΠ½ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½Π½ΡΡ
Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π°. ΠΠ΅ΡΠ΅ΠΏΠΈΡΠΈΡΠ΅ decorators.py
ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
def do_twice (func):
def wrapper_do_twice (* args, ** kwargs):
func (* Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, ** kwargs)
func (* Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, ** kwargs)
Π²Π΅ΡΠ½ΡΡΡ wrapper_do_twice
ΠΠ½ΡΡΡΠ΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ wrapper_do_twice ()
ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π»ΡΠ±ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ ΠΈΡ
ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ½Π° ΡΠΊΡΠ°ΡΠ°Π΅Ρ.Π’Π΅ΠΏΠ΅ΡΡ ΠΎΠ±Π° Π²Π°ΡΠΈΡ
ΠΏΡΠΈΠΌΠ΅ΡΠ° say_whee ()
ΠΈ greet ()
ΡΠ°Π±ΠΎΡΠ°ΡΡ:
>>> say_whee ()
ΠΠΉ!
ΠΠΉ!
>>> ΠΏΡΠΈΠ²Π΅Ρ ("ΠΠΈΡ")
ΠΡΠΈΠ²Π΅Ρ, ΠΌΠΈΡ
ΠΡΠΈΠ²Π΅Ρ, ΠΌΠΈΡ
ΠΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΈΠ· ΡΠΊΡΠ°ΡΠ΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ
Π§ΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ Π΄Π΅ΠΊΠΎΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ? Π§ΡΠΎ ΠΆ, ΡΠ΅ΡΠ°ΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΡ. ΠΠΎΠΏΡΡΡΠΈΠΌ, Π²Ρ ΡΠΊΡΠ°ΡΠ°Π΅ΡΠ΅ ΠΏΡΠΎΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΎΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠ² import do_twice
@do_twice
def return_greeting (ΠΈΠΌΡ):
print ("Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²ΠΈΡ")
return f "ΠΡΠΈΠ²Π΅Ρ, {ΠΈΠΌΡ}"
ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ:
>>> >>> hi_adam = return_greeting ("ΠΠ΄Π°ΠΌ")
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²ΠΈΡ
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²ΠΈΡ
>>> ΠΏΠ΅ΡΠ°ΡΡ (ΠΏΡΠΈΠ²Π΅Ρ_Π°Π΄Π°ΠΌ)
ΠΠΈΠΊΡΠΎ
ΠΠΉ, Π²Π°Ρ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ ΡΡΠ΅Π» Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ do_twice_wrapper ()
Π½Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ²Π½ΠΎ, Π²ΡΠ·ΠΎΠ² return_greeting ("Adam")
Π·Π°ΠΊΠΎΠ½ΡΠΈΠ»ΡΡ ΡΠ΅ΠΌ, ΡΡΠΎ Π²Π΅ΡΠ½ΡΠ» None
.
Π§ΡΠΎΠ±Ρ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΡΡΠΎ, Π½ΡΠΆΠ½ΠΎ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ-ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π΅ΠΊΠΎΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ . ΠΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ ΡΠ°ΠΉΠ» decorators.py
:
def do_twice (func):
def wrapper_do_twice (* args, ** kwargs):
func (* Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, ** kwargs)
return func (* args, ** kwargs)
Π²Π΅ΡΠ½ΡΡΡ wrapper_do_twice
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ:
>>> >>> return_greeting ("ΠΠ΄Π°ΠΌ")
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²ΠΈΡ
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²ΠΈΡ
"ΠΡΠΈΠ²Π΅Ρ, ΠΠ΄Π°ΠΌ"
ΠΡΠΎ Π²Ρ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅?
ΠΠΎΠ»ΡΡΠΈΠΌ ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎΠΌ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ Python, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π² ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ΅, ΡΠ²Π»ΡΠ΅ΡΡΡ Π΅Π³ΠΎ ΠΌΠΎΡΠ½Π°Ρ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ ΠΊ ΡΠ°ΠΌΠΎΠ°Π½Π°Π»ΠΈΠ·Ρ.Π‘Π°ΠΌΠΎΠ°Π½Π°Π»ΠΈΠ· - ΡΡΠΎ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π·Π½Π°ΡΡ ΠΎ ΡΠ²ΠΎΠΈΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ Π°ΡΡΠΈΠ±ΡΡΠ°Ρ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠ½ΠΊΡΠΈΡ Π·Π½Π°Π΅Ρ ΡΠ²ΠΎΠ΅ ΠΈΠΌΡ ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ:
>>> >>> ΠΏΠ΅ΡΠ°ΡΡ
<Π²ΡΡΡΠΎΠ΅Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠ΅ΡΠ°ΡΠΈ>
>>> print .__ name__
'Π Π°ΡΠΏΠ΅ΡΠ°ΡΠ°ΡΡ'
>>> help (ΡΠ°ΡΠΏΠ΅ΡΠ°ΡΠ°ΡΡ)
Π‘ΠΏΡΠ°Π²ΠΊΠ° ΠΏΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ print Π²ΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ
ΠΌΠΎΠ΄ΡΠ»ΡΡ
:
Π Π°ΡΠΏΠ΅ΡΠ°ΡΠ°ΡΡ(...)
<ΠΏΠΎΠ»Π½ΠΎΠ΅ ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅>
Π‘Π°ΠΌΠΎΠ°Π½Π°Π»ΠΈΠ· ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΈ Ρ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΠ΅ ΡΠ°ΠΌΠΈ:
>>> >>> say_whee
<ΡΡΠ½ΠΊΡΠΈΡ do_twice. .wrapper_do_twice ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ 0x7f43700e52f0>
>>> say_whee .__ name__
'wrapper_do_twice'
>>> ΠΏΠΎΠΌΠΎΠ³ΠΈΡΠ΅ (say_whee)
Π‘ΠΏΡΠ°Π²ΠΊΠ° ΠΏΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ wrapper_do_twice Π² Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ°Ρ
ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ:
wrapper_do_twice ()
ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΠΎΡΠ»Π΅ ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΡ say_whee ()
ΠΎΡΠ΅Π½Ρ Π·Π°ΠΏΡΡΠ°Π»Π°ΡΡ Π² ΡΠ²ΠΎΠ΅ΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎΡΡΠΈ. Π’Π΅ΠΏΠ΅ΡΡ ΠΎΠ½ ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ, ΡΡΠΎ ΡΡΠΎ Π²Π½ΡΡΡΠ΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ wrapper_do_twice ()
Π²Π½ΡΡΡΠΈ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ° do_twice ()
. Π₯ΠΎΡΡ ΡΠ΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΈ ΡΡΠΎ ΠΏΡΠ°Π²Π΄Π°, ΡΡΠΎ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ.
Π§ΡΠΎΠ±Ρ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΡΡΠΎ, Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ @ functools.wraps
, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΡ
ΡΠ°Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠ±Π½ΠΎΠ²ΠΈΡΠ΅ decorators.py
Π΅ΡΠ΅ ΡΠ°Π·:
ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠΌΠΏΠΎΡΡΠ°
def do_twice (ΡΡΠ½ΠΊΡΠΈΡ):
@ functools.wraps (ΡΡΠ½ΠΊΡΠΈΡ)
def wrapper_do_twice (* args, ** kwargs):
func (* Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, ** kwargs)
return func (* args, ** kwargs)
Π²Π΅ΡΠ½ΡΡΡ wrapper_do_twice
Π Π΄Π΅ΠΊΠΎΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ say_whee ()
Π½ΠΈΡΠ΅Π³ΠΎ ΠΌΠ΅Π½ΡΡΡ Π½Π΅ Π½ΡΠΆΠ½ΠΎ:
>>> say_whee
<ΡΡΠ½ΠΊΡΠΈΡ say_whee Π² 0x7ff79a60f2f0>
>>> say_whee.__ΠΈΠΌΡ__
'say_whee'
>>> ΠΏΠΎΠΌΠΎΠ³ΠΈΡΠ΅ (say_whee)
Π‘ΠΏΡΠ°Π²ΠΊΠ° ΠΏΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ say_whee Π² ΠΌΠΎΠ΄ΡΠ»Π΅ whee:
say_whee ()
ΠΠ°ΠΌΠ½ΠΎΠ³ΠΎ Π»ΡΡΡΠ΅! Π’Π΅ΠΏΠ΅ΡΡ say_whee ()
ΠΎΡΡΠ°Π΅ΡΡΡ ΡΠ°ΠΌΠΈΠΌ ΡΠΎΠ±ΠΎΠΉ ΠΏΠΎΡΠ»Π΅ ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΡ.
Π’Π΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π΄Π΅ΡΠ°Π»ΠΈ: ΠΠ΅ΠΊΠΎΡΠ°ΡΠΎΡ @ functools.wraps
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΡ functools.update_wrapper ()
Π΄Π»Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ
Π°ΡΡΠΈΠ±ΡΡΠΎΠ², ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ __name__
ΠΈ __doc__
, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² ΠΈΠ½ΡΡΠΎΡΠΏΠ΅ΠΊΡΠΈΠΈ.
ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΠΈΠ· ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠΈΡΠ°
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π΅ΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠ².ΠΡ Π·Π°ΠΌΠ΅ΡΠΈΡΠ΅, ΡΡΠΎ ΠΎΠ½ΠΈ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ Π±ΡΠ΄ΡΡ ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΡΠΎΠΉ ΠΆΠ΅ ΡΡ Π΅ΠΌΠ΅, ΠΊΠΎΡΠΎΡΡΡ Π²Ρ ΡΠΆΠ΅ ΡΡΠ²ΠΎΠΈΠ»ΠΈ:
ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠΌΠΏΠΎΡΡΠ°
Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ def (func):
@ functools.wraps (ΡΡΠ½ΠΊΡΠΈΡ)
def wrapper_decorator (* args, ** kwargs):
# Π‘Π΄Π΅Π»Π°ΠΉ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΏΠ΅ΡΠ΅Π΄
Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ = func (* Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, ** kwargs)
# Π‘Π΄Π΅Π»Π°ΠΉΡΠ΅ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΏΠΎΡΠ»Π΅
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
Π²Π΅ΡΠ½ΡΡΡ wrapper_decorator
ΠΡΠ° ΡΠΎΡΠΌΡΠ»Π° - Ρ ΠΎΡΠΎΡΠΈΠΉ ΡΠ°Π±Π»ΠΎΠ½Π½ΡΠΉ ΡΠ°Π±Π»ΠΎΠ½ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠ².
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: Π ΡΠ»Π΅Π΄ΡΡΡΠΈΡ
ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ
ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡΡ, ΡΡΠΎ ΡΡΠΈ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΡ ΡΠΎΡ
ΡΠ°Π½Π΅Π½Ρ Π² Π²Π°ΡΠΈΡ
Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ°Ρ
.py
. ΠΠ°ΠΏΠΎΠΌΠ½ΠΈΠΌ, ΡΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΠ°ΡΠ°ΡΡ Π²ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ Π² ΡΡΠΎΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅.
Π€ΡΠ½ΠΊΡΠΈΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ
ΠΠ°ΡΠ½Π΅ΠΌ Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ° @timer
. ΠΠ½ Π±ΡΠ΄Π΅Ρ ΠΈΠ·ΠΌΠ΅ΡΡΡΡ Π²ΡΠ΅ΠΌΡ, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π½Π° ΠΊΠΎΠ½ΡΠΎΠ»Ρ. ΠΠΎΡ ΠΊΠΎΠ΄:
ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠΌΠΏΠΎΡΡΠ°
Π²ΡΠ΅ΠΌΡ ΠΈΠΌΠΏΠΎΡΡΠ°
def ΡΠ°ΠΉΠΌΠ΅Ρ (ΡΡΠ½ΠΊΡΠΈΡ):
"" "ΠΡΠ²Π΅ΡΡΠΈ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄Π΅ΠΊΠΎΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ" ""
@ functools.wraps (ΡΡΠ½ΠΊΡΠΈΡ)
def wrapper_timer (* args, ** kwargs):
start_time = Π²ΡΠ΅ΠΌΡ.perf_counter () # 1
Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ = func (* Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, ** kwargs)
end_time = time.perf_counter () # 2
run_time = end_time - start_time # 3
print (f "ΠΠ°Π²Π΅ΡΡΠ΅Π½ΠΎ {func .__ name __! r} Π·Π° {run_time: .4f} secs")
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
Π²Π΅ΡΠ½ΡΡΡ wrapper_timer
@timer
def Waste_some_time (num_times):
Π΄Π»Ρ _ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (num_times):
ΡΡΠΌΠΌΠ° ([i ** 2 Π΄Π»Ρ i Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (10000)])
ΠΡΠΎΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΡΠΎΡ
ΡΠ°Π½ΡΡ Π²ΡΠ΅ΠΌΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΠ΅ΡΠ΅Π΄ Π·Π°ΠΏΡΡΠΊΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ (Π² ΡΡΡΠΎΠΊΠ΅, ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½Π½ΠΎΠΉ # 1
) ΠΈ ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ (Π² # 2
).ΠΡΠ΅ΠΌΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°Π·Π½ΠΈΡΠ΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ ( # 3
). ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ time.perf_counter ()
, ΠΊΠΎΡΠΎΡΠ°Ρ Ρ
ΠΎΡΠΎΡΠΎ ΠΈΠ·ΠΌΠ΅ΡΡΠ΅Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Ρ. ΠΠΎΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΡΠ°ΠΉΠΌΠΈΠ½Π³ΠΎΠ²:
>>> Waste_some_time (1)
ΠΠ°Π²Π΅ΡΡΠ΅Π½ΠΎ "Waste_some_time" Π·Π° 0,0010 ΡΠ΅ΠΊΡΠ½Π΄Ρ
>>> Waste_some_time (999)
ΠΠ°Π²Π΅ΡΡΠ΅Π½ΠΎ "Waste_some_time" Π·Π° 0,3260 ΡΠ΅ΠΊΡΠ½Π΄Ρ
ΠΠ°ΠΏΡΡΠΊΠ°ΠΉ ΡΠ°ΠΌ. ΠΡΠΎΡΠ°Π±Π°ΡΡΠ²Π°ΠΉΡΠ΅ ΠΊΠΎΠ΄ ΠΏΠΎΡΡΡΠΎΡΠ½ΠΎ. Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π²Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΠ΅, ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ.ΠΠΎ Π½Π΅ Π²ΠΎΠ»Π½ΡΠΉΡΠ΅ΡΡ, Π΅ΡΠ»ΠΈ Π²Ρ Π½Π΅ ΠΏΠΎΠ½ΡΠ»ΠΈ. ΠΠ΅ΠΊΠΎΡΠ°ΡΠΎΡΡ - ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΠ΅ ΡΡΡΠ΅ΡΡΠ²Π°. ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π½Π° Π½Π΅ΠΌ ΠΏΠΎΡΠΏΠ°ΡΡ ΠΈΠ»ΠΈ ΡΠ΄Π΅Π»Π°ΠΉΡΠ΅ ΡΠΈΡΡΠ½ΠΎΠΊ ΠΏΠΎΡΠΎΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΠ΅ΠΊΠΎΡΠ°ΡΠΎΡ @timer
ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΈΡ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΡΠΎΡΡΠΎ Ρ
ΠΎΡΠΈΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²Π°ΡΠΈΡ
ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠΎΡΠ½ΡΠ΅ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°, Π²Π°ΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ timeit
Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅. ΠΠ½ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΡΠΊΠ»ΡΡΠ°Π΅Ρ ΡΠ±ΠΎΡΠΊΡ ΠΌΡΡΠΎΡΠ° ΠΈ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠΏΡΡΠΎΠΊ, ΡΡΠΎΠ±Ρ ΡΠ±ΡΠ°ΡΡ ΡΡΠΌ ΠΈΠ· Π±ΡΡΡΡΡΡ
Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ.
ΠΠΎΠ΄ ΠΎΡΠ»Π°Π΄ΠΊΠΈ
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ @debug
Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ°ΡΠ°ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ, Π° ΡΠ°ΠΊΠΆΠ΅ Π΅Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΡΡΠ½ΠΊΡΠΈΡ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ:
ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠΌΠΏΠΎΡΡΠ°
def ΠΎΡΠ»Π°Π΄ΠΊΠ° (ΡΡΠ½ΠΊΡΠΈΡ):
"" "Π Π°ΡΠΏΠ΅ΡΠ°ΡΠ°ΡΡ ΠΏΠΎΠ΄ΠΏΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅" ""
@ functools.wraps (ΡΡΠ½ΠΊΡΠΈΡ)
def wrapper_debug (* args, ** kwargs):
args_repr = [repr (a) Π΄Π»Ρ a Π² Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°Ρ
] # 1
kwargs_repr = [f "{k} = {v! r}" Π΄Π»Ρ k, v Π² kwargs.items ()] # 2
ΠΏΠΎΠ΄ΠΏΠΈΡΡ = "," .join (args_repr + kwargs_repr) # 3
print (f "ΠΡΠ·ΠΎΠ² {func .__ name __} ({ΠΏΠΎΠ΄ΠΏΠΈΡΡ})")
Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ = func (* Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, ** kwargs)
print (f "{func .__ name __! r} Π²Π΅ΡΠ½ΡΠ»Π° {value! r}") # 4
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
Π²Π΅ΡΠ½ΡΡΡ wrapper_debug
ΠΠΎΠ΄ΠΏΠΈΡΡ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΏΡΡΠ΅ΠΌ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΡΡΡΠΎΠΊΠΎΠ²ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΉ Π²ΡΠ΅Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ². Π¦ΠΈΡΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΠΏΠΈΡΠΊΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ ΠΏΡΠΎΠ½ΡΠΌΠ΅ΡΠΎΠ²Π°Π½Π½ΡΠΌ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌ Π² ΠΊΠΎΠ΄Π΅:
- Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½Π½ΡΡ
Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ².ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅
repr ()
, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΊΡΠ°ΡΠΈΠ²ΡΡ ΡΡΡΠΎΠΊΡ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ. - Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠΏΠΈΡΠΎΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π°. Π‘ΡΡΠΎΠΊΠ° f ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ΅Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΊΠ°ΠΊ
ΠΊΠ»ΡΡ = Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
, Π³Π΄Π΅ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ! R
ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎrepr ()
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. - Π‘ΠΏΠΈΡΠΊΠΈ ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½Π½ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡΡΡ Π² ΠΎΠ΄Π½Ρ ΡΡΡΠΎΠΊΡ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ Ρ ΠΊΠ°ΠΆΠ΄ΡΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ, ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π½ΡΠΌ Π·Π°ΠΏΡΡΠΎΠΉ.
- ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅, ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠ² Π΅Π³ΠΎ ΠΊ ΠΏΡΠΎΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠ΅ΠΉ ΠΈ ΠΎΠ΄Π½ΠΈΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π°:
@debug
def make_greeting (ΠΈΠΌΡ, Π²ΠΎΠ·ΡΠ°ΡΡ = ΠΠ΅Ρ):
Π΅ΡΠ»ΠΈ Π²ΠΎΠ·ΡΠ°ΡΡ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ:
return f "ΠΡΠΈΠ²Π΅Ρ, {ΠΈΠΌΡ}!"
Π΅ΡΠ΅:
return f "ΠΠ³ΠΎ, {ΠΈΠΌΡ}! {Π²ΠΎΠ·ΡΠ°ΡΡ}, ΡΡ ΡΠΆΠ΅ Π²ΡΡΠΎΡ!"
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΊΠ°ΠΊ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ @debug
ΠΏΠ΅ΡΠ°ΡΠ°Π΅Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ make_greeting ()
:
>>> make_greeting ("ΠΠ΅Π½Π΄ΠΆΠ°ΠΌΠΈΠ½")
ΠΡΠ·ΠΎΠ² make_greeting ('ΠΠ΅Π½Π΄ΠΆΠ°ΠΌΠΈΠ½')
Β«make_greetingΒ» Π²Π΅ΡΠ½ΡΠ» Β«ΠΡΠΈΠ²Π΅Ρ, ΠΠ΅Π½Π΄ΠΆΠ°ΠΌΠΈΠ½!Β»
Β«ΠΡΠΈΠ²Π΅Ρ, ΠΠ΅Π½Π΄ΠΆΠ°ΠΌΠΈΠ½!Β»
>>> make_greeting ("Π ΠΈΡΠ°ΡΠ΄", Π²ΠΎΠ·ΡΠ°ΡΡ = 112)
ΠΡΠ·ΠΎΠ² make_greeting ('Π ΠΈΡΠ°ΡΠ΄', Π²ΠΎΠ·ΡΠ°ΡΡ = 112)
make_greeting Π²Π΅ΡΠ½ΡΠ»: Β«ΠΠΉ, Π ΠΈΡΠ°ΡΠ΄! Π£ΠΆΠ΅ 112, Π²Ρ ΡΠ°ΡΡΠ΅ΡΠ΅! Β»
Β«ΠΠΉ, Π ΠΈΡΠ°ΡΠ΄! Π£ΠΆΠ΅ 112, Π²Ρ ΡΠ°ΡΡΠ΅ΡΠ΅! Β»
>>> make_greeting (name = "Dorrisile", Π²ΠΎΠ·ΡΠ°ΡΡ = 116)
ΠΡΠ·ΠΎΠ² make_greeting (name = 'Dorrisile', Π²ΠΎΠ·ΡΠ°ΡΡ = 116)
make_greeting Π²Π΅ΡΠ½ΡΠ»: Β«ΠΠΉ, ΠΠΎΡΡΠΈΡΠΈΠ»Ρ! 116 ΡΠΆΠ΅, Π²Ρ ΡΠ°ΡΡΠ΅ΡΠ΅! '
Β«ΠΠΉ, ΠΠΎΡΡΠΈΡΠΈΠ»Ρ! 116 ΡΠΆΠ΅, Π²Ρ ΡΠ°ΡΡΠ΅ΡΠ΅! '
ΠΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ Π½Π΅ ΡΡΠ°Π·Ρ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ @debug
ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠ²ΡΠΎΡΡΠ΅Ρ ΡΠΎ, ΡΡΠΎ Π²Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ.ΠΠ½ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π΅Π½ Π² ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΊ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠΌ ΡΠ΄ΠΎΠ±Π½ΡΠΌ ΡΡΠ½ΠΊΡΠΈΡΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΡΠ°ΠΌΠΈ Π½Π΅ Π²ΡΠ·ΡΠ²Π°Π΅ΡΠ΅ Π½Π°ΠΏΡΡΠΌΡΡ.
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²ΡΡΠΈΡΠ»ΡΠ΅ΡΡΡ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΊ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ΅ e :
ΠΈΠΌΠΏΠΎΡΡ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠΈ
ΠΎΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠ² ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΎΡΠ»Π°Π΄ΠΊΡ
# ΠΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ ΠΊ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ
math.factorial = ΠΎΡΠ»Π°Π΄ΠΊΠ° (math.factorial)
def ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»ΡΠ½ΠΎ_e (ΡΡΠ»ΠΎΠ²ΠΈΡ = 18):
Π²Π΅ΡΠ½ΡΡΡ ΡΡΠΌΠΌΡ (1 / math.factorial (n) Π΄Π»Ρ n Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (ΡΡΠ»ΠΎΠ²ΠΈΡ))
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ ΠΊ ΡΠΆΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ.ΠΠΏΠΏΡΠΎΠΊΡΠΈΠΌΠ°ΡΠΈΡ e ΠΎΡΠ½ΠΎΠ²Π°Π½Π° Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΈ ΡΠ΅ΡΠΈΠΈ:
ΠΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ approbug_e ()
Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ @debug
:
>>> ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»ΡΠ½ΠΎ_Π΅ (5)
ΠΡΠ·ΠΎΠ² ΡΠ°ΠΊΡΠΎΡΠΈΠ°Π»Π° (0)
'ΡΠ°ΠΊΡΠΎΡΠΈΠ°Π»' Π²Π΅ΡΠ½ΡΠ» 1
ΠΡΠ·ΠΎΠ² ΡΠ°ΠΊΡΠΎΡΠΈΠ°Π»Π° (1)
'factorial' Π²Π΅ΡΠ½ΡΠ» 1
ΠΡΠ·ΠΎΠ² ΡΠ°ΠΊΡΠΎΡΠΈΠ°Π»Π° (2)
'ΡΠ°ΠΊΡΠΎΡΠΈΠ°Π»' Π²Π΅ΡΠ½ΡΠ» 2
ΠΡΠ·ΠΎΠ² ΡΠ°ΠΊΡΠΎΡΠΈΠ°Π»Π° (3)
'factorial' Π²Π΅ΡΠ½ΡΠ» 6
ΠΡΠ·ΠΎΠ² ΡΠ°ΠΊΡΠΎΡΠΈΠ°Π»Π° (4)
'factorial' Π²Π΅ΡΠ½ΡΠ» 24
2,708333333333333
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ Ρ ΠΎΡΠΎΡΠ΅Π΅ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΊ ΠΈΡΡΠΈΠ½Π½ΠΎΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ e = 2.718281828, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π²ΡΠ΅Π³ΠΎ 5 ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ².
ΠΠΎΠ΄ Π·Π°ΠΌΠ΅Π΄Π»Π΅Π½ΠΈΡ
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ. ΠΠ°ΡΠ΅ΠΌ Π²Π°ΠΌ Π·Π°ΠΌΠ΅Π΄Π»ΡΡΡ ΡΠ²ΠΎΠΉ ΠΊΠΎΠ΄ Python? ΠΠ΅ΡΠΎΡΡΠ½ΠΎ, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΡ ΡΠΊΠΎΡΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ, ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΡΡ Π»ΠΈ ΡΠ΅ΡΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΠ°. ΠΠ΅ΠΊΠΎΡΠ°ΡΠΎΡ @slow_down
Π±ΡΠ΄Π΅Ρ ΡΠΏΠ°ΡΡ Π·Π° ΠΎΠ΄Π½Ρ ΡΠ΅ΠΊΡΠ½Π΄Ρ Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²ΡΠ·ΠΎΠ²Π΅Ρ Π΄Π΅ΠΊΠΎΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ:
ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠΌΠΏΠΎΡΡΠ°
Π²ΡΠ΅ΠΌΡ ΠΈΠΌΠΏΠΎΡΡΠ°
def slow_down (func):
"" "Π‘ΠΏΠΈΡΠ΅ 1 ΡΠ΅ΠΊΡΠ½Π΄Ρ ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ" ""
@functools.ΠΎΠ±Π΅ΡΡΡΠ²Π°Π½ΠΈΡ (func)
def wrapper_slow_down (* args, ** kwargs):
Π²ΡΠ΅ΠΌΡ ΡΠ½Π° (1)
return func (* args, ** kwargs)
Π²Π΅ΡΠ½ΡΡΡ wrapper_slow_down
@Π·Π°ΠΌΠ΅Π΄Π»ΡΡΡ
ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ ΠΎΡΡΡΠ΅Ρ def (from_number):
Π΅ΡΠ»ΠΈ from_number <1:
print ("ΠΠ·Π»Π΅Ρ!")
Π΅ΡΠ΅:
ΠΏΠ΅ΡΠ°ΡΡ (from_number)
ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ ΠΎΡΡΡΠ΅Ρ (from_number - 1)
Π§ΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΡΡΠ΅ΠΊΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ° @slow_down
, Π²Π°ΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ:
>>> ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ ΠΎΡΡΡΠ΅Ρ (3)
3
2
1
ΠΠ·Π»Π΅Ρ!
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: Π€ΡΠ½ΠΊΡΠΈΡ countdown ()
ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ.ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ, Π²ΡΠ·ΡΠ²Π°ΡΡΠ°Ρ ΡΠ°ΠΌΠ° ΡΠ΅Π±Ρ. Π§ΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΎ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΡ
ΡΡΠ½ΠΊΡΠΈΡΡ
Π² Python, ΡΠΌ. ΠΠ°ΡΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎΠΌΡ ΠΌΡΡΠ»Π΅Π½ΠΈΡ Π² Python.
ΠΠ΅ΠΊΠΎΡΠ°ΡΠΎΡ @slow_down
Π²ΡΠ΅Π³Π΄Π° ΡΠΏΠΈΡ Π½Π° ΠΎΠ΄Π½Ρ ΡΠ΅ΠΊΡΠ½Π΄Ρ. ΠΠΎΠ·ΠΆΠ΅ Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅, ΠΊΠ°ΠΊ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΠΊΠΎΡΠΎΡΡΡΡ, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Ρ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΡ.
Π Π΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ
ΠΠ΅ΠΊΠΎΡΠ°ΡΠΎΡΠ°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΎΠ±ΠΎΡΠ°ΡΠΈΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ½ΠΈ ΡΠΊΡΠ°ΡΠ°ΡΡ. ΠΠ½ΠΈ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΎΡΡΠΎ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, ΠΈ Π²Π΅ΡΠ½ΡΡΡ Π΅Π΅ Π² ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΠΎΠΌ Π²ΠΈΠ΄Π΅.ΠΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠ±Π»Π΅Π³ΡΠ΅Π½Π½ΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ:
ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΉ ΠΈΠΌΠΏΠΎΡΡ
ΠΠΠΠΠΠΠ« = dict ()
ΡΠ΅Π³ΠΈΡΡΡ def (ΡΡΠ½ΠΊΡΠΈΡ):
"" "ΠΠ°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠΉΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ ΠΊΠ°ΠΊ ΠΏΠ»Π°Π³ΠΈΠ½" ""
ΠΠΠΠΠΠΠ« [func .__ name__] = func
ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°
@ΡΠ΅Π³ΠΈΡΡΡ
def say_hello (ΠΈΠΌΡ):
return f "ΠΡΠΈΠ²Π΅Ρ, {ΠΈΠΌΡ}"
@ΡΠ΅Π³ΠΈΡΡΡ
def be_awesome (ΠΈΠΌΡ):
return f "ΠΠΉ, {name}, Π²ΠΌΠ΅ΡΡΠ΅ ΠΌΡ ΡΠ°ΠΌΡΠ΅ ΠΊΡΡΡΡΠ΅!"
def randomly_greet (ΠΈΠΌΡ):
ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ, greeter_func = random.choice (ΡΠΏΠΈΡΠΎΠΊ (PLUGINS.items ()))
print (f "ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ {greeter! r}")
return greeter_func (ΠΈΠΌΡ)
ΠΠ΅ΠΊΠΎΡΠ°ΡΠΎΡ @register
ΠΏΡΠΎΡΡΠΎ ΡΠΎΡ
ΡΠ°Π½ΡΠ΅Ρ ΡΡΡΠ»ΠΊΡ Π½Π° Π΄Π΅ΠΊΠΎΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π² Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΌ dict PLUGINS
.ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΏΠΈΡΠ°ΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ @ functools.wraps
Π² ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΠ΅ ΠΈΡΡ
ΠΎΠ΄Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.
Π€ΡΠ½ΠΊΡΠΈΡ randomly_greet ()
ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π²ΡΠ±ΠΈΡΠ°Π΅Ρ ΠΎΠ΄Π½Ρ ΠΈΠ· Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
ΡΡΠ½ΠΊΡΠΈΠΉ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΡΠ»ΠΎΠ²Π°ΡΡ PLUGINS
ΡΠΆΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΡΠ½ΠΊΡΠΈΠΈ, Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠ°ΠΊ ΠΏΠ»Π°Π³ΠΈΠ½:
>>> ΠΠΠΠΠΠΠ«
{'say_hello': <ΡΡΠ½ΠΊΡΠΈΡ say_hello at 0x7f768eae6730>,
'be_awesome': <ΡΡΠ½ΠΊΡΠΈΡ be_awesome at 0x7f768eae67b8>}
>>> randomly_greet (Β«ΠΠ»ΠΈΡΠ°Β»)
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ say_hello
"ΠΡΠΈΠ²Π΅Ρ, ΠΠ»ΠΈΡΠ°"
ΠΡΠ½ΠΎΠ²Π½ΡΠΌ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎΠΌ ΡΡΠΎΠΉ ΠΏΡΠΎΡΡΠΎΠΉ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΡ
ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎ, ΡΡΠΎ Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠΏΠΈΡΠΎΠΊ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ
ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΡ
ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ.ΠΡΠΎΡ ΡΠΏΠΈΡΠΎΠΊ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΠ»Π°Π³ΠΈΠ½Ρ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΡΡΡΡ ΡΠ°ΠΌΠΈ. ΠΡΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠ»Π°Π³ΠΈΠ½Π°: ΠΏΡΠΎΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ ΠΈ ΡΠΊΡΠ°ΡΡΡΠ΅ Π΅Π΅ @register
.
ΠΡΠ»ΠΈ Π²Ρ Π·Π½Π°ΠΊΠΎΠΌΡ Ρ globals ()
Π² Python, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΡ
ΠΎΠ΄ΡΡΠ²ΠΎ Ρ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ° ΠΏΠ»Π°Π³ΠΈΠ½Π°. globals ()
Π΄Π°Π΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΊΠΎ Π²ΡΠ΅ΠΌ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ Π² ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ, Π²ΠΊΠ»ΡΡΠ°Ρ Π²Π°ΡΠΈ ΠΏΠ»Π°Π³ΠΈΠ½Ρ:
>>> Π³Π»ΠΎΠ±Π°Π»Ρ ()
{..., # ΠΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
, Π½Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΡΡ
Π·Π΄Π΅ΡΡ.'say_hello': <ΡΡΠ½ΠΊΡΠΈΡ say_hello Π² 0x7f768eae6730>,
'be_awesome': <ΡΡΠ½ΠΊΡΠΈΡ be_awesome at 0x7f768eae67b8>,
'randomly_greet': <ΡΡΠ½ΠΊΡΠΈΡ randomly_greet Π² 0x7f768eae6840>}
ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ @register
, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ°Π½Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΡ
ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
, ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ Π²ΡΠ±ΠΈΡΠ°Ρ Π²ΡΡΡΠ½ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ· globals ()
.
ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΠΎΡΠ΅Π» Π² ΡΠΈΡΡΠ΅ΠΌΡ?
ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌ Π±ΠΎΠ»Π΅Π΅ ΠΊΡΠ°ΡΠΈΠ²ΡΠΌ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ°ΠΌ, ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ Π²Π΅Π±-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠΌ.Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Flask Π΄Π»Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΡ / secret
, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π²ΠΈΠ΄Π½Π° ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΠΎΡΠ»ΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΡ ΠΈΠ»ΠΈ ΠΈΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Ρ:
ΠΈΠ· flask import Flask, g, request, redirect, url_for
import functools
app = Flask (__ ΠΈΠΌΡ__)
def login_required (func):
"" "Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΠΎΡΠ΅Π» Π² ΡΠΈΡΡΠ΅ΠΌΡ, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ" ""
@ functools.wraps (ΡΡΠ½ΠΊΡΠΈΡ)
def wrapper_login_required (* args, ** kwargs):
Π΅ΡΠ»ΠΈ g.user - None:
return redirect (url_for ("Π»ΠΎΠ³ΠΈΠ½", next = request.url))
return func (* args, ** kwargs)
Π²Π΅ΡΠ½ΡΡΡ wrapper_login_required
@ app.route ("/ ΡΠ΅ΠΊΡΠ΅Ρ")
@login_required
def secret ():
...
Π₯ΠΎΡΡ ΡΡΠΎ Π΄Π°Π΅Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π² Π²Π°Ρ Π²Π΅Π±-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ, ΠΎΠ±ΡΡΠ½ΠΎ Π²Π°ΠΌ Π½Π΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠΈΡΠ°ΡΡ ΡΠ°ΠΊΠΈΠ΅ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ. ΠΠ»Ρ Flask Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Flask-Login, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΠ²ΡΡΠ°Π΅Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ.
ΠΠ΅ΠΎΠ±ΡΡΠ½ΡΠ΅ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΡ
ΠΠΎ ΡΠΈΡ ΠΏΠΎΡ Π²Ρ Π²ΠΈΠ΄Π΅Π»ΠΈ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΡΠΎΡΡΡΠ΅ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΡ.Π£ Π²Π°Ρ ΡΠΆΠ΅ Π΅ΡΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Ρ ΠΎΡΠΎΡΠ΅Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΡ ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ. ΠΠ΅ ΡΡΠ΅ΡΠ½ΡΠΉΡΠ΅ΡΡ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΠ΅ΡΠ΅ΡΡΠ² Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅, ΡΡΠΎΠ±Ρ ΠΏΠΎΠΏΡΠ°ΠΊΡΠΈΠΊΠΎΠ²Π°ΡΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π²Ρ ΡΠ·Π½Π°Π»ΠΈ.
ΠΠΎ Π²ΡΠΎΡΠΎΠΉ ΡΠ°ΡΡΠΈ ΡΡΠΎΠ³ΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π° ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅:
ΠΠ»Π°ΡΡΡ Π΄Π΅ΠΊΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ
ΠΡΡΡ Π΄Π²Π° ΡΠ°Π·Π½ΡΡ ΡΠΏΠΎΡΠΎΠ±Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠ² Π² ΠΊΠ»Π°ΡΡΠ°Ρ . ΠΠ΅ΡΠ²ΡΠΉ ΠΎΡΠ΅Π½Ρ Π±Π»ΠΈΠ·ΠΎΠΊ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ Π²Ρ ΡΠΆΠ΅ Π΄Π΅Π»Π°Π»ΠΈ Ρ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ: Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΡΠ°ΡΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΊΠ»Π°ΡΡΠ° .ΠΡΠΎ Π±ΡΠ»ΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΏΡΠΈΡΠΈΠ½, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ Π² ΡΠ²ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π±ΡΠ»ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΡ.
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΡ, Π΄Π°ΠΆΠ΅ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ Π² Python, - ΡΡΠΎ @classmethod
, @staticmethod
ΠΈ @property
. ΠΠ΅ΠΊΠΎΡΠ°ΡΠΎΡΡ @classmethod
ΠΈ @staticmethod
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π²Π½ΡΡΡΠΈ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½ ΠΊΠ»Π°ΡΡΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΡΠ²ΡΠ·Π°Π½Ρ Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠΌ ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°. ΠΠ΅ΠΊΠΎΡΠ°ΡΠΎΡ @property
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π³Π΅ΡΡΠ΅ΡΠΎΠ² ΠΈ ΡΠ΅ΡΡΠ΅ΡΠΎΠ² Π΄Π»Ρ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΠΊΠ»Π°ΡΡΠ°.Π Π°Π·Π²Π΅ΡΠ½ΠΈΡΠ΅ ΠΏΠΎΠ»Π΅ Π½ΠΈΠΆΠ΅, ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΈΡ
Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠ².
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΊΠ»Π°ΡΡΠ° Circle
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΡ @classmethod
, @staticmethod
ΠΈ @property
:
ΠΊΠ»Π°ΡΡ ΠΡΡΠ³: def __init __ (self, radius): self._radius = ΡΠ°Π΄ΠΈΡΡ @ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ ΡΠ°Π΄ΠΈΡΡ Π΄Π΅Ρ (self): "" "ΠΠΎΠ»ΡΡΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π΄ΠΈΡΡΠ°" "" Π²Π΅ΡΠ½ΡΡΡ self._radius @ radius.setter ΡΠ°Π΄ΠΈΡΡ Π΄Π΅Ρ (self, value): "" "Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ°Π΄ΠΈΡΡ, ΠΏΡΠΈ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠΈ ΠΏΠΎΠ²ΡΡΠΈΡΡ ΠΎΡΠΈΠ±ΠΊΡ" "" Π΅ΡΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅> = 0: ΡΠ΅Π±Ρ._radius = Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΅ΡΠ΅: ΠΏΠΎΠ΄Π½ΡΡΡ ValueError ("Π Π°Π΄ΠΈΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΠΌ") @ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ ΠΎΠ±Π»Π°ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ (self): "" "ΠΡΡΠΈΡΠ»ΠΈΡΡ ΠΏΠ»ΠΎΡΠ°Π΄Ρ Π²Π½ΡΡΡΠΈ ΠΊΡΡΠ³Π°" "" return self.pi () * self.radius ** 2 def cyl_volume (self, height): "" "ΠΡΡΠΈΡΠ»ΠΈΡΡ ΠΎΠ±ΡΠ΅ΠΌ ΡΠΈΠ»ΠΈΠ½Π΄ΡΠ° Ρ ΠΊΡΡΠ³ΠΎΠΌ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΡ" "" Π²Π΅ΡΠ½ΡΡΡ self.area * height @classmethod def unit_circle (cls): "" "ΠΠ°Π²ΠΎΠ΄ΡΠΊΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠΊΡΡΠΆΠ½ΠΎΡΡΠΈ ΡΠ°Π΄ΠΈΡΡΠΎΠΌ 1" "" Π²ΠΎΠ·Π²ΡΠ°Ρ cls (1) @staticmethod def pi (): "" "ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ Ο, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΡ.ΠΏΠΈ Π²ΠΌΠ΅ΡΡΠΎ "" " Π²ΠΎΠ·Π²ΡΠ°Ρ 3,1415
5
Π ΡΡΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅:
-
.cylinder_volume ()
- ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄. -
.radius
- ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠ΅: Π΄Π»Ρ Π½Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ Π΄ΡΡΠ³ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΠ΄Π½Π°ΠΊΠΎ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ² ΠΌΠ΅ΡΠΎΠ΄ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΠ²Π΅ΡΡΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡΠΈΠ±ΠΎΠΊ, ΡΡΠΎΠ±Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΠΎΠ½ Π½Π΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Π½Π° Π±Π΅ΡΡΠΌΡΡΠ»Π΅Π½Π½ΠΎΠ΅ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ. ΠΠΎΡΡΡΠΏ ΠΊ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΠΊ Π°ΡΡΠΈΠ±ΡΡΠ°ΠΌ Π±Π΅Π· ΡΠΊΠΎΠ±ΠΎΠΊ. -
.area
ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅Π΄Π²ΠΈΠΆΠΈΠΌΡΠΌ ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎΠΌ: Π½Π΅Π΄Π²ΠΈΠΆΠΈΠΌΠΎΡΡΡ Π±Π΅Π·.setter ()
Π½Π΅Π»ΡΠ·Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ. ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ ΠΎΠ½ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΊΠ°ΠΊ ΠΌΠ΅ΡΠΎΠ΄, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΊΠ°ΠΊ Π°ΡΡΠΈΠ±ΡΡ Π±Π΅Π· ΡΠΊΠΎΠ±ΠΎΠΊ. -
.unit_circle ()
- ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ°. ΠΠ½ Π½Π΅ ΠΏΡΠΈΠ²ΡΠ·Π°Π½ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡCircle
. ΠΠ΅ΡΠΎΠ΄Ρ ΠΊΠ»Π°ΡΡΠ° ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΊΠ°ΠΊ ΡΠ°Π±ΡΠΈΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΠΊΠ»Π°ΡΡΠ°. -
.pi ()
- ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄. ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΎΠ½ Π½Π΅ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΊΠ»Π°ΡΡΠ°Circle
, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΡΡΡΡ Π΅Π³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½.Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΊΠ°ΠΊ Π΄Π»Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°, ΡΠ°ΠΊ ΠΈ Π΄Π»Ρ ΠΊΠ»Π°ΡΡΠ°.
ΠΠ»Π°ΡΡ Circle
ΠΌΠΎΠΆΠ΅Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
>>> c = ΠΡΡΠ³ (5) >>> c.radius 5 >>> c.area 78,5398163375 >>> c.radius = 2 >>> c.area 12,566370614 >>> c.area = 100 AttributeError: Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π°ΡΡΠΈΠ±ΡΡ >>> c.cylinder_volume (Π²ΡΡΠΎΡΠ° = 4) 50.265482456 >>> c.radius = -1 ValueError: ΡΠ°Π΄ΠΈΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΠΌ. >>> c = ΠΡΡΠ³.unit_circle () >>> c.radius 1 >>> c.pi () 3,1415
5 >>> Circle.pi () 3,1415
5
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΠΊΠ»Π°ΡΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΡ Π΄Π΅ΠΊΠΎΡΠΈΡΡΠ΅ΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π΅Π³ΠΎ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΡ @debug
ΠΈ @timer
, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ ΡΠ°Π½Π΅Π΅:
ΠΈΠ· Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠ² ΠΈΠΌΠΏΠΎΡΡ ΠΎΡΠ»Π°Π΄ΠΊΠΈ, ΡΠ°ΠΉΠΌΠ΅Ρ
ΠΊΠ»Π°ΡΡ TimeWaster:
@ΠΎΡΠ»Π°ΠΆΠΈΠ²Π°ΡΡ
def __init __ (self, max_num):
self.max_num = max_num
@timer
def Waste_time (self, num_times):
Π΄Π»Ρ _ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (num_times):
sum ([i ** 2 for i in range (self.max_num)])
ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠΎΡ ΠΊΠ»Π°ΡΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΡΡΠ΅ΠΊΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠ²:
>>> >>> tw = TimeWaster (1000)
ΠΡΠ·ΠΎΠ² __init __ (<ΠΎΠ±ΡΠ΅ΠΊΡ time_waster.TimeWaster ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ 0x7efccce03908>, 1000)
'__init__' Π½Π΅ Π²Π΅ΡΠ½ΡΠ» None
>>> tw.waste_time (999)
ΠΠ°Π²Π΅ΡΡΠ΅Π½ΠΎ "Waste_time" Π·Π° 0,3376 ΡΠ΅ΠΊ.
ΠΡΡΠ³ΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠ² Π΄Π»Ρ ΠΊΠ»Π°ΡΡΠΎΠ² - ΡΡΠΎ ΡΠΊΡΠ°ΡΠΈΡΡ Π²Π΅ΡΡ ΠΊΠ»Π°ΡΡ . ΠΡΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΄Π΅Π»Π°Π½ΠΎ Π² Π½ΠΎΠ²ΠΎΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅ dataclasses
Π² Python 3.7:
ΠΈΠ· ΠΊΠ»Π°ΡΡΠΎΠ² Π΄Π°Π½Π½ΡΡ
ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ»Π°ΡΡ Π΄Π°Π½Π½ΡΡ
@dataclass
ΠΊΠ»Π°ΡΡ PlayingCard:
ΡΠ°Π½Π³: str
ΠΊΠΎΡΡΡΠΌ: ΡΠ».
Π‘ΠΌΡΡΠ» ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ΅Π½ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ°ΠΌ ΡΡΠ½ΠΊΡΠΈΠΉ. Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²Ρ ΠΌΠΎΠ³Π»ΠΈ ΠΎΡΠΎΡΠΌΠΈΡΡ ΡΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅, Π½Π°ΠΏΠΈΡΠ°Π² PlayingCard = dataclass (PlayingCard)
.
ΠΠ±ΡΡΠ½ΠΎ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΊΠ°ΠΊ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΠ°Ρ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠ°ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ΅ΡΠ°ΠΊΠ»Π°ΡΡΠΎΠ². Π ΠΎΠ±ΠΎΠΈΡ ΡΠ»ΡΡΠ°ΡΡ Π²Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ.
ΠΠ°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ° ΠΊΠ»Π°ΡΡΠ° ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ
ΠΎΠΆΠ΅ Π½Π° Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ ΠΏΠΎΠ»ΡΡΠΈΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΊΠ»Π°ΡΡ, Π° Π½Π΅ ΡΡΠ½ΠΊΡΠΈΡ. Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, Π²ΡΠ΅ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ Π²ΠΈΠ΄Π΅Π»ΠΈ Π²ΡΡΠ΅, Π±ΡΠ΄ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΊΠ°ΠΊ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΡ ΠΊΠ»Π°ΡΡΠΎΠ². ΠΠΎΠ³Π΄Π° Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΠΈΡ
Π² ΠΊΠ»Π°ΡΡΠ΅ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΈΡ
ΡΡΡΠ΅ΠΊΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ ΡΠ°ΠΊΠΈΠΌ, ΠΊΠ°ΠΊΠΈΠΌ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅. Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ @timer
ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΊ ΠΊΠ»Π°ΡΡΡ:
ΠΎΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ° ΠΈΠΌΠΏΠΎΡΡΠ° Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠ²
@timer
ΠΊΠ»Π°ΡΡ TimeWaster:
def __init __ (self, max_num):
ΡΠ΅Π±Ρ.max_num = max_num
def Waste_time (self, num_times):
Π΄Π»Ρ _ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (num_times):
sum ([i ** 2 Π΄Π»Ρ i Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (self.max_num)])
Π£ΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ° Π½Π΅ ΡΠΊΡΠ°ΡΠ°Π΅Ρ Π΅Π³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Ρ. ΠΠ°ΠΏΠΎΠΌΠ½ΠΈΠΌ, ΡΡΠΎ @timer
- ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΎΡ TimeWaster = timer (TimeWaster)
.
ΠΠ΄Π΅ΡΡ @timer
ΠΈΠ·ΠΌΠ΅ΡΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π²ΡΠ΅ΠΌΡ, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΠΊΠ»Π°ΡΡΠ°:
>>> tw = TimeWaster (1000)
ΠΠ°Π²Π΅ΡΡΠΈΠ» TimeWaster Π·Π° 0.0000 ΡΠ΅ΠΊΡΠ½Π΄
>>> tw.waste_time (999)
>>>
ΠΠΎΠ·ΠΆΠ΅ Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ° ΠΊΠ»Π°ΡΡΠ°, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ @singleton
, ΠΊΠΎΡΠΎΡΡΠΉ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ°.
ΠΠ΅ΠΊΠΎΡΠ°ΡΠΎΡΡ Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠ² ΠΊ ΡΡΠ½ΠΊΡΠΈΠΈ, Π½Π°Π»ΠΎΠΆΠΈΠ² ΠΈΡ Π΄ΡΡΠ³ Π½Π° Π΄ΡΡΠ³Π°:
ΠΈΠ· Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠ² import debug, do_twice
@ΠΎΡΠ»Π°ΠΆΠΈΠ²Π°ΡΡ
@do_twice
def greet (ΠΈΠΌΡ):
print (f "ΠΡΠΈΠ²Π΅Ρ, {ΠΈΠΌΡ}")
ΠΠΎΠ΄ΡΠΌΠ°ΠΉΡΠ΅ ΠΎΠ± ΡΡΠΎΠΌ ΠΊΠ°ΠΊ ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ
Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ°Ρ
Π² ΡΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ½ΠΈ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Ρ.ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, @debug
Π²ΡΠ·ΡΠ²Π°Π΅Ρ @do_twice
, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ·ΡΠ²Π°Π΅Ρ greet ()
ΠΈΠ»ΠΈ debug (do_twice (greet ()))
:
>>> ΠΏΡΠΈΠ²Π΅Ρ ("ΠΠ²Π°")
ΠΡΠ·ΠΎΠ² ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²ΠΈΡ ('ΠΠ²Π°')
ΠΡΠΈΠ²Π΅Ρ ΠΠ²Π°
ΠΡΠΈΠ²Π΅Ρ ΠΠ²Π°
'ΠΏΡΠΈΠ²Π΅Ρ' Π²Π΅ΡΠ½ΡΠ»ΡΡ ΠΠ΅Ρ
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠ°Π·Π½ΠΈΡΡ, Π΅ΡΠ»ΠΈ ΠΌΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ ΠΏΠΎΡΡΠ΄ΠΎΠΊ @debug
ΠΈ @do_twice
:
ΠΈΠ· Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠ² import debug, do_twice
@do_twice
@ΠΎΡΠ»Π°ΠΆΠΈΠ²Π°ΡΡ
def greet (ΠΈΠΌΡ):
print (f "ΠΡΠΈΠ²Π΅Ρ, {ΠΈΠΌΡ}")
Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ @do_twice
Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΈ ΠΊ @debug
:
>>> ΠΏΡΠΈΠ²Π΅Ρ ("ΠΠ²Π°")
ΠΡΠ·ΠΎΠ² ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²ΠΈΡ ('ΠΠ²Π°')
ΠΡΠΈΠ²Π΅Ρ ΠΠ²Π°
'ΠΏΡΠΈΠ²Π΅Ρ' Π²Π΅ΡΠ½ΡΠ»ΡΡ ΠΠ΅Ρ
ΠΡΠ·ΠΎΠ² ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²ΠΈΡ ('ΠΠ²Π°')
ΠΡΠΈΠ²Π΅Ρ ΠΠ²Π°
'ΠΏΡΠΈΠ²Π΅Ρ' Π²Π΅ΡΠ½ΡΠ»ΡΡ ΠΠ΅Ρ
ΠΠ΅ΠΊΠΎΡΠ°ΡΠΎΡΡ Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ
ΠΠ½ΠΎΠ³Π΄Π° Π±ΡΠ²Π°Π΅Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ°ΠΌ .ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, @do_twice
ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΡΠΈΡΠΈΡΡ Π΄ΠΎ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ° @repeat (num_times)
. ΠΠ°ΡΠ΅ΠΌ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ°Π· Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄Π΅ΠΊΠΎΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π²Π°ΠΌ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ ΡΡΠΎΠ³ΠΎ:
@repeat (num_times = 4)
def greet (ΠΈΠΌΡ):
print (f "ΠΡΠΈΠ²Π΅Ρ, {ΠΈΠΌΡ}")
>>> >>> ΠΏΡΠΈΠ²Π΅Ρ ("ΠΠΈΡ")
ΠΡΠΈΠ²Π΅Ρ, ΠΌΠΈΡ
ΠΡΠΈΠ²Π΅Ρ, ΠΌΠΈΡ
ΠΡΠΈΠ²Π΅Ρ, ΠΌΠΈΡ
ΠΡΠΈΠ²Π΅Ρ, ΠΌΠΈΡ
ΠΠΎΠ΄ΡΠΌΠ°ΠΉΡΠ΅, ΠΊΠ°ΠΊ Π²Ρ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΡΡΠΎΠ³ΠΎ Π΄ΠΎΠ±ΠΈΡΡΡΡ.
ΠΠΎ ΡΠΈΡ
ΠΏΠΎΡ ΠΈΠΌΡ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠ΅ ΠΏΠΎΡΠ»Π΅ @
, ΠΎΡΠ½ΠΎΡΠΈΠ»ΠΎΡΡ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΡΠ·Π²Π°Π½ Ρ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ. Π§ΡΠΎΠ±Ρ Π±ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΌ, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ repeat (num_times = 4)
, ΡΡΠΎΠ±Ρ Π²Π΅ΡΠ½ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ. Π ΡΡΠ°ΡΡΡΡ, Π²Ρ ΡΠΆΠ΅ Π·Π½Π°Π΅ΡΠ΅, ΠΊΠ°ΠΊ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ! Π ΠΎΠ±ΡΠ΅ΠΌ, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΡΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ:
def ΠΏΠΎΠ²ΡΠΎΡ (num_times):
def decorator_repeat (ΡΡΠ½ΠΊΡΠΈΡ):
... # Π‘ΠΎΠ·Π΄Π°ΡΡ ΠΈ Π²Π΅ΡΠ½ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ-ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΡ
Π²Π΅ΡΠ½ΡΡΡ decorator_repeat
ΠΠ±ΡΡΠ½ΠΎ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π²Π½ΡΡΡΠ΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ-ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΠΎΠ»Π½ΠΎΠ΅ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π΄Π°ΡΡ Π²Π°ΠΌ Π²Π½ΡΡΡΠ΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π²Π½ΡΡΡΠΈ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ.Π₯ΠΎΡΡ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΌ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠΎΠΌ ΡΠΈΠ»ΡΠΌΠ° Β«ΠΠ°ΡΠ°Π»ΠΎΒ», ΠΌΡ ΡΠ°ΡΠΏΡΡΠ°Π΅ΠΌ Π²ΡΠ΅ ΡΡΠΎ ΡΠ΅ΡΠ΅Π· ΠΌΠ³Π½ΠΎΠ²Π΅Π½ΠΈΠ΅:
def ΠΏΠΎΠ²ΡΠΎΡ (num_times):
def decorator_repeat (ΡΡΠ½ΠΊΡΠΈΡ):
@ functools.wraps (ΡΡΠ½ΠΊΡΠΈΡ)
def wrapper_repeat (* args, ** kwargs):
Π΄Π»Ρ _ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (num_times):
Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ = func (* Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, ** kwargs)
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
Π²Π΅ΡΠ½ΡΡΡ wrapper_repeat
Π²Π΅ΡΠ½ΡΡΡ decorator_repeat
ΠΡΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π±Π΅ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ½ΠΎ, Π½ΠΎ ΠΌΡ ΠΏΠΎΠΌΠ΅ΡΡΠΈΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΡ ΠΆΠ΅ ΡΠ°ΠΌΡΠΉ ΡΠ°Π±Π»ΠΎΠ½ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ ΡΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π·, Π²Π½ΡΡΡΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ def
, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ°.ΠΠ°ΡΠ½Π΅ΠΌ Ρ ΡΠ°ΠΌΠΎΠΉ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ:
def wrapper_repeat (* args, ** kwargs):
Π΄Π»Ρ _ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (num_times):
Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ = func (* Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, ** kwargs)
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ wrapper_repeat ()
ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π΅ΠΊΠΎΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ func ()
. ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ-ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ° ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΈΠΊΠ», ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ·ΡΠ²Π°Π΅Ρ Π΄Π΅ΠΊΠΎΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ num_times
ΡΠ°Π·. ΠΡΠΎ Π½Π΅ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ
ΡΡΠ½ΠΊΡΠΈΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ Π²ΠΈΠ΄Π΅Π»ΠΈ, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π² Π½ΠΈΡ
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ num_times
, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ ΠΈΠ·Π²Π½Π΅.
Π‘Π΄Π΅Π»Π°Π² ΡΠ°Π³ Π²ΠΏΠ΅ΡΠ΅Π΄, Π²Ρ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ°:
def decorator_repeat (func):
@ functools.wraps (ΡΡΠ½ΠΊΡΠΈΡ)
def wrapper_repeat (* args, ** kwargs):
...
Π²Π΅ΡΠ½ΡΡΡ wrapper_repeat
ΠΠΏΡΡΡ ΠΆΠ΅, decorator_repeat ()
Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ ΡΠ°Π½Π΅Π΅, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΎΠ½ Π½Π°Π·Π²Π°Π½ ΠΏΠΎ-Π΄ΡΡΠ³ΠΎΠΌΡ. ΠΡΠΎ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΠΌΡ ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΡΠ΅ΠΌ Π±Π°Π·ΠΎΠ²ΠΎΠ΅ ΠΈΠΌΡ - repeat ()
- Π΄Π»Ρ ΡΠ°ΠΌΠΎΠΉ Π²Π½Π΅ΡΠ½Π΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ΄Π΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
ΠΠ°ΠΊ Π²Ρ ΡΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ, ΡΠ°ΠΌΠ°Ρ Π²Π½Π΅ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΡΠ»ΠΊΡ Π½Π° ΡΡΠ½ΠΊΡΠΈΡ-Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ:
def ΠΏΠΎΠ²ΡΠΎΡ (num_times):
def decorator_repeat (ΡΡΠ½ΠΊΡΠΈΡ):
...
Π²Π΅ΡΠ½ΡΡΡ decorator_repeat
Π ΡΡΠ½ΠΊΡΠΈΠΈ repeat ()
ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ½ΠΊΠΈΡ
Π²Π΅ΡΠ΅ΠΉ:
- ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅
decorator_repeat ()
Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎrepeat ()
Π±ΡΠ΄Π΅Ρ ΡΡΡΠ»Π°ΡΡΡΡ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ ΡΡΠ½ΠΊΡΠΈΠΈ -decorator_repeat
.Π Π°Π½Π΅Π΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈrepeat
Π±Π΅Π· ΡΠΊΠΎΠ±ΠΎΠΊ Π΄Π»Ρ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠΎΠ±Π°Π²Π»Π΅Π½Π½ΡΠ΅ ΠΊΡΡΠ³Π»ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡ ΠΏΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠ², ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΠΈΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ. - ΠΡΠ³ΡΠΌΠ΅Π½Ρ
num_times
, ΠΏΠΎ-Π²ΠΈΠ΄ΠΈΠΌΠΎΠΌΡ, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΡΠ°ΠΌΠΎΠΌrepeat ()
. ΠΠΎ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅num_times
ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π·Π°ΠΊΡΡΡΠΈΠ΅, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅num_times
Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΠΎΠ½ΠΎ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΎ ΠΏΠΎΠ·ΠΆΠ΅wrapper_repeat ()
.
ΠΠΎΠ³Π΄Π° Π²ΡΠ΅ Π½Π°ΡΡΡΠΎΠ΅Π½ΠΎ, ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ Π»ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡΠΌ:
@repeat (num_times = 4)
def greet (ΠΈΠΌΡ):
print (f "ΠΡΠΈΠ²Π΅Ρ, {ΠΈΠΌΡ}")
>>> >>> ΠΏΡΠΈΠ²Π΅Ρ ("ΠΠΈΡ")
ΠΡΠΈΠ²Π΅Ρ, ΠΌΠΈΡ
ΠΡΠΈΠ²Π΅Ρ, ΠΌΠΈΡ
ΠΡΠΈΠ²Π΅Ρ, ΠΌΠΈΡ
ΠΡΠΈΠ²Π΅Ρ, ΠΌΠΈΡ
ΠΠ°ΠΊ ΡΠ°Π· ΡΠΎΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΌΡ ΡΡΡΠ΅ΠΌΠΈΠ»ΠΈΡΡ.
ΠΠ±Π°, ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, Π½ΠΎ Π½Π΅ ΠΎΠ±ΡΠ°ΡΠ°ΠΉΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ Π½Π° Ρ Π»Π΅Π±
Π‘ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΡΡΠΎΡΠΎΠΆΠ½ΠΎΡΡΡΡ Π²Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊ Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ , ΡΠ°ΠΊ ΠΈ Π±Π΅Π· Π½ΠΈΡ . Π‘ΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, Π²Π°ΠΌ ΡΡΠΎ Π½Π΅ Π½ΡΠΆΠ½ΠΎ, Π½ΠΎ ΠΈΠΌΠ΅ΡΡ Π³ΠΈΠ±ΠΊΠΎΡΡΡ ΠΏΡΠΈΡΡΠ½ΠΎ.
ΠΠ°ΠΊ Π²Ρ Π²ΠΈΠ΄Π΅Π»ΠΈ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅, ΠΊΠΎΠ³Π΄Π° Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π²Π½Π΅ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ. ΠΠ°Π΄Π°ΡΠ° ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ Π²Π°Ρ ΠΊΠΎΠ΄ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ», Π±ΡΠ» Π»ΠΈ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ Π²ΡΠ·Π²Π°Π½ Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΈΠ»ΠΈ Π±Π΅Π· Π½ΠΈΡ .
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΡΠΊΡΠ°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Π½Π°ΠΏΡΡΠΌΡΡ, ΡΠΎΠ»ΡΠΊΠΎ Π΅ΡΠ»ΠΈ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π±Π΅Π· Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², ΡΡΠ½ΠΊΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ.ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π²ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ° Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠΊΠ°Π·Π°Π½Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π°. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΡΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° *
, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π²ΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠ²Π»ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ:
def ΠΈΠΌΡ (_func = None, *, kw1 = val1, kw2 = val2, ...): # 1
def decorator_name (func):
... # Π‘ΠΎΠ·Π΄Π°ΡΡ ΠΈ Π²Π΅ΡΠ½ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ-ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΡ.
Π΅ΡΠ»ΠΈ _func ΡΠ°Π²Π½ΠΎ None:
Π²Π΅ΡΠ½ΡΡΡ decorator_name # 2
Π΅ΡΠ΅:
Π²Π΅ΡΠ½ΡΡΡ ΠΈΠΌΡ_Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ° (_func) # 3
ΠΠ΄Π΅ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ _func
Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ ΠΊΠ°ΠΊ ΠΌΠ°ΡΠΊΠ΅Ρ, ΠΎΡΠΌΠ΅ΡΠ°Ρ, Π±ΡΠ» Π»ΠΈ Π²ΡΠ·Π²Π°Π½ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΈΠ»ΠΈ Π½Π΅Ρ:
- ΠΡΠ»ΠΈ
name
Π±ΡΠ» Π²ΡΠ·Π²Π°Π½ Π±Π΅Π· Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², Π΄Π΅ΠΊΠΎΡΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π° ΠΊΠ°ΠΊ_func
.ΠΡΠ»ΠΈ ΠΎΠ½ Π±ΡΠ» Π²ΡΠ·Π²Π°Π½ Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ, ΡΠΎΠ³Π΄Π°_func
Π±ΡΠ΄Π΅ΡNone
, ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° ΠΌΠΎΠ³Π»ΠΈ Π±ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. Π§ΠΈΡΠ»ΠΎ*
Π² ΡΠΏΠΈΡΠΊΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²ΡΠ·Π²Π°Π½Ρ ΠΊΠ°ΠΊ ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½Π½ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ. - Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ Π±ΡΠ» Π²ΡΠ·Π²Π°Π½ Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ. ΠΠ΅ΡΠ½ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ-Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠΈΡΠ°ΡΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ.
- Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ Π±ΡΠ» Π²ΡΠ·Π²Π°Π½ Π±Π΅Π· Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ². ΠΠ΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΠ΅ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ ΠΊ ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠΎΡ ΡΠ°Π±Π»ΠΎΠ½ Π² Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ΅ @repeat
ΠΈΠ· ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΡΠ°Π·Π΄Π΅Π»Π°, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
def repeat (_func = None, *, num_times = 2):
def decorator_repeat (ΡΡΠ½ΠΊΡΠΈΡ):
@ functools.wraps (ΡΡΠ½ΠΊΡΠΈΡ)
def wrapper_repeat (* args, ** kwargs):
Π΄Π»Ρ _ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (num_times):
Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ = func (* Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, ** kwargs)
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
Π²Π΅ΡΠ½ΡΡΡ wrapper_repeat
Π΅ΡΠ»ΠΈ _func ΡΠ°Π²Π½ΠΎ None:
Π²Π΅ΡΠ½ΡΡΡ decorator_repeat
Π΅ΡΠ΅:
Π²Π΅ΡΠ½ΡΡΡ decorator_repeat (_func)
Π‘ΡΠ°Π²Π½ΠΈΡΠ΅ ΡΡΠΎ Ρ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΌ @repeat
.ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ - ΡΡΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ _func
ΠΈ , Π΅ΡΠ»ΠΈ
- , ΠΈΠ½Π°ΡΠ΅
Π² ΠΊΠΎΠ½ΡΠ΅.
Π Π΅ΡΠ΅ΠΏΡ 9.6 ΠΎΡΠ»ΠΈΡΠ½ΠΎΠΉ ΠΏΠΎΠ²Π°ΡΠ΅Π½Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ Python ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ΅Π΅ functools.partial ()
.
ΠΡΠΈ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ, ΡΡΠΎ @repeat
ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΈΠ»ΠΈ Π±Π΅Π· Π½ΠΈΡ
:
@repeat
def say_whee ():
print ("Π£Ρ!")
@repeat (num_times = 3)
def greet (ΠΈΠΌΡ):
print (f "ΠΡΠΈΠ²Π΅Ρ, {ΠΈΠΌΡ}")
ΠΠ°ΠΏΠΎΠΌΠ½ΠΈΠΌ, ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ num_times
- 2:
>>> say_whee ()
ΠΠΉ!
ΠΠΉ!
>>> ΠΏΡΠΈΠ²Π΅Ρ ("ΠΠ΅Π½Π½ΠΈ")
ΠΡΠΈΠ²Π΅Ρ ΠΠ΅Π½Π½ΠΈ
ΠΡΠΈΠ²Π΅Ρ ΠΠ΅Π½Π½ΠΈ
ΠΡΠΈΠ²Π΅Ρ ΠΠ΅Π½Π½ΠΈ
ΠΠ΅ΠΊΠΎΡΠ°ΡΠΎΡΡ Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ
ΠΠ½ΠΎΠ³Π΄Π° Π±ΡΠ²Π°Π΅Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΈΠΌΠ΅ΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ .Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΌΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ΄ΡΡΠΈΡΡΠ²Π°Π΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: Π Π½Π°ΡΠ°Π»Π΅ ΡΡΠΎΠ³ΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π° ΠΌΡ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ ΠΎ ΡΠΈΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΡΡ , Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π·Π°Π΄Π°Π½Π½ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ². ΠΠ΅ΠΊΠΎΡΠ°ΡΠΎΡΡ Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½Ρ, Π³Π΄Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΡ Π·Π°Π΄Π°Π½Π½ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ².
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ»Π°ΡΡΡ Π΄Π»Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ. ΠΠΎ Π² ΠΏΡΠΎΡΡΡΡ ΡΠ»ΡΡΠ°ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡΠΈΡΡ ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ:
ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠΌΠΏΠΎΡΡΠ°
def count_calls (func):
@functools.ΠΎΠ±Π΅ΡΡΡΠ²Π°Π½ΠΈΡ (func)
def wrapper_count_calls (* args, ** kwargs):
wrapper_count_calls.num_calls + = 1
print (f "ΠΡΠ·ΠΎΠ² {wrapper_count_calls.num_calls} ΠΈΠ· {func .__ name __! r}")
return func (* args, ** kwargs)
wrapper_count_calls.num_calls = 0
Π²Π΅ΡΠ½ΡΡΡ wrapper_count_calls
@count_calls
def say_whee ():
print ("Π£Ρ!")
Π‘ΠΎΡΡΠΎΡΠ½ΠΈΠ΅ - ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ - Ρ
ΡΠ°Π½ΠΈΡΡΡ Π² Π°ΡΡΠΈΠ±ΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ .num_calls
ΡΡΠ½ΠΊΡΠΈΠΈ-ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ. ΠΠΎΡ ΡΡΡΠ΅ΠΊΡ ΠΎΡ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ:
>>> say_whee ()
ΠΡΠ·ΠΎΠ² 1 ΠΈΠ· say_whee
ΠΠΉ!
>>> say_whee ()
ΠΡΠ·ΠΎΠ² 2 ΠΈΠ· "say_whee"
ΠΠΉ!
>>> say_whee.num_calls
2
ΠΠ»Π°ΡΡΡ ΠΊΠ°ΠΊ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΡ
Π’ΠΈΠΏΠΈΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ - ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ»Π°ΡΡΡ. Π ΡΡΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅, ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΈΠΌΠ΅Ρ @count_calls
ΠΈΠ· ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΡΠ°Π·Π΄Π΅Π»Π° , ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΊΠ»Π°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ° .
ΠΠ°ΠΏΠΎΠΌΠ½ΠΈΠΌ, ΡΡΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ° @my_decorator
- ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠΊΠ°Π·Π°ΡΡ func = my_decorator (func)
. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π΅ΡΠ»ΠΈ my_decorator
ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠ»Π°ΡΡΠΎΠΌ, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡΠΈΠ½ΡΡΡ func
Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° Π² ΡΠ²ΠΎΠ΅ΠΌ .__init __ ()
ΠΌΠ΅ΡΠΎΠ΄. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΠΌ, ΡΡΠΎΠ±Ρ ΠΎΠ½ ΠΌΠΎΠ³ Π·Π°ΠΌΠ΅Π½ΡΡΡ Π΄Π΅ΠΊΠΎΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ.
Π§ΡΠΎΠ±Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° Π±ΡΠ» Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΠΌ, Π²Ρ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ .__ call __ ()
:
ΠΊΠ»Π°ΡΡ Π‘ΡΠ΅ΡΡΠΈΠΊ:
def __init __ (self, start = 0):
self.count = start
def __call __ (ΡΠ°ΠΌ):
self.count + = 1
print (f "Π’Π΅ΠΊΡΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ: {self.count}")
ΠΠ΅ΡΠΎΠ΄ .__ call __ ()
Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΏΡΡΠ°Π΅ΡΠ΅ΡΡ Π²ΡΠ·Π²Π°ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ°:
>>> counter = Counter ()
>>> ΡΡΠ΅ΡΡΠΈΠΊ ()
Π’Π΅ΠΊΡΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ - 1
>>> ΡΡΠ΅ΡΡΠΈΠΊ ()
Π’Π΅ΠΊΡΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ - 2
>>> ΡΡΠ΅ΡΡΠΈΠΊ.ΡΡΠΈΡΠ°ΡΡ
2
Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΡΠΈΠΏΠΈΡΠ½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠ»Π°ΡΡΠ° Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ .__ init __ ()
ΠΈ .__ call __ ()
:
ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠΌΠΏΠΎΡΡΠ°
ΠΊΠ»Π°ΡΡ CountCalls:
def __init __ (self, func):
functools.update_wrapper (ΡΠ°ΠΌ, ΡΡΠ½ΠΊΡΠΈΡ)
self.func = func
self.num_calls = 0
def __call __ (self, * args, ** kwargs):
self.num_calls + = 1
print (f "ΠΡΠ·ΠΎΠ² {self.num_calls} ΠΈΠ· {self.func .__ name __! r}")
Π²Π΅ΡΠ½ΡΡΡ ΡΠ΅Π±Ρ.func (* Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, ** kwargs)
@CountCalls
def say_whee ():
print ("Π£Ρ!")
ΠΠ΅ΡΠΎΠ΄ .__ init __ ()
Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ
ΡΠ°Π½ΠΈΡΡ ΡΡΡΠ»ΠΊΡ Π½Π° ΡΡΠ½ΠΊΡΠΈΡ ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π»ΡΠ±ΡΡ Π΄ΡΡΠ³ΡΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ. ΠΠΌΠ΅ΡΡΠΎ Π΄Π΅ΠΊΠΎΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π±ΡΠ΄Π΅Ρ Π²ΡΠ·Π²Π°Π½ ΠΌΠ΅ΡΠΎΠ΄ .__ call __ ()
. ΠΠΎ ΡΡΡΠΈ, ΠΎΠ½Π° Π΄Π΅Π»Π°Π΅Ρ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, ΡΡΠΎ ΠΈ ΡΡΠ½ΠΊΡΠΈΡ wrapper ()
Π² Π½Π°ΡΠΈΡ
ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ
ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ
. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ functools.update_wrapper ()
Π²ΠΌΠ΅ΡΡΠΎ @functools.ΠΎΠ±Π΅ΡΡΡΠ²Π°Π½ΠΈΡ
.
ΠΠ΅ΠΊΠΎΡΠ°ΡΠΎΡ @CountCalls
ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅:
>>> say_whee ()
ΠΡΠ·ΠΎΠ² 1 ΠΈΠ· say_whee
ΠΠΉ!
>>> say_whee ()
ΠΡΠ·ΠΎΠ² 2 ΠΈΠ· "say_whee"
ΠΠΉ!
>>> say_whee.num_calls
2
ΠΡΡΠ³ΠΈΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΈΠ· ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠΈΡΠ°
ΠΡ Π΄Π°Π»Π΅ΠΊΠΎ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΠ»ΠΈΡΡ, ΠΏΡΠΈΠ΄ΡΠΌΠ°Π², ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π²ΡΠ΅ Π²ΠΈΠ΄Ρ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠ². ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠ΄Π²Π΅Π΄Π΅ΠΌ ΠΈΡΠΎΠ³ΠΈ ΠΈ Π²Π»ΠΎΠΆΠΈΠΌ Π½Π°ΡΠΈ Π½ΠΎΠ²ΡΠ΅ Π·Π½Π°Π½ΠΈΡ Π² ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΅ΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½Ρ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ ΠΌΠΈΡΠ΅.
ΠΠΎΠ΄ Π·Π°ΠΌΠ΅Π΄Π»Π΅Π½ΠΈΡ, Π΅ΡΠ΅ ΡΠ°Π·
ΠΠ°ΠΊ ΠΎΡΠΌΠ΅ΡΠ°Π»ΠΎΡΡ ΡΠ°Π½Π΅Π΅, Π½Π°ΡΠ° ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ @slow_down
Π²ΡΠ΅Π³Π΄Π° ΡΠΏΠΈΡ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΉ ΡΠ΅ΠΊΡΠ½Π΄Ρ. Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ Π·Π½Π°Π΅ΡΠ΅, ΠΊΠ°ΠΊ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π² Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ΅ΠΌ @slow_down
, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ rate
, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, ΠΊΠ°ΠΊ Π΄ΠΎΠ»Π³ΠΎ ΠΎΠ½ ΡΠΏΠΈΡ:
ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠΌΠΏΠΎΡΡΠ°
Π²ΡΠ΅ΠΌΡ ΠΈΠΌΠΏΠΎΡΡΠ°
def slow_down (_func = None, *, rate = 1):
"" "Π‘ΠΏΠ°ΡΡ Π½Π° Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ΅ΠΊΡΠ½Π΄ ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ" ""
def decorator_slow_down (ΡΡΠ½ΠΊΡΠΈΡ):
@functools.ΠΎΠ±Π΅ΡΡΡΠ²Π°Π½ΠΈΡ (func)
def wrapper_slow_down (* args, ** kwargs):
time.sleep (ΡΠΊΠΎΡΠΎΡΡΡ)
return func (* args, ** kwargs)
Π²Π΅ΡΠ½ΡΡΡ wrapper_slow_down
Π΅ΡΠ»ΠΈ _func ΡΠ°Π²Π½ΠΎ None:
Π²Π΅ΡΠ½ΡΡΡ decorator_slow_down
Π΅ΡΠ΅:
Π²Π΅ΡΠ½ΡΡΡ decorator_slow_down (_func)
ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠ°Π±Π»ΠΎΠ½, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ "ΠΠ±Π°, ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, Π½ΠΎ Π½Π΅ ΠΎΠ±ΡΠ°ΡΠ°ΠΉΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ Π½Π° Ρ
Π»Π΅Π±", ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ @slow_down
Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΠΌ ΠΊΠ°ΠΊ Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ, ΡΠ°ΠΊ ΠΈ Π±Π΅Π· Π½ΠΈΡ
. Π’Π° ΠΆΠ΅ ΡΠ°ΠΌΠ°Ρ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΎΡΡΡΠ΅ΡΠ° ()
, ΡΡΠΎ ΠΈ ΡΠ°Π½ΡΡΠ΅, ΡΠ΅ΠΏΠ΅ΡΡ ΡΠΏΠΈΡ ΠΏΠΎ Π΄Π²Π΅ ΡΠ΅ΠΊΡΠ½Π΄Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΠΎΡΡΡΠ΅ΡΠΎΠΌ:
@slow_down (ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ = 2)
ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ ΠΎΡΡΡΠ΅Ρ def (from_number):
Π΅ΡΠ»ΠΈ from_number <1:
print ("ΠΠ·Π»Π΅Ρ!")
Π΅ΡΠ΅:
ΠΏΠ΅ΡΠ°ΡΡ (from_number)
ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ ΠΎΡΡΡΠ΅Ρ (from_number - 1)
ΠΠ°ΠΊ ΠΈ ΡΠ°Π½ΡΡΠ΅, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΡΡΠ΅ΠΊΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ°:
>>> >>> ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ ΠΎΡΡΡΠ΅Ρ (3)
3
2
1
ΠΠ·Π»Π΅Ρ!
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΈΠ½Π³Π»ΡΠΎΠ½ΠΎΠ²
Π‘ΠΈΠ½Π³Π»ΡΠΎΠ½ - ΡΡΠΎ ΠΊΠ»Π°ΡΡ Ρ ΠΎΠ΄Π½ΠΈΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠΌ.Π Python Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΈΠ½Π³Π»ΡΠΎΠ½ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ None
, True
ΠΈ False
. ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ None
- ΡΡΠΎ ΡΠΈΠ½Π³Π»ΡΠΎΠ½, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π°ΠΌ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ None
Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° is
, ΠΊΠ°ΠΊ Π²Ρ Π²ΠΈΠ΄Π΅Π»ΠΈ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΠ±Π°, ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°:
, Π΅ΡΠ»ΠΈ _func ΡΠ°Π²Π½ΠΎ None:
Π²Π΅ΡΠ½ΡΡΡ decorator_name
Π΅ΡΠ΅:
Π²Π΅ΡΠ½ΡΡΡ ΠΈΠΌΡ_Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ° (_func)
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ is
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ True
ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ²Π»ΡΡΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ ΡΠ΅ΠΌ ΠΆΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠΌ.Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ @singleton
ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠ»Π°ΡΡ Π² ΡΠΈΠ½Π³Π»ΡΠΎΠ½, ΡΠΎΡ
ΡΠ°Π½ΡΡ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° ΠΊΠ°ΠΊ Π°ΡΡΠΈΠ±ΡΡ. ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΠ΅ ΠΏΠΎΠΏΡΡΠΊΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΠΏΡΠΎΡΡΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΠΎΡ
ΡΠ°Π½Π΅Π½Π½ΡΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ:
ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠΌΠΏΠΎΡΡΠ°
def singleton (cls):
"" "Π‘Π΄Π΅Π»Π°ΡΡ ΠΊΠ»Π°ΡΡ Singleton-ΠΊΠ»Π°ΡΡΠΎΠΌ (ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ)" ""
@ functools.wraps (cls)
def wrapper_singleton (* args, ** kwargs):
Π΅ΡΠ»ΠΈ Π½Π΅ wrapper_singleton.instance:
wrapper_singleton.instance = cls (* Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, ** kwargs)
Π²Π΅ΡΠ½ΡΡΡ wrapper_singleton.ΠΏΡΠΈΠΌΠ΅Ρ
wrapper_singleton.instance = ΠΠ΅Ρ
Π²Π΅ΡΠ½ΡΡΡ wrapper_singleton
@singleton
ΠΊΠ»Π°ΡΡ TheOne:
ΠΏΡΠΎΡ
ΠΎΠ΄ΠΈΡΡ
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, ΡΡΠΎΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ ΠΊΠ»Π°ΡΡΠΎΠ² ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠΎΠΌΡ ΠΆΠ΅ ΡΠ°Π±Π»ΠΎΠ½Ρ, ΡΡΠΎ ΠΈ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΡ Π½Π°ΡΠΈΡ
ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ cls
Π²ΠΌΠ΅ΡΡΠΎ func
Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°, ΡΡΠΎΠ±Ρ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΠΎΠ½ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ° ΠΊΠ»Π°ΡΡΠ°.
ΠΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π»ΠΈ:
>>> >>> first_one = TheOne ()
>>> another_one = TheOne ()
>>> id (first_one)
140094218762280
>>> id (Π΄ΡΡΠ³ΠΎΠΉ_ΠΎΠ½)
140094218762280
>>> first_one ΡΡΠΎ Π΄ΡΡΠ³ΠΎΠΉ_one
ΠΡΠ°Π²Π΄Π°
ΠΠ°ΠΆΠ΅ΡΡΡ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠΌ, ΡΡΠΎ first_one
Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΠΌ ΠΆΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠΌ, ΡΡΠΎ ΠΈ another_one
.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: Singleton-ΠΊΠ»Π°ΡΡΡ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π½Π΅ ΡΠ°ΠΊ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² Python, ΠΊΠ°ΠΊ Π² Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ . ΠΡΡΠ΅ΠΊΡ ΡΠΈΠ½Π³Π»ΡΠΎΠ½Π° ΠΎΠ±ΡΡΠ½ΠΎ Π»ΡΡΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π² ΠΌΠΎΠ΄ΡΠ»Π΅.
ΠΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ
ΠΠ΅ΠΊΠΎΡΠ°ΡΠΎΡΡ ΠΌΠΎΠ³ΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ Ρ ΠΎΡΠΎΡΠΈΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π΄Π»Ρ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΡ. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π€ΠΈΠ±ΠΎΠ½Π°ΡΡΠΈ:
ΠΎΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠ² import count_calls
@count_calls
def fibonacci (ΡΠΈΡΠ»ΠΎ):
Π΅ΡΠ»ΠΈ ΡΠΈΡΠ»ΠΎ <2:
Π²Π΅ΡΠ½ΡΡΡ Π½ΠΎΠΌΠ΅Ρ
Π²Π΅ΡΠ½ΡΡΡ ΡΠΈΠ±ΠΎΠ½Π°ΡΡΠΈ (ΡΠΈΡΠ»ΠΎ - 1) + ΡΠΈΠ±ΠΎΠ½Π°ΡΡΠΈ (ΡΠΈΡΠ»ΠΎ - 2)
Π₯ΠΎΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΎΡΡΠ°, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΆΠ°ΡΠ½Π°:
>>> >>> ΡΠΈΠ±ΠΎΠ½Π°ΡΡΠΈ (10)
<ΠΠΎΠ»ΡΡΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΌ Π²ΡΠ²ΠΎΠ΄Π° count_calls>
55
>>> ΡΠΈΠ±ΠΎΠ½Π°ΡΡΠΈ.num_calls
177
Π§ΡΠΎΠ±Ρ Π²ΡΡΠΈΡΠ»ΠΈΡΡ Π΄Π΅ΡΡΡΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π€ΠΈΠ±ΠΎΠ½Π°ΡΡΠΈ, Π²Π°ΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½ΡΠΆΠ½ΠΎ Π²ΡΡΠΈΡΠ»ΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠ΅ ΡΠΈΡΠ»Π° Π€ΠΈΠ±ΠΎΠ½Π°ΡΡΠΈ, Π½ΠΎ ΡΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠ°ΠΊΠΈΠΌ-ΡΠΎ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠ΅Π»ΡΡ
177 Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ. ΠΡΡΡΡΠΎ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Ρ
ΡΠΆΠ΅: ΡΡΠ΅Π±ΡΠ΅ΡΡΡ 21891 ΡΠ°ΡΡΠ΅Ρ Π΄Π»Ρ ΡΠΈΠ±ΠΎΠ½Π°ΡΡΠΈ (20)
ΠΈ ΠΏΠΎΡΡΠΈ 2,7 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π° Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ Π΄Π»Ρ 30-Π³ΠΎ ΡΠΈΡΠ»Π°. ΠΡΠΎ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΠΊΠΎΠ΄ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ ΠΏΠ΅ΡΠ΅ΡΡΠΈΡΡΠ²Π°ΡΡ ΡΠΆΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠ΅ ΡΠΈΡΠ»Π° Π€ΠΈΠ±ΠΎΠ½Π°ΡΡΠΈ.
ΠΠ±ΡΡΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ - ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠΈΡΠ»Π° Π€ΠΈΠ±ΠΎΠ½Π°ΡΡΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΈΠΊΠ»Π° Π΄Π»Ρ
ΠΈ ΡΠ°Π±Π»ΠΈΡΡ ΠΏΠΎΠΈΡΠΊΠ°.ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠΎΡΡΠΎΠ΅ ΠΊΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ ΡΠΎΠΆΠ΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ:
ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠΌΠΏΠΎΡΡΠ°
ΠΈΠ· Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠ² ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ count_calls
def ΠΊΠ΅Ρ (ΡΡΠ½ΠΊΡΠΈΡ):
"" "Π‘ΠΎΡ
ΡΠ°Π½ΡΡΡ ΠΊΠ΅Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ
Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ" ""
@ functools.wraps (ΡΡΠ½ΠΊΡΠΈΡ)
def wrapper_cache (* args, ** kwargs):
cache_key = Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ + ΠΊΠΎΡΡΠ΅ΠΆ (kwargs.items ())
Π΅ΡΠ»ΠΈ cache_key ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ Π² wrapper_cache.cache:
wrapper_cache.cache [cache_key] = func (* Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, ** kwargs)
Π²Π΅ΡΠ½ΡΡΡ wrapper_cache.cache [cache_key]
wrapper_cache.ΠΊΠ΅Ρ = dict ()
Π²Π΅ΡΠ½ΡΡΡ wrapper_cache
@cache
@count_calls
def fibonacci (ΡΠΈΡΠ»ΠΎ):
Π΅ΡΠ»ΠΈ ΡΠΈΡΠ»ΠΎ <2:
Π²Π΅ΡΠ½ΡΡΡ Π½ΠΎΠΌΠ΅Ρ
Π²Π΅ΡΠ½ΡΡΡ ΡΠΈΠ±ΠΎΠ½Π°ΡΡΠΈ (ΡΠΈΡΠ»ΠΎ - 1) + ΡΠΈΠ±ΠΎΠ½Π°ΡΡΠΈ (ΡΠΈΡΠ»ΠΎ - 2)
ΠΡΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΊΠ°ΠΊ ΡΠΏΡΠ°Π²ΠΎΡΠ½Π°Ρ ΡΠ°Π±Π»ΠΈΡΠ°, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ΅ΠΏΠ΅ΡΡ fibonacci ()
Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·:
>>> ΡΠΈΠ±ΠΎΠ½Π°ΡΡΠΈ (10)
ΠΡΠ·ΠΎΠ² 1 ΠΈΠ· 'fibonacci'
...
ΠΠ²ΠΎΠ½ΠΈΡΠ΅ 11 ΠΈΠ· 'fibonacci'
55
>>> ΡΠΈΠ±ΠΎΠ½Π°ΡΡΠΈ (8)
21 Π³ΠΎΠ΄
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΏΡΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ Π²ΡΠ·ΠΎΠ²Π΅ fibonacci (8)
Π½ΠΈΠΊΠ°ΠΊΠΈΡ
Π½ΠΎΠ²ΡΡ
Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ Π½Π΅ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΎΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²ΠΎΡΡΠΌΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π€ΠΈΠ±ΠΎΠ½Π°ΡΡΠΈ ΡΠΆΠ΅ Π±ΡΠ»ΠΎ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΎ Π΄Π»Ρ fibonacci (10)
.
Π ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ ΠΊΡΡ Π½Π°ΠΈΠΌΠ΅Π½Π΅Π΅ Π½Π΅Π΄Π°Π²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΡΡ
(LRU) Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΊΠ°ΠΊ @ functools.lru_cache
.
Π£ ΡΡΠΎΠ³ΠΎ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ° Π±ΠΎΠ»ΡΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ, ΡΠ΅ΠΌ Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π²Ρ Π²ΠΈΠ΄Π΅Π»ΠΈ Π²ΡΡΠ΅. ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ @ functools.lru_cache
Π²ΠΌΠ΅ΡΡΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ° ΠΊΠ΅ΡΠ°:
ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠΌΠΏΠΎΡΡΠ°
@ functools.lru_cache (maxsize = 4)
def fibonacci (ΡΠΈΡΠ»ΠΎ):
print (f "ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΡΠΈΠ±ΠΎΠ½Π°ΡΡΠΈ ({num})")
Π΅ΡΠ»ΠΈ ΡΠΈΡΠ»ΠΎ <2:
Π²Π΅ΡΠ½ΡΡΡ Π½ΠΎΠΌΠ΅Ρ
Π²Π΅ΡΠ½ΡΡΡ ΡΠΈΠ±ΠΎΠ½Π°ΡΡΠΈ (ΡΠΈΡΠ»ΠΎ - 1) + ΡΠΈΠ±ΠΎΠ½Π°ΡΡΠΈ (ΡΠΈΡΠ»ΠΎ - 2)
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ maxsize
ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ
Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΠΊΡΡΠΈΡΡΠ΅ΡΡΡ.ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ - 128, Π½ΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΡ maxsize = None
, ΡΡΠΎΠ±Ρ ΠΊΡΡΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΈΠΌΠ΅ΠΉΡΠ΅ Π² Π²ΠΈΠ΄Ρ, ΡΡΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·Π²Π°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΠΏΠ°ΠΌΡΡΡΡ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΊΡΡΠΈΡΡΠ΅ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠΈΡ
ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ².
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ .cache_info ()
, ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΊΡΡ, ΠΈ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π½Π°ΡΡΡΠΎΠΈΡΡ Π΅Π³ΠΎ. Π Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΠΈΡΠΊΡΡΡΡΠ²Π΅Π½Π½ΠΎ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΠΉ maxsize
, ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΡΡΠ΅ΠΊΡ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΈΠ· ΠΊΠ΅ΡΠ°:
>>> ΡΠΈΠ±ΠΎΠ½Π°ΡΡΠΈ (10)
ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΡΠΈΠ±ΠΎΠ½Π°ΡΡΠΈ (10)
ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΡΠΈΠ±ΠΎΠ½Π°ΡΡΠΈ (9)
ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΡΠΈΠ±ΠΎΠ½Π°ΡΡΠΈ (8)
ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΡΠΈΠ±ΠΎΠ½Π°ΡΡΠΈ (7)
ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΡΠΈΠ±ΠΎΠ½Π°ΡΡΠΈ (6)
ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΡΠΈΠ±ΠΎΠ½Π°ΡΡΠΈ (5)
ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΡΠΈΠ±ΠΎΠ½Π°ΡΡΠΈ (4)
ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΡΠΈΠ±ΠΎΠ½Π°ΡΡΠΈ (3)
ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΡΠΈΠ±ΠΎΠ½Π°ΡΡΠΈ (2)
ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΡΠΈΠ±ΠΎΠ½Π°ΡΡΠΈ (1)
ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΡΠΈΠ±ΠΎΠ½Π°ΡΡΠΈ (0)
55
>>> ΡΠΈΠ±ΠΎΠ½Π°ΡΡΠΈ (8)
21 Π³ΠΎΠ΄
>>> ΡΠΈΠ±ΠΎΠ½Π°ΡΡΠΈ (5)
ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΡΠΈΠ±ΠΎΠ½Π°ΡΡΠΈ (5)
ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΡΠΈΠ±ΠΎΠ½Π°ΡΡΠΈ (4)
ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΡΠΈΠ±ΠΎΠ½Π°ΡΡΠΈ (3)
ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΡΠΈΠ±ΠΎΠ½Π°ΡΡΠΈ (2)
ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΡΠΈΠ±ΠΎΠ½Π°ΡΡΠΈ (1)
ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΡΠΈΠ±ΠΎΠ½Π°ΡΡΠΈ (0)
5
>>> ΡΠΈΠ±ΠΎΠ½Π°ΡΡΠΈ (8)
ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΡΠΈΠ±ΠΎΠ½Π°ΡΡΠΈ (8)
ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΡΠΈΠ±ΠΎΠ½Π°ΡΡΠΈ (7)
ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΡΠΈΠ±ΠΎΠ½Π°ΡΡΠΈ (6)
21 Π³ΠΎΠ΄
>>> ΡΠΈΠ±ΠΎΠ½Π°ΡΡΠΈ (5)
5
>>> ΡΠΈΠ±ΠΎΠ½Π°ΡΡΠΈ. 3")
ΠΎΠ±ΡΠ΅ΠΌ def (ΡΠ°Π΄ΠΈΡΡ, Π²ΡΡΠΎΡΠ°):
Π²Π΅ΡΠ½ΡΡΡ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΡ.3 ":
Π²Π΅ΡΠ½ΡΡΡ math.pi * radius ** 2 * height
ΠΠ΄Π½Π°ΠΊΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΎΠΊ ΡΠΈΠΏΠ°, Π±ΡΠ»ΠΎ Π±Ρ ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΠΈΠ΅ Π΅Π΄ΠΈΠ½ΠΈΡΡ, ΠΊΠ°ΠΊ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ, Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΎΠΉ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΈΠΏΠ°.
ΠΠ΄ΠΈΠ½ΠΈΡΡ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ Π΅ΡΠ΅ Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡΠ½ΡΠΌΠΈ ΠΈ ΡΠ²Π»Π΅ΠΊΠ°ΡΠ΅Π»ΡΠ½ΡΠΌΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ ΡΠ²ΡΠ·Π°Π½Ρ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ Π΅Π΄ΠΈΠ½ΠΈΡΡ. ΠΠ΄Π½Π° ΡΠ°ΠΊΠ°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° - ΠΏΠΈΠ½ΡΡ
. ΠΡΠ»ΠΈ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ ΠΏΠΈΠ½ΡΡ
( ΠΏΠΈΠ½ΡΠ° ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡ ΠΏΠΈΠ½ΡΡ
), Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΌ Π² ΠΊΡΠ±ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π΄ΡΠΉΠΌΡ ΠΈΠ»ΠΈ Π³Π°Π»Π»ΠΎΠ½Ρ:
>>> ΠΈΠΌΠΏΠΎΡΡΠ½Π°Ρ ΠΏΠΈΠ½ΡΠ°
>>> ΡΡΠ΅Π³ = ΠΏΠΈΠ½ΡΠ°.UnitRegistry ()
>>> vol = volume (3, 5) * ureg (volume.unit)
>>> ΡΠΎΠΌ
<ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ (141,3716694115407, 'ΡΠ°Π½ΡΠΈΠΌΠ΅ΡΡ ** 3')>
>>> vol.to ("ΠΊΡΠ±ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π΄ΡΠΉΠΌΡ")
<ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ (8,627028576414954, Π΄ΡΠΉΠΌ ** 3 Π΄ΡΠΉΠΌΠ°)>
>>> vol.to ("Π³Π°Π»Π»ΠΎΠ½Ρ"). m # ΠΠ΅Π»ΠΈΡΠΈΠ½Π°
0,0373464440537444
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ, ΡΡΠΎΠ±Ρ ΠΎΠ½ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π» ΠΏΠΈΠ½ΡΡ
ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ
Π½Π°ΠΏΡΡΠΌΡΡ. Π’Π°ΠΊΠΎΠ΅ ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ
ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΠΏΡΡΠ΅ΠΌ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΡ. Π ΠΏΠΈΠ½ΡΠ΅
Π΅Π΄ΠΈΠ½ΠΈΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π½Π°ΠΉΠ΄Π΅Π½Ρ Π² UnitRegistry
.Π Π΅Π΅ΡΡΡ Ρ
ΡΠ°Π½ΠΈΡΡΡ ΠΊΠ°ΠΊ Π°ΡΡΠΈΠ±ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΡΠΎΠ±Ρ Π½Π΅ Π·Π°Π³ΡΠΎΠΌΠΎΠΆΠ΄Π°ΡΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΠΌΠ΅Π½:
def use_unit (unit):
"" "ΠΠ°ΡΡΠ°Π²ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π²Π΅ΡΠ½ΡΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Ρ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Π΅Π΄ΠΈΠ½ΠΈΡΠ΅ΠΉ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ" ""
use_unit.ureg = pint.UnitRegistry ()
def decorator_use_unit (ΡΡΠ½ΠΊΡΠΈΡ):
@ functools.wraps (ΡΡΠ½ΠΊΡΠΈΡ)
def wrapper_use_unit (* args, ** kwargs):
Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ = func (* Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, ** kwargs)
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ * use_unit.ureg (unit)
Π²Π΅ΡΠ½ΡΡΡ wrapper_use_unit
Π²Π΅ΡΠ½ΡΡΡ decorator_use_unit
@use_unit (Β«ΠΌΠ΅ΡΡΡ Π² ΡΠ΅ΠΊΡΠ½Π΄ΡΒ»)
def average_speed (ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΠ΅, ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ):
ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΠ΅ / ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°
Π‘ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠΌ @use_unit
ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΅Π΄ΠΈΠ½ΠΈΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΡΠΈΠ»ΠΈΠΉ:
>>> bolt = average_speed (100, 9.58)
>>> Π±ΠΎΠ»Ρ
<ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ (10,438413361169102, Β«ΠΌΠ΅ΡΡ Π² ΡΠ΅ΠΊΡΠ½Π΄ΡΒ»)>
>>> bolt.to ("ΠΊΠΌ Π² ΡΠ°Ρ")
<ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ (37,578288100208766, "ΠΊΠΈΠ»ΠΎΠΌΠ΅ΡΡ / ΡΠ°Ρ")>
>>> bolt.to ("ΠΌΠΈΠ»Ρ / Ρ"). m # ΠΠ΅Π»ΠΈΡΠΈΠ½Π°
23.3500656745
ΠΡΠΎΠ²Π΅ΡΠΊΠ° JSON
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ. ΠΠ·Π³Π»ΡΠ½ΠΈΡΠ΅ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΌΠ°ΡΡΡΡΡΠ° Flask:
@ app.route ("/ grade", methods = ["POST"])
def update_grade ():
json_data = request.get_json ()
Π΅ΡΠ»ΠΈ "student_id" ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ Π² json_data:
ΠΏΡΠ΅ΡΠ²Π°ΡΡ (400)
# ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
Π²Π΅ΡΠ½ΡΡΡ "ΡΡΠΏΠ΅Ρ
!"
ΠΠ΄Π΅ΡΡ ΠΌΡ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅ΠΌ, ΡΡΠΎ ΠΊΠ»ΡΡ student_id
ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΡΡΡΡ Π·Π°ΠΏΡΠΎΡΠ°.Π₯ΠΎΡΡ ΡΡΠ° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΎΠ½Π° Π½Π΅ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΡΠ°ΠΌΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ. Π ΡΠΎΠΌΡ ΠΆΠ΅, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΅ΡΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΌΠ°ΡΡΡΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΡ ΠΆΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ. ΠΡΠ°ΠΊ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΎΡΡΠ°Π²ΠΈΠΌ Π΅Π³ΠΎ Π‘Π£Π₯ΠΠ ΠΈ Π°Π±ΡΡΡΠ°Π³ΠΈΡΡΠ΅ΠΌ Π½Π΅Π½ΡΠΆΠ½ΡΡ Π»ΠΎΠ³ΠΈΠΊΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ°. Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ @validate_json
Π²ΡΠΏΠΎΠ»Π½ΠΈΡ ΡΡΡ ΡΠ°Π±ΠΎΡΡ:
ΠΈΠ· ΠΈΠΌΠΏΠΎΡΡΠ° ΠΊΠΎΠ»Π±Ρ Flask, request, abort
import functools
app = Flask (__ ΠΈΠΌΡ__)
def validate_json (* ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡΠ΅_Π°ΡΠ³ΠΈ): # 1
def decorator_validate_json (func):
@functools.ΠΎΠ±Π΅ΡΡΡΠ²Π°Π½ΠΈΡ (func)
def wrapper_validate_json (* args, ** kwargs):
json_object = request.get_json ()
Π΄Π»Ρ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ³ΠΎ_Π°ΡΠ³Π° Π² ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠΌ_Π°ΡΠ³: # 2
Π΅ΡΠ»ΠΈ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡΠΉ_Π°ΡΠ³ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ Π² json_object:
ΠΏΡΠ΅ΡΠ²Π°ΡΡ (400)
return func (* args, ** kwargs)
Π²Π΅ΡΠ½ΡΡΡ wrapper_validate_json
Π²Π΅ΡΠ½ΡΡΡ decorator_validate_json
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΊΠΎΠ΄Π΅ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°, ΡΡΠΎΠ±Ρ ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΡΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΠΊΠΎΠ²ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΊΠ»ΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π΄Π°Π½Π½ΡΡ JSON:
- Π‘ΠΏΠΈΡΠΎΠΊ ΠΊΠ»ΡΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠΈΡΡΡΡΡΠ²ΠΎΠ²Π°ΡΡ Π² JSON, ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΡ.
- Π€ΡΠ½ΠΊΡΠΈΡ-ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ° ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ Π½Π°Π»ΠΈΡΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ° Π² Π΄Π°Π½Π½ΡΡ JSON.
ΠΠ°ΡΠ΅ΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΌΠ°ΡΡΡΡΡΠ° ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΡΡΡΡ Π½Π° ΡΠ²ΠΎΠ΅ΠΉ ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅ - ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΠΎΡΠ΅Π½ΠΎΠΊ - ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ Ρ ΡΠ²Π΅ΡΠ΅Π½Π½ΠΎΡΡΡΡ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ, ΡΡΠΎ Π΄Π°Π½Π½ΡΠ΅ JSON Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½Ρ:
@ app.route ("/ grade", methods = ["POST"])
@validate_json ("student_id")
def update_grade ():
json_data = request.get_json ()
# ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
.
Π²Π΅ΡΠ½ΡΡΡ "ΡΡΠΏΠ΅Ρ
!"
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΡΠΎ Π±ΡΠ»ΠΎ Π½Π°ΡΡΠΎΡΡΠ΅Π΅ ΠΏΡΡΠ΅ΡΠ΅ΡΡΠ²ΠΈΠ΅! ΠΡ Π½Π°ΡΠ°Π»ΠΈ ΡΡΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ Ρ Π±ΠΎΠ»Π΅Π΅ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π²Π½ΡΡΡΠΈ Π΄ΡΡΠ³ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Ρ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Python.ΠΠ°ΡΠ΅ΠΌ Π²Ρ ΡΠ·Π½Π°Π»ΠΈ ΠΎ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ°Ρ ΠΈ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΈΡ ΠΏΠΈΡΠ°ΡΡ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ:
- ΠΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ.
- ΠΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΡΠΊΡΠ°ΡΠ°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ.
- ΠΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ
@ functools.wraps
, ΡΡΠΎΠ±Ρ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠΎΡ ΠΎΠ΄ΠΈΡΡ Π½Π° Π΄Π΅ΠΊΠΎΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ.
ΠΠΎ Π²ΡΠΎΡΠΎΠΉ ΡΠ°ΡΡΠΈ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π° Π²Ρ ΡΠ²ΠΈΠ΄Π΅Π»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΠ΅ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΡ ΠΈ ΡΠ·Π½Π°Π»ΠΈ, ΠΊΠ°ΠΊ:
- ΠΠ΅ΠΊΠΎΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ»Π°ΡΡΡ
- ΠΠ΅ΠΊΠΎΡΠ°ΡΠΎΡΡ Π³Π½Π΅Π·Π΄
- ΠΠΎΠ±Π°Π²ΠΈΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ°ΠΌ
- Π‘ΠΎΡ ΡΠ°Π½ΠΈΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π² Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ°Ρ
- ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ»Π°ΡΡΡ ΠΊΠ°ΠΊ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΡ
ΠΡ Π²ΠΈΠ΄Π΅Π»ΠΈ, ΡΡΠΎ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ° Π²Ρ ΠΎΠ±ΡΡΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ-ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΡ.Π€ΡΠ½ΠΊΡΠΈΡ-ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ * args
ΠΈ ** kwargs
Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π΄Π΅ΠΊΠΎΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅, ΡΡΠΎΠ±Ρ Π²Π°Ρ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π» Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π²Π»ΠΎΠΆΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΡ-ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΡ Π² Π΄ΡΡΠ³ΡΡ ΡΡΠ½ΠΊΡΠΈΡ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΡΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° return
.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ ΠΊΠΎΠ΄ ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π° Π² ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅.
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΠ°
ΠΡΠ»ΠΈ Π²Ρ Π²ΡΠ΅ Π΅ΡΠ΅ ΠΈΡΠ΅ΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅, Π² Π½Π°ΡΠ΅ΠΉ ΠΊΠ½ΠΈΠ³Π΅ Python Tricks Π΅ΡΡΡ ΡΠ°Π·Π΄Π΅Π» ΠΎ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ°Ρ , ΠΊΠ°ΠΊ ΠΈ Π² ΠΠΎΠ²Π°ΡΠ΅Π½Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅ Python ΠΡΠ²ΠΈΠ΄Π° ΠΠΈΠ·Π»ΠΈ ΠΈ ΠΡΠ°ΠΉΠ°Π½Π° Π.ΠΠΆΠΎΠ½Ρ.
ΠΠ»Ρ Π±ΠΎΠ»Π΅Π΅ Π³Π»ΡΠ±ΠΎΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ³ΡΡΠΆΠ΅Π½ΠΈΡ Π² ΠΈΡΡΠΎΡΠΈΡΠ΅ΡΠΊΡΡ Π΄ΠΈΡΠΊΡΡΡΠΈΡ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ Π² Python, ΡΠΌ. PEP 318, Π° ΡΠ°ΠΊΠΆΠ΅ Python Decorator Wiki. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠ² Python. ΠΠΎΠ΄ΡΠ»Ρ decorator
ΠΌΠΎΠΆΠ΅Ρ ΡΠΏΡΠΎΡΡΠΈΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π²Π°ΡΠΈΡ
ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ
Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠ², Π° Π΅Π³ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠ².
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΌΡ ΡΠΎΡΡΠ°Π²ΠΈΠ»ΠΈ Π΄Π»Ρ Π²Π°Ρ Π½Π΅Π±ΠΎΠ»ΡΡΡΡ ΠΈ ΠΌΠΈΠ»ΡΡ ΡΠΏΠ°ΡΠ³Π°Π»ΠΊΡ ΠΏΠΎ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ°ΠΌ Python:
ΠΠ»Π°ΡΡΠΊΠ°ΠΊ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ Π² Python
ΠΠ΅ΠΊΠΎΡΠ°ΡΠΎΡΡ - ΠΎΡΠ΅Π½Ρ ΠΌΠΎΡΠ½ΡΠΉ ΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π² Python, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ»ΠΈ ΠΊΠ»Π°ΡΡΠ°.ΠΠ΅ΠΊΠΎΡΠ°ΡΠΎΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π½Π°ΠΌ ΠΎΠ±Π΅ΡΠ½ΡΡΡ Π΄ΡΡΠ³ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΡΡΠΎΠ±Ρ ΡΠ°ΡΡΠΈΡΠΈΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠ±Π΅ΡΠ½ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, Π±Π΅Π· Π΅Π΅ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ.
ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ ΠΊΠ°ΠΊ ΠΊΠ»Π°ΡΡ, Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠΎΠ² __call__. ΠΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ ΠΊΠ°ΠΊ ΡΡΠ½ΠΊΡΠΈΡ, Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Π΅ΡΠ½ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ ΠΊΠ°ΠΊ ΡΡΠ½ΠΊΡΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ __call__ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ
ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡΠΈΠΊ! Π£ΠΊΡΠ΅ΠΏΠΈΡΠ΅ ΡΠ²ΠΎΠΈ ΠΎΡΠ½ΠΎΠ²Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΡΡΡΠ° Python Programming Foundation ΠΈ ΠΈΠ·ΡΡΠΈΡΠ΅ ΠΎΡΠ½ΠΎΠ²Ρ.
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΡΡΠ΅ΡΡ ΠΊ ΡΠΎΠ±Π΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΡ. Π Π°ΡΡΠΈΡΡΡΠ΅ ΡΠ²ΠΎΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΡΡΡΠ° Python DS . Π ΡΡΠΎΠ±Ρ Π½Π°ΡΠ°ΡΡ ΡΠ²ΠΎΠ΅ ΠΏΡΡΠ΅ΡΠ΅ΡΡΠ²ΠΈΠ΅ ΠΏΠΎ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠΌΡ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ, ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡΠ΅ΡΡ ΠΊ ΠΊΡΡΡΡ ΠΠ°ΡΠΈΠ½Π½ΠΎΠ΅ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ - Π±Π°Π·ΠΎΠ²ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ
Python3
" ) |
ΠΠ΅ΠΊΠΎΡΠ°ΡΠΎΡ ΠΊΠ»Π°ΡΡΠΎΠ² Ρ * args ΠΈ ** kwargs:
Π§ΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ ΠΊΠ»Π°ΡΡΠ° Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ * args ΠΈ ** kwargs, ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ __call__ ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π» ΠΎΠ±Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΌ f unction
Python3
0
|
helloeks, Π²ΡΡ
ΠΎΠ΄:
ΠΠ΅ΠΊΠΎΡΠ°ΡΠΎΡ ΠΊΠ»Π°ΡΡΠ° Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°:
Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π²Π΅ΡΠ½ΡΠ»ΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ
ΠΏΡΠΎΠ±Π»Π΅ΠΌ, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΠΎΡΡΠΎΠΌΡ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ return Ρ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠΌ ΠΊΠ»Π°ΡΡΠ°.
Python3
ΠΊΠ»Π°ΡΡ
SquareDecorator:
def
__init __ (
self
09) ΡΡΠ½ΠΊΡΠΈΡ =
ΡΡΠ½ΠΊΡΠΈΡ
def
__call __ (
self
,
*
args,
*
*
kwargs3)
ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ
=
self
.ΡΡΠ½ΠΊΡΠΈΡ (
*
Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ²,
*
*
ΠΊΠ²Π°ΡΠ³ΠΎΠ²)
Π²ΠΎΠ·Π²ΡΠ°Ρ
ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ
000
9000
def
get_square (n):
print
(
"Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ:"
, n)
return
n
*
n ΠΏΠ΅ΡΠ°ΡΡ
(
"ΠΠ²Π°Π΄ΡΠ°Ρ ΡΠΈΡΠ»Π°:"
, get_square (
195
))
ΠΡΠ²ΠΎΠ΄: Π΄Π°Π½Π½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ: 195
ΠΠ²Π°Π΄ΡΠ°Ρ ΡΠΈΡΠ»Π°: 38025
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠ² ΠΊΠ»Π°ΡΡΠΎΠ² Π΄Π»Ρ ΠΏΠ΅ΡΠ°ΡΠΈ ΠΡΠ΅ΠΌΡ, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ:
Π§ΡΠΎΠ±Ρ Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°ΡΡ Π²ΡΠ΅ΠΌΡ, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ __call__ ΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΡΡΠΎΠ±Ρ ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
Python3
ΠΈΠ·
Π²ΡΠ΅ΠΌΡ
ΠΈΠΌΠΏΠΎΡΡ
Π²ΡΠ΅ΠΌΡ
ΠΊΠ»Π°ΡΡ
Π’Π°ΠΉΠΌΠ΅Ρ:
__init __ (
self
, func):
self
.ΡΡΠ½ΠΊΡΠΈΡ
=
func
def
__call __ (
self
,
*
args,
*
*
9000 9wargs) start_time
=
time ()
ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ
=
self
.function (
*
args,
*
*
kwargs)
9000
end_time
=
time ()
print
(
Β«ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π·Π°Π½ΡΠ»ΠΎ {} ΡΠ΅ΠΊΡΠ½Π΄Β»
.
ΡΠΎΡΠΌΠ°Ρ
(end_time
-
start_time))
Π²ΠΎΠ·Π²ΡΠ°Ρ
ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ
@Timer
some_deffunction
ΠΈΠ·
Π²ΡΠ΅ΠΌΡ
ΠΈΠΌΠΏΠΎΡΡ
ΡΠΎΠ½
ΡΠΏΡΡΠΈΠΉ ΡΠ΅ΠΆΠΈΠΌ (Π·Π°Π΄Π΅ΡΠΆΠΊΠ°)
109
ΠΡΠ²ΠΎΠ΄: ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π·Π°Π½ΡΠ»ΠΎ 3.0031220335 ΡΠ΅ΠΊΡΠ½Π΄
ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΎΡΠΈΠ±ΠΊΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ° ΠΊΠ»Π°ΡΡΠ°:
ΠΡΠΎΡ ΡΠΈΠΏ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ° ΠΊΠ»Π°ΡΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΡΠΎ. ΠΡΠΎΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°Ρ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΡ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΅ΠΉ Ρ
ΡΠ°Π½ΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ.
Python3
ΠΊΠ»Π°ΡΡ
ErrorCheck:
def
__init __ (
9000 9.ΡΡΠ½ΠΊΡΠΈΡ
=
ΡΡΠ½ΠΊΡΠΈΡ
def
__call __ (
self
,
*
params):
Π΅ΡΠ»ΠΈ
Π΅ΡΠ»ΠΈ
isinstance
(i,
str
)
Π΄Π»Ρ
i
Π²
params]):
raise
TypeError (
"ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΡΠΎΠΊΠΎΠΉ !!"
)
Π΅ΡΠ΅
:
Π²ΠΎΠ·Π²ΡΠ°Ρ
self
.ΡΡΠ½ΠΊΡΠΈΡ (
*
params)
@ErrorCheck
def
add_numbers (
*
Π½ΠΎΠΌΠ΅ΡΠΎΠ²):
*
Π½ΠΎΠΌΠ΅ΡΠΎΠ² )
ΠΏΠ΅ΡΠ°ΡΡ
(Π΄ΠΎΠ±Π°Π²ΠΎΡΠ½ΡΠ΅ Π½ΠΎΠΌΠ΅ΡΠ° (
1
,
2
,
3
))
ΠΏΠ΅ΡΠ°ΡΡ
10 10 (Π΄ΠΎΠ±Π°Π²ΠΎΡΠ½ΡΠ΅ Π½ΠΎΠΌΠ΅ΡΠ° (Π΄ΠΎΠ±Π°Π²ΠΎΡΠ½ΡΠ΅ Π½ΠΎΠΌΠ΅ΡΠ°)
'2'
,
3
))
ΠΡΡ
ΠΎΠ΄:
6
TypeError: ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΡΠΎΠΊΠΎΠΉ !!
ΠΠ΅ΠΊΠΎΡΠ°ΡΠΎΡ
ΠΠ°Π΄Π°ΡΠ° ΠΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅, ΡΡΠΎ Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ Π½Π°Π΄ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄ΡΡΠ³ΠΈΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌ ΡΠ²Π΅Π΄ΠΎΠΌΠ»ΡΡΡ ΡΠ²ΠΎΠΈΡ
ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΎ Π²Π°ΠΆΠ½ΡΡ
ΡΠΎΠ±ΡΡΠΈΡΡ
.
ΠΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π±ΡΠ»Π° ΠΎΡΠ½ΠΎΠ²Π°Π½Π° Π½Π° ΠΊΠ»Π°ΡΡΠ΅ Notifier
, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠΌΠ΅Π» Π²ΡΠ΅Π³ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ»Π΅ΠΉ, ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΈ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ send
. ΠΠ΅ΡΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΈ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π² ΡΠΏΠΈΡΠΎΠΊ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΡΡ
ΠΏΠΈΡΠ΅ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Ρ ΡΠ²Π΅Π΄ΠΎΠΌΠΈΡΠ΅Π»Ρ ΡΠ΅ΡΠ΅Π· Π΅Π³ΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ. Π‘ΡΠΎΡΠΎΠ½Π½Π΅Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π²ΡΡΡΡΠΏΠ°ΡΡΠ΅Π΅ Π² ΡΠΎΠ»ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΈ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ-ΡΠ²Π΅Π΄ΠΎΠΌΠΈΡΠ΅Π»Ρ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·, Π° Π·Π°ΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΠ»ΠΎ ΡΡΠΎ-ΡΠΎ Π²Π°ΠΆΠ½ΠΎΠ΅.
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ»Π°ΡΡ ΡΠ²Π΅Π΄ΠΎΠΌΠΈΡΠ΅Π»Ρ Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ ΠΎ Π²Π°ΠΆΠ½ΡΡ
ΡΠΎΠ±ΡΡΠΈΡΡ
Π½Π° Π·Π°ΡΠ°Π½Π΅Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ Π½Π°Π±ΠΎΡ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΡΡ
ΠΏΠΈΡΠ΅ΠΌ.
Π ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ Π²Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΠ΅, ΡΡΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΎΠΆΠΈΠ΄Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅Π³ΠΎ, ΡΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ ΠΏΠΎ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΠ΅. ΠΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ
Ρ
ΠΎΡΠ΅Π»ΠΈ Π±Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΡ SMS-ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°Ρ
. ΠΡΡΠ³ΠΈΠ΅ Ρ
ΠΎΡΠ΅Π»ΠΈ Π±Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ Π² Facebook ΠΈ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΠΆΠ΅, ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Ρ
ΠΎΡΠ΅Π»ΠΈ Π±Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ Slack.
ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠΈΠΏ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡ ΡΠ²Π΅Π΄ΠΎΠΌΠΈΡΠ΅Π»Ρ.
ΠΠ°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎ? ΠΡ ΡΠ°ΡΡΠΈΡΠΈΠ»ΠΈ ΠΊΠ»Π°ΡΡ Notifier
ΠΈ ΠΏΠΎΠΌΠ΅ΡΡΠΈΠ»ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ Π² Π½ΠΎΠ²ΡΠ΅ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΡ.Π’Π΅ΠΏΠ΅ΡΡ ΠΊΠ»ΠΈΠ΅Π½Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΠ» ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π΄Π»Ρ Π²ΡΠ΅Ρ
Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠΈΡ
ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ.
ΠΠΎ ΠΏΠΎΡΠΎΠΌ Π²Π°Ρ ΡΠ΅Π·ΠΎΠ½Π½ΠΎ ΡΠΏΡΠΎΡΠΈΠ»ΠΈ: Β«ΠΠΎΡΠ΅ΠΌΡ Π½Π΅Π»ΡΠ·Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ°Π·Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΈΠΏΠΎΠ² ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ? ΠΡΠ»ΠΈ Π²Π°Ρ Π΄ΠΎΠΌ Π³ΠΎΡΠΈΡ, Π²Ρ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π·Π°Ρ
ΠΎΡΠΈΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΠΎ Π²ΡΠ΅ΠΌ ΠΊΠ°Π½Π°Π»Π°ΠΌ ".
ΠΡ ΠΏΡΡΠ°Π»ΠΈΡΡ ΡΠ΅ΡΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΡΠΎΠ·Π΄Π°Π² ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅. ΠΠ΄Π½Π°ΠΊΠΎ Π±ΡΡΡΡΠΎ ΡΡΠ°Π»ΠΎ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ ΡΠΈΠ»ΡΠ½ΠΎ ΡΠ°Π·Π΄ΡΠ²Π°Π΅Ρ ΠΊΠΎΠ΄, Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ΄ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, Π½ΠΎ ΠΈ ΠΊΠΎΠ΄ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°.
ΠΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΎΡΠ½ΡΠΉ Π²Π·ΡΡΠ² ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠΎΠ².
ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π½Π°ΠΉΡΠΈ Π΄ΡΡΠ³ΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ»Π°ΡΡΡ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ, ΡΡΠΎΠ±Ρ ΠΈΡ
ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ Π½Π΅ ΠΏΠΎΠ±ΠΈΠ»ΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡΠ΄Ρ ΡΠ΅ΠΊΠΎΡΠ΄ ΠΠΈΠ½Π½Π΅ΡΠ°.
Π Π΅ΡΠ΅Π½ΠΈΠ΅ Π Π°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ° - ΡΡΠΎ ΠΏΠ΅ΡΠ²ΠΎΠ΅, ΡΡΠΎ ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΡ Π½Π° ΡΠΌ, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΠ΄Π½Π°ΠΊΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΡΠ΅Π·Π½ΡΡ
Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΎΠ², ΠΎ ΠΊΠΎΡΠΎΡΡΡ
ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΠΌΠ½ΠΈΡΡ.
- ΠΠ°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅. ΠΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π²Π΅ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ Π΄ΡΡΠ³ΠΈΠΌ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΌ ΠΈΠ· Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠ°.
- Π£ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΊΠ»Π°ΡΡ. Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ·ΡΠΊΠΎΠ² Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΊΠ»Π°ΡΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΠΊΠ»Π°ΡΡΠΎΠ².
ΠΠ΄ΠΈΠ½ ΠΈΠ· ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΏΡΠ΅ΠΎΠ΄ΠΎΠ»Π΅ΡΡ ΡΡΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ΅ΡΠ΅ΠΆΠ΅Π½ΠΈΡ - ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Aggregation ΠΈΠ»ΠΈ Composition Aggregation : ΠΎΠ±ΡΠ΅ΠΊΡ A ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ B; B ΠΌΠΎΠΆΠ΅Ρ ΠΆΠΈΡΡ Π±Π΅Π· A.
Π‘ΠΎΡΡΠ°Π² : ΠΎΠ±ΡΠ΅ΠΊΡ A ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² B; A ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΠΆΠΈΠ·Π½Π΅Π½Π½ΡΠΌ ΡΠΈΠΊΠ»ΠΎΠΌ B; Π Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΆΠΈΡΡ Π±Π΅Π· Π.Π²ΠΌΠ΅ΡΡΠΎ ΠΠ°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ . ΠΠ±Π΅ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΠΎΡΡΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ: ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈΠΌΠ΅Π΅Ρ ΡΡΡΠ»ΠΊΡ Π½Π° Π΄ΡΡΠ³ΠΎΠΉ ΠΈ Π΄Π΅Π»Π΅Π³ΠΈΡΡΠ΅Ρ Π΅ΠΌΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ, ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ ΠΏΡΠΈ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ°ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΡΡ ΡΠ°Π±ΠΎΡΡ , Π½Π°ΡΠ»Π΅Π΄ΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΡΠΏΠ΅ΡΠΊΠ»Π°ΡΡΠ°.
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Π° Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π»Π΅Π³ΠΊΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΡΠ²ΡΠ·Π°Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ-ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊ Π΄ΡΡΠ³ΠΈΠΌ, ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ² ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΠ±ΡΠ΅ΠΊΡ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
ΠΊΠ»Π°ΡΡΠΎΠ², ΠΈΠΌΠ΅Ρ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈ Π΄Π΅Π»Π΅Π³ΠΈΡΡΡ ΠΈΠΌ Π²ΡΠ΅ Π²ΠΈΠ΄Ρ ΡΠ°Π±ΠΎΡΡ.ΠΠ³ΡΠ΅Π³Π°ΡΠΈΡ / ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΡ - ΠΊΠ»ΡΡΠ΅Π²ΠΎΠΉ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΠΌΠ½ΠΎΠ³ΠΈΡ
ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π²ΠΊΠ»ΡΡΠ°Ρ Decorator. ΠΠ° ΡΡΠΎΠΉ Π½ΠΎΡΠ΅ Π΄Π°Π²Π°ΠΉΡΠ΅ Π²Π΅ΡΠ½Π΅ΠΌΡΡ ΠΊ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΠ°ΡΡΠ΅ΡΠ½ΠΎΠ².
ΠΠ°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π°Π³ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
Β«WrapperΒ» - Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΠΎΠ΅ ΠΈΠΌΡ Π΄Π»Ρ ΡΠ°Π±Π»ΠΎΠ½Π° Decorator, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠ΅ΡΠΊΠΎ Π²ΡΡΠ°ΠΆΠ°Π΅Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΈΠ΄Π΅Ρ ΡΠ°Π±Π»ΠΎΠ½Π°. ΠΠ±ΠΎΠ»ΠΎΡΠΊΠ° - ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ²ΡΠ·Π°Π½ Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ target . ΠΠ±ΠΎΠ»ΠΎΡΠΊΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΎΡ ΠΆΠ΅ Π½Π°Π±ΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², ΡΡΠΎ ΠΈ ΡΠ΅Π»Ρ, ΠΈ Π΄Π΅Π»Π΅Π³ΠΈΡΡΠ΅Ρ Π΅ΠΉ Π²ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ.ΠΠ΄Π½Π°ΠΊΠΎ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ, ΡΠ΄Π΅Π»Π°Π² ΡΡΠΎ-ΡΠΎ Π΄ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½Π° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π·Π°ΠΏΡΠΎΡ ΡΠ΅Π»ΠΈ.
ΠΠΎΠ³Π΄Π° ΠΏΡΠΎΡΡΠ°Ρ ΠΎΠ±Π΅ΡΡΠΊΠ° ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π½Π°ΡΡΠΎΡΡΠΈΠΌ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠΌ? ΠΠ°ΠΊ Ρ ΡΠΆΠ΅ ΡΠΏΠΎΠΌΠΈΠ½Π°Π», ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ° ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΡΠΎΡ ΠΆΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΡΡΠΎ ΠΈ ΠΎΠ±Π΅ΡΠ½ΡΡΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ. ΠΠΎΡΡΠΎΠΌΡ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΡΡΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½Ρ. ΠΠ°ΡΡΠ°Π²ΡΡΠ΅ ΠΏΠΎΠ»Π΅ ΡΡΡΠ»ΠΊΠΈ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π»ΡΠ±ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π·Π° ΡΡΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π²Π°ΠΌ ΠΏΠΎΠΊΡΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ°ΠΌΠΈ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΠΊ Π½Π΅ΠΌΡ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ
ΠΎΠ±ΠΎΠ»ΠΎΡΠ΅ΠΊ.
Π Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ ΠΎΡΡΠ°Π²ΠΈΠΌ ΠΏΡΠΎΡΡΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ ΠΏΠΎ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΠ΅ Π²Π½ΡΡΡΠΈ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Notifier
, Π½ΠΎ ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΠΌ Π²ΡΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ Π² Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΡ.
ΠΠ΅ΠΊΠΎΡΠ°ΡΠΎΡΠ°ΠΌΠΈ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ.
ΠΠΎΠ΄ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°ΠΊΠ»ΡΡΠΈΡΡ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ Π² Π½Π°Π±ΠΎΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠ΅Π½ΠΈΡΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°. ΠΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π±ΡΠ΄ΡΡ ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Ρ Π² Π²ΠΈΠ΄Π΅ ΡΡΠ΅ΠΊΠ°.
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ Π½Π°Π±ΠΎΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠ² ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ.
ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠΌ Π² ΡΡΠ΅ΠΊΠ΅ Π±ΡΠ΄Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ, Ρ ΠΊΠΎΡΠΎΡΡΠΌ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΊΠ»ΠΈΠ΅Π½Ρ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²ΡΠ΅ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡ ΡΠΎΡ ΠΆΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΡΡΠΎ ΠΈ Π±Π°Π·ΠΎΠ²ΠΎΠ΅ ΡΡΠ΅Π΄ΡΡΠ²ΠΎ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ, ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π½Π΅ Π²Π°ΠΆΠ½ΠΎ, ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π»ΠΈ ΠΎΠ½ Ρ Β«ΡΠΈΡΡΡΠΌΒ» ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ Ρ Π΄Π΅ΠΊΠΎΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ.
ΠΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΡΠΎΡ ΠΆΠ΅ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ ΠΊ Π΄ΡΡΠ³ΠΈΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠΌ, ΡΠ°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ ΡΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ° ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Π΅ΠΉ. ΠΠ»ΠΈΠ΅Π½Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠΊΡΠ°ΡΠΈΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ Π»ΡΠ±ΡΠΌΠΈ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΠΌΠΈ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ°ΠΌΠΈ, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ ΡΠ»Π΅Π΄ΡΡΡ ΡΠΎΠΌΡ ΠΆΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ, ΡΡΠΎ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅.
ΠΠ½Π°Π»ΠΎΠ³ΠΈΡ ΠΈΠ· ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠΈΡΠ° ΠΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΡΡΠ΅ΠΊΡ ΠΎΡ Π½ΠΎΡΠ΅Π½ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠΎΠ² ΠΎΠ΄Π΅ΠΆΠ΄Ρ.
ΠΠΎΡΠ΅Π½ΠΈΠ΅ ΠΎΠ΄Π΅ΠΆΠ΄Ρ - ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠ². ΠΠΎΠ³Π΄Π° ΡΠ΅Π±Π΅ Ρ
ΠΎΠ»ΠΎΠ΄Π½ΠΎ, ΡΡ Π·Π°ΠΊΡΡΡΠ²Π°Π΅ΡΡΡΡ Π² ΡΠ²ΠΈΡΠ΅Ρ. ΠΡΠ»ΠΈ ΡΠΎ ΡΠ²ΠΈΡΠ΅ΡΠΎΠΌ Π²ΡΠ΅ Π΅ΡΠ΅ Ρ
ΠΎΠ»ΠΎΠ΄Π½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π΄Π΅ΡΡ ΠΊΡΡΡΠΊΡ ΡΠ²Π΅ΡΡ
Ρ. ΠΡΠ»ΠΈ ΠΈΠ΄Π΅Ρ Π΄ΠΎΠΆΠ΄Ρ, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π΄Π΅ΡΡ ΠΏΠ»Π°Ρ. ΠΡΠ΅ ΡΡΠΈ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΡ ΠΎΠ΄Π΅ΠΆΠ΄Ρ Β«ΡΠ°ΡΡΠΈΡΡΡΡΒ» Π²Π°ΡΠ΅ Π±Π°Π·ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, Π½ΠΎ Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ ΡΠ°ΡΡΡΡ Π²Π°Ρ, ΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π»Π΅Π³ΠΊΠΎ ΡΠ½ΡΡΡ Π»ΡΠ±ΠΎΠΉ ΠΏΡΠ΅Π΄ΠΌΠ΅Ρ ΠΎΠ΄Π΅ΠΆΠ΄Ρ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ΅Π½.
ΠΡΠ΅Π²Π΄ΠΎΠΊΠΎΠ΄ Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠ°Π±Π»ΠΎΠ½ Decorator ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΆΠΈΠΌΠ°ΡΡ ΠΈ ΡΠΈΡΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΠΈ Π΄Π°Π½Π½ΡΠ΅.
ΠΡΠΈΠΌΠ΅Ρ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠ² ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΠΆΠ°ΡΠΈΡ.
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±Π΅ΡΡΡΠ²Π°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° Π΄Π°Π½Π½ΡΡ
ΠΏΠ°ΡΠΎΠΉ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠ². ΠΠ±Π΅ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΡΠΏΠΎΡΠΎΠ± Π·Π°ΠΏΠΈΡΠΈ ΠΈ ΡΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
Ρ Π΄ΠΈΡΠΊΠ°:
ΠΠ΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΠ΅ΡΠ΅Π΄ Π·Π°ΠΏΠΈΡΡΡ Π΄Π°Π½Π½ΡΡ
Π½Π° Π΄ΠΈΡΠΊ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΡ ΡΠΈΡΡΡΡΡ ΠΈ ΡΠΆΠΈΠΌΠ°ΡΡ ΠΈΡ
.ΠΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠ»Π°ΡΡ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΈ Π·Π°ΡΠΈΡΠ΅Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π² ΡΠ°ΠΉΠ», Π½Π΅ Π·Π½Π°Ρ ΠΎΠ± ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ.
Π‘ΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π΄Π°Π½Π½ΡΠ΅ ΡΡΠΈΡΡΠ²Π°ΡΡΡΡ Ρ Π΄ΠΈΡΠΊΠ° , ΠΎΠ½ΠΈ ΠΏΡΠΎΡ
ΠΎΠ΄ΡΡ ΡΠ΅ΡΠ΅Π· ΡΠ΅ ΠΆΠ΅ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΡΠ²Π°ΡΡ ΠΈ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΡΡΡ ΠΈΡ
.
ΠΠ΅ΠΊΠΎΡΠ°ΡΠΎΡΡ ΠΈ ΠΊΠ»Π°ΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° Π΄Π°Π½Π½ΡΡ
ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΠΈΡ
Π²Π·Π°ΠΈΠΌΠΎΠ·Π°ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΌΠΈ Π² ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΌ ΠΊΠΎΠ΄Π΅.
// ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ
// ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ°ΠΌΠΈ.ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ DataSource
ΠΌΠ΅ΡΠΎΠ΄ writeData (Π΄Π°Π½Π½ΡΠ΅)
ΠΌΠ΅ΡΠΎΠ΄ readData (): Π΄Π°Π½Π½ΡΠ΅
// ΠΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π»Ρ
// ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ. ΠΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΡΡΠΈΡ
// ΠΊΠ»Π°ΡΡΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅.
ΠΊΠ»Π°ΡΡ FileDataSource ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ DataSource - ΡΡΠΎ
ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ FileDataSource (ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°) {...}
ΠΌΠ΅ΡΠΎΠ΄ writeData (data) - ΡΡΠΎ
// ΠΠ°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ Π΄Π°Π½Π½ΡΠ΅ Π² ΡΠ°ΠΉΠ».
ΠΌΠ΅ΡΠΎΠ΄ readData (): Π΄Π°Π½Π½ΡΠ΅
// Π‘ΡΠΈΡΡΠ²Π°Π΅ΠΌ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· ΡΠ°ΠΉΠ»Π°.
// ΠΠ°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ° ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠΎΠΌΡ ΠΆΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ, ΡΡΠΎ ΠΈ
// Π΄ΡΡΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ.ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΡΠ΅Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° -
// ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ Π΄Π»Ρ Π²ΡΠ΅Ρ
ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ
Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠ².
// Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΠ΄Π° ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΊΠ»ΡΡΠ°ΡΡ
// ΠΏΠΎΠ»Π΅ Π΄Π»Ρ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ ΠΎΠ±Π΅ΡΠ½ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π° Π΄Π»Ρ
// ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ Π΅Π³ΠΎ.
ΠΊΠ»Π°ΡΡ DataSourceDecorator ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ DataSource - ΡΡΠΎ
Π·Π°ΡΠΈΡΠ΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ»Π΅ wrappee: DataSource
ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ DataSourceDecorator (ΠΈΡΡΠΎΡΠ½ΠΈΠΊ: DataSource)
wrappee = ΠΈΡΡΠΎΡΠ½ΠΈΠΊ
// ΠΠ°Π·ΠΎΠ²ΡΠΉ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ ΠΏΡΠΎΡΡΠΎ Π΄Π΅Π»Π΅Π³ΠΈΡΡΠ΅Ρ Π²ΡΡ ΡΠ°Π±ΠΎΡΡ
// Π·Π°Π²Π΅ΡΠ½ΡΡΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ.ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π²
// Π±Π΅ΡΠΎΠ½Π½ΡΠ΅ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΡ.
ΠΌΠ΅ΡΠΎΠ΄ writeData (data) - ΡΡΠΎ
wrappee.writeData (Π΄Π°Π½Π½ΡΠ΅)
// ΠΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΡ ΠΌΠΎΠ³ΡΡ Π²ΡΠ·ΡΠ²Π°ΡΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ
// ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π²ΠΌΠ΅ΡΡΠΎ Π²ΡΠ·ΠΎΠ²Π° ΠΎΠ±Π΅ΡΠ½ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
// Π½Π°ΠΏΡΡΠΌΡΡ. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ°.
// ΠΊΠ»Π°ΡΡΡ.
ΠΌΠ΅ΡΠΎΠ΄ readData (): Π΄Π°Π½Π½ΡΠ΅
Π²Π΅ΡΠ½ΡΡΡ wrappee.readData ()
// ΠΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΎΠ±Π΅ΡΠ½ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°,
// Π½ΠΎ ΠΌΠΎΠ³ΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΡΠΎ-ΡΠΎ ΡΠ²ΠΎΠ΅.ΠΠ΅ΠΊΠΎΡΠ°ΡΠΎΡΡ
// ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΡΠ»Π΅
// Π²ΡΠ·ΠΎΠ² ΠΎΠ±Π΅ΡΠ½ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
ΠΊΠ»Π°ΡΡ EncryptionDecorator ΡΠ°ΡΡΠΈΡΡΠ΅Ρ DataSourceDecorator - ΡΡΠΎ
ΠΌΠ΅ΡΠΎΠ΄ writeData (data) - ΡΡΠΎ
// 1. ΠΠ°ΡΠΈΡΡΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅.
// 2. ΠΠ΅ΡΠ΅Π΄Π°Π΅ΠΌ Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π² writeData ΠΎΠ±Π΅ΡΡΠΊΠΈ
// ΠΌΠ΅ΡΠΎΠ΄.
ΠΌΠ΅ΡΠΎΠ΄ readData (): Π΄Π°Π½Π½ΡΠ΅
// 1. ΠΠΎΠ»ΡΡΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· ΠΌΠ΅ΡΠΎΠ΄Π° readData ΠΎΠ±Π΅ΡΡΠΊΠΈ.
// 2. ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π΅Π³ΠΎ ΡΠ°ΡΡΠΈΡΡΠΎΠ²Π°ΡΡ, Π΅ΡΠ»ΠΈ ΠΎΠ½ Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½.
// 3. ΠΠ΅ΡΠ½ΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ.
// ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ±Π΅ΡΠ½ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΡΠ»ΠΎΡΠΌΠΈ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠ².ΠΊΠ»Π°ΡΡ CompressionDecorator ΡΠ°ΡΡΠΈΡΡΠ΅Ρ DataSourceDecorator - ΡΡΠΎ
ΠΌΠ΅ΡΠΎΠ΄ writeData (data) - ΡΡΠΎ
// 1. Π‘ΠΆΠ°ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅.
// 2. ΠΠ΅ΡΠ΅Π΄Π°Π΅ΠΌ ΡΠΆΠ°ΡΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π² writeData ΠΎΠ±Π΅ΡΡΠΊΠΈ
// ΠΌΠ΅ΡΠΎΠ΄.
ΠΌΠ΅ΡΠΎΠ΄ readData (): Π΄Π°Π½Π½ΡΠ΅
// 1. ΠΠΎΠ»ΡΡΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· ΠΌΠ΅ΡΠΎΠ΄Π° readData ΠΎΠ±Π΅ΡΡΠΊΠΈ.
// 2. ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²Π°ΡΡ, Π΅ΡΠ»ΠΈ ΠΎΠ½ ΡΠΆΠ°Ρ.
// 3. ΠΠ΅ΡΠ½ΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ.
// ΠΠ°ΡΠΈΠ°Π½Ρ 1. ΠΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ±ΠΎΡΠΊΠΈ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ°.
ΠΊΠ»Π°ΡΡ Application - ΡΡΠΎ
ΠΌΠ΅ΡΠΎΠ΄ dumbUsageExample () - ΡΡΠΎ
source = new FileDataSource ("somefile.dat ")
source.writeData (salaryRecords)
// Π¦Π΅Π»Π΅Π²ΠΎΠΉ ΡΠ°ΠΉΠ» Π±ΡΠ» Π·Π°ΠΏΠΈΡΠ°Π½ Ρ ΠΏΡΠΎΡΡΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ.
source = new CompressionDecorator (ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄)
source.writeData (salaryRecords)
// Π¦Π΅Π»Π΅Π²ΠΎΠΉ ΡΠ°ΠΉΠ» Π±ΡΠ» Π·Π°ΠΏΠΈΡΠ°Π½ ΡΠΎ ΡΠΆΠ°ΡΡΠΌ
// Π΄Π°Π½Π½ΡΠ΅.
source = new EncryptionDecorator (ΠΈΡΡΠΎΡΠ½ΠΈΠΊ)
// ΠΡΡ
ΠΎΠ΄Π½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΠ΅ΠΏΠ΅ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΠΎ:
// Π¨ΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅> Π‘ΠΆΠ°ΡΠΈΠ΅> FileDataSource
source.writeData (salaryRecords)
// Π€Π°ΠΉΠ» Π±ΡΠ» Π·Π°ΠΏΠΈΡΠ°Π½ ΡΠΆΠ°ΡΡΠΌ ΠΈ
// Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅.// ΠΠ°ΡΠΈΠ°Π½Ρ 2. ΠΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠΉ ΠΊΠΎΠ΄, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΉ Π²Π½Π΅ΡΠ½ΠΈΠΉ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ Π΄Π°Π½Π½ΡΡ
.
// ΠΠ±ΡΠ΅ΠΊΡΡ SalaryManager Π½Π΅ Π·Π½Π°ΡΡ ΠΈ Π½Π΅ Π·Π°Π±ΠΎΡΡΡΡΡ ΠΎ Π΄Π°Π½Π½ΡΡ
// ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ. ΠΠ½ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π°ΡΡΡΠΎΠ΅Π½Π½ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ
// ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΠΏΠΎΠ»ΡΡΠ΅Π½ ΠΈΠ· ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΎΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΊΠ»Π°ΡΡ SalaryManager - ΡΡΠΎ
ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΠΏΠΎΠ»Ρ: DataSource
ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ SalaryManager (ΠΈΡΡΠΎΡΠ½ΠΈΠΊ: DataSource) {...}
ΠΌΠ΅ΡΠΎΠ΄ load () - ΡΡΠΎ
Π²Π΅ΡΠ½ΡΡΡ source.readData ()
ΠΌΠ΅ΡΠΎΠ΄ save () - ΡΡΠΎ
source.writeData (salaryRecords)
// ... ΠΡΡΠ³ΠΈΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ...
// ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ±ΠΈΡΠ°ΡΡ ΡΠ°Π·Π½ΡΠ΅ ΡΡΠ΅ΠΊΠΈ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠ² Π½Π°
// Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΈΠ»ΠΈ ΡΡΠ΅Π΄Ρ.ΠΊΠ»Π°ΡΡ ApplicationConfigurator - ΡΡΠΎ
ΠΌΠ΅ΡΠΎΠ΄ configurationExample () - ΡΡΠΎ
ΠΈΡΡΠΎΡΠ½ΠΈΠΊ = Π½ΠΎΠ²ΡΠΉ FileDataSource ("salary.dat")
Π΅ΡΠ»ΠΈ (enabledEncryption)
source = new EncryptionDecorator (ΠΈΡΡΠΎΡΠ½ΠΈΠΊ)
Π΅ΡΠ»ΠΈ (Π²ΠΊΠ»ΡΡΠ΅Π½ΠΎ ΡΠΆΠ°ΡΠΈΠ΅)
source = new CompressionDecorator (ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄)
logger = Π½ΠΎΠ²ΡΠΉ SalaryManager (ΠΈΡΡΠΎΡΠ½ΠΈΠΊ)
Π·Π°ΡΠΏΠ»Π°ΡΠ° = logger.load ()
// ...
ΠΡΠ²ΠΎΠ΅Π½ΠΈΠ΅ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠ² Π² Python 3. ΠΡ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡΠ΄Ρ Π·Π°Π΄ΡΠΌΡΠ²Π°Π»ΠΈΡΡ, ΠΊΠ°ΠΊ ΡΠΊΡΠ°ΡΠ°Π΅Ρ ΠΏΠΈΡΠΎΠ½β¦ | Π°Π²ΡΠΎΡ: Arian Seyedi
ΠΡΠ»ΠΈ Π²Π°ΠΌ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ ΡΠ΅Π°Π»ΡΠ½ΡΡ
Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π΄Π»Ρ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠ² Π² Python, ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡΡΠ΅ΡΡ Ρ ΡΡΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ Python, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΊΠΈΡ
ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ².ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΠΎΠ΄ΠΈΠ½ ΡΠ΅Π°Π»ΡΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠ²:
. ΠΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΠ°Π±Π΅Π»ΡΠ½ΡΠΌ. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΎΠ½ ΡΠ°ΠΊΠΆΠ΅ Π²Π²ΠΎΠ΄ΠΈΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ»Π°Π±ΡΡ ΡΠ²ΡΠ·Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ ΠΈ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ
Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ . Π― Π»ΡΠ±Π»Ρ ΡΡΠΎ.
ΠΠ΅ΠΊΠΎΡΠ°ΡΠΎΡ ΠΊΠ»Π°ΡΡΠ° - ΡΡΠΎ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΊΡΠ°ΡΠ°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ»Π°ΡΡΠ° Python. ΠΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π² ΡΠ»ΡΡΠ°Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΠΊΡΠ°ΡΠ΅Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠ»Π°ΡΡΠΎΠΌ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ³Π°Π΄Π°ΡΡΡΡ, ΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌΡΠΉ Π²Π°ΠΌΠΈ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΡΡΠ»ΠΊΡ Π½Π° ΠΊΠ»Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ° , Π° Π·Π°ΡΠ΅ΠΌ Π½Π° .
ΠΡΠΈΠΌΠ΅ΡΠΎΠΌ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ° ΠΊΠ»Π°ΡΡΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠΌΠ½ΠΎΠΆΠ°Π΅Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ°. ΠΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π΄ΠΎΠ±ΠΈΡΡΡΡ ΡΡΠΎΠ³ΠΎ - ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΉ, Π½Π°Π·ΠΎΠ²Π΅ΠΌ Π΅Π³ΠΎ time_this, ΡΠ°ΠΊ:
class ImportantStuff (object):
@time_this
def do_stuff_1 (ΡΠ°ΠΌ):
...
@time_this
def do_stuff_2 (ΡΠ°ΠΌ):
...
@time_this
def do_stuff_3 (self):
...
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π²ΡΡΠ΅ΡΠΏΠΎΠΌΡΠ½ΡΡΠΎΠ³ΠΎ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ° ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ Ρ ΠΎΡΡΠ°Π²Π»Ρ ΡΡΠΎ Π½Π° Π²Π°ΡΠ΅ ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΠ΅. ΠΊΠ°ΠΊ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°.
ΠΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±ΠΈΡΡΡΡ Π±ΠΎΠ»ΡΡΠ΅Π³ΠΎ, ΠΏΡΠΎΡΡΠΎ ΡΠΊΡΠ°ΡΠΈΠ² Π²Π΅ΡΡ ΠΊΠ»Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ° ΠΊΠ»Π°ΡΡΠ° :
@time_all_class_methods
class ImportantStuff :
def do_stuff_1 (self):
...
def do_stuff_2 (self):
...
ΠΡΠΎ ΠΈΠ·Π±Π°Π²Π»ΡΠ΅Ρ ΠΎΡ ΡΡΠΎΠΌΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ° ΠΊ ΡΠ΅ΡΠ΅Π· ΠΊΠ°ΠΆΠ΄ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ. ΠΠ΅ΠΊΠΎΡΠ°ΡΠΎΡ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ Π°ΡΡΠΈΠ±ΡΡ, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Π΄ΠΎΡΡΡΠΏ, ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ°, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π΄ΠΎΡΡΠΈΠ³Π°Π΅ΡΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°. ΠΡΠ»ΠΈ true, ΡΠΎ ΠΎΠ½ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΈ ΠΎΡΠΌΠ΅ΡΠ°Π΅Ρ Π²ΡΠ΅ΠΌΡ Π΄ΠΎ ΠΈ ΠΏΠΎΡΠ»Π΅ Π²ΡΠ·ΠΎΠ²Π° ΠΌΠ΅ΡΠΎΠ΄Π°.
Π ΡΡΠ°ΡΡΡΡ, ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠ², Π΅ΡΠ»ΠΈ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ.ΠΠ»Π°ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ, Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅ΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Β« __getattribute__ Β», ΡΡΠΎΠ±Ρ Π²ΡΡΡΠ½ΡΡ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ, ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ Π»ΠΈ Π°ΡΡΠΈΠ±ΡΡ, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Π΄ΠΎΡΡΡΠΏ, Π΄Π΅ΠΊΠΎΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌΡ ΠΊΠ»Π°ΡΡΡ ΠΈΠ»ΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΌΡ. ΠΡΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄ Π½Π΅ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ ΠΊΠ»Π°ΡΡΡ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ°, ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΠ·Π½Π°ΡΠ°ΡΡ, ΡΡΠΎ ΠΎΠ½ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ Π΄Π΅ΠΊΠΎΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌΡ ΠΊΠ»Π°ΡΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π΅Π³ΠΎ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ. ΠΡΠΎ Π²ΡΠ΅.
ΠΠ·Π³Π»ΡΠ½ΠΈΡΠ΅ Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½ΠΈΠΆΠ΅. Π‘Π½Π°ΡΠ°Π»Π° ΡΡΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»ΠΎΠΆΠ½ΡΠΌ, Π½ΠΎ ΡΡΠΎ Π²ΡΠ΅, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ. ΠΠΎΡ ΠΊΠ°ΠΊ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΡΠΎΠ³ΠΎ Π΄ΠΎΠ±ΠΈΡΡΡΡ:
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠ»Π°ΡΡ Wrapper Π½Π° ΡΠ°ΠΌΠΎΠΌ Π²ΡΡΠΎΠΊΠΎΠΌ ΡΡΠΎΠ²Π½Π΅.ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΡ MyClass ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΠΊΠ»Π°ΡΡ , ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠΎΠ΄Π° , Β«ΠΎΠ±Π΅ΡΡΡΠ²Π°ΡΡΠΈΠΉΒ» MyClass. ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ Π²ΡΡ
ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, ΡΠΏΠΎΠΌΡΠ½ΡΡΡΠ΅ Π² ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π»ΡΡΡΠ΅ ΠΏΠΎΠ½ΡΡΡ ΡΡΠΎ:
- Π‘ΡΡΠΎΠΊΠΈ 71β72: ΠΏΠ΅ΡΠΈΠΎΠ΄ ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΡ
MyClass = Wrapper # ΠΠΎΡ ΠΈ Π²ΡΠ΅!
- Π‘ΡΡΠΎΠΊΠΈ 73β76: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° MyClass
instance = MyClass () # Wrapper (MyClass) ()
- Π‘ΡΡΠΎΠΊΠΈ 77β81: ΠΠ΅ΡΠΎΠ΄ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Π²ΡΠ·Π²Π°Π½
ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°.method_x () # Wrapper (MyClass) (MyClass.method_x)
- Π‘ΡΡΠΎΠΊΠΈ 83-87: ΠΡΠ·Π²Π°Π½ ΠΌΠ΅ΡΠΎΠ΄ Π²ΡΠΎΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°
instance.method_x () # Wrapper (MyClass) (MyClass.method_y)
ΠΠΎΡ ΠΏΠΎΡΠ΅ΠΌΡ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΡΠΎΠ±Ρ Π²ΡΡΡΠ½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ __getattribute__ dunder Π΄Π»Ρ Π½Π°ΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ-ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ.
Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅: ΠΊΠ°ΠΊ ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ ΠΊΠ»Π°ΡΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ Π²Π²ΠΎΠ΄ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π΄Π΅ΠΊΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ?
ΠΠ°ΠΊ ΡΠΊΡΠ°ΡΠΈΡΡ ΠΊΠ»Π°ΡΡ Π² Python? - Pencil Programmer
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅: Π ΡΡΠΎΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅ ΠΌΡ Π½Π°ΡΡΠΈΠΌΡΡ ΡΠΊΡΠ°ΡΠ°ΡΡ ΠΊΠ»Π°ΡΡ Π² Python Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ° ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΠΊΠ»Π°ΡΡΠΎΠ².
ΠΠ΅ΠΊΠΎΡΠ°ΡΠΎΡ Π² Python - ΡΡΠΎ Π»ΡΠ±ΠΎΠΉ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ»ΠΈ ΠΊΠ»Π°ΡΡΡ.
ΠΠ½ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ ΡΡΠ°ΡΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°ΠΌΠΈ Python ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΡΠ»ΠΊΡ Π½Π° Π½Π΅Π³ΠΎ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠ»Π°ΡΡ, Ρ Π½Π΅Π³ΠΎ Π΄Π²Π° ΠΌΠ΅ΡΠΎΠ΄Π°: __init__ ΠΈ display
. ΠΠ΅ΡΠΎΠ΄ __init__
ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ name
, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ display
Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΠΈΠΌΡ
:
class Student:
def __init __ (Ρ, ΠΈΠΌΡ):
ΡΠ΅Π±Ρ.name = ΠΈΠΌΡ
def display (self):
print ('Name:', self.name)
Π§ΡΠΎΠ±Ρ ΡΠΊΡΠ°ΡΠΈΡΡ ΡΡΠΎΡ ΠΊΠ»Π°ΡΡ Π² Python, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π»ΠΈΠ±ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊ ΠΊΠ»Π°ΡΡΡ Π½ΠΎΠ²ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ, Π»ΠΈΠ±ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅, Π»ΠΈΠ±ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΈ ΡΠΎ, ΠΈ Π΄ΡΡΠ³ΠΎΠ΅.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π² Python Π΅ΡΡΡ Π΄Π²Π° ΡΠΏΠΎΡΠΎΠ±Π° ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ: Π»ΠΈΠ±ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ° ΡΡΠ½ΠΊΡΠΈΠΉ, Π»ΠΈΠ±ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ° ΠΊΠ»Π°ΡΡΠΎΠ².
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΏΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΡΡΠΈ.
Π£ΠΊΡΠ°ΡΠΈΡΡ ΠΊΠ»Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ° ΡΡΠ½ΠΊΡΠΈΠΉ
Π§ΡΠΎΠ±Ρ ΡΠΊΡΠ°ΡΠΈΡΡ ΠΊΠ»Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΏΡΠΈΠΌΠΈΡΠ΅ ΠΊΠ»Π°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ Π΅Π³ΠΎ ΠΊΠΎΠ΄ ΠΈ Π²Π΅ΡΠ½ΠΈΡΠ΅ ΠΊΠ»Π°ΡΡ Π² ΠΊΠΎΠ½ΡΠ΅.
def mydecorator (ΡΡΡΠ΄Π΅Π½Ρ):
# ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π½ΠΎΠ²ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
def newdisplay (ΡΠ°ΠΌ):
print ('ΠΠΌΡ:', ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΈΠΌΡ)
print ('Π’Π΅ΠΌΠ°: ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅')
# Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π΄ΠΈΡΠΏΠ»Π΅ΠΉ Π½ΠΎΠ²ΡΠΌ Π΄ΠΈΡΠΏΠ»Π΅Π΅ΠΌ
student.display = newdisplay
# Π²Π΅ΡΠ½ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΡΡΠ°ΡΠ΅Π³ΠΎΡΡ
Π²Π΅ΡΠ½ΡΠ²ΡΠΈΠΉΡΡ ΡΡΡΠ΄Π΅Π½Ρ
@mydecorator
ΠΊΠ»Π°ΡΡ Π‘ΡΡΠ΄Π΅Π½Ρ:
def __init __ (Ρ, ΠΈΠΌΡ):
self.name = ΠΈΠΌΡ
def display (self):
print ('ΠΠΌΡ:', ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΈΠΌΡ)
obj = Π‘ΡΡΠ΄Π΅Π½Ρ ('ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ-ΠΊΠ°ΡΠ°Π½Π΄Π°Ρ')
ΠΎΠ±ΡΠ΅ΠΊΡΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ()
'' '
ΠΠΌΡ: ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ ΠΊΠ°ΡΠ°Π½Π΄Π°ΡΠ°
Π’Π΅ΠΌΠ°: ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
'' '
ΠΡΠ»ΠΈ Π±Ρ ΠΌΠ΅ΡΠΎΠ΄ display
Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π» Π² ΠΊΠ»Π°ΡΡΠ΅, newdisplay
Π±ΡΠ» Π±Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π² ΠΊΠ»Π°ΡΡ ΠΊΠ°ΠΊ ΠΌΠ΅ΡΠΎΠ΄ display
.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΊΠ»Π°ΡΡ Π΄ΠΎΡΡΡΠΏΠ½Π° Π² ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ°, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π² ΠΊΠ»Π°ΡΡ Π½ΠΎΠ²ΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ
ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ².
Π£ΠΊΡΠ°ΡΠΈΡΡ ΠΊΠ»Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ° ΠΊΠ»Π°ΡΡΠ°
Π§ΡΠΎΠ±Ρ ΡΠΊΡΠ°ΡΠΈΡΡ ΠΊΠ»Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ° ΠΊΠ»Π°ΡΡΠ°, ΠΏΡΠΈΠΌΠΈΡΠ΅ ΡΡΡΠ»ΠΊΡ Π½Π° ΠΊΠ»Π°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° (Π² ΠΌΠ΅ΡΠΎΠ΄Π΅ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ° __init__
), ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ Π΅Π³ΠΎ ΠΊΠΎΠ΄ Π² ΠΌΠ΅ΡΠΎΠ΄Π΅ __call__ ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ, Π²Π΅ΡΠ½ΠΈΡΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°.
ΠΊΠ»Π°ΡΡ Mydecorator:
# ΠΏΡΠΈΠ½ΡΡΡ ΠΊΠ»Π°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°
def __init __ (Ρ, ΡΡΡΠ΄Π΅Π½Ρ):
self.student = ΡΡΡΠ΄Π΅Π½Ρ
# ΠΏΡΠΈΠ½ΡΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° __init__ ΠΊΠ»Π°ΡΡΠ°
def __call __ (Ρ, ΠΈΠΌΡ):
# ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π½ΠΎΠ²ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
def newdisplay (ΡΠ°ΠΌ):
print ('ΠΠΌΡ:', ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΈΠΌΡ)
print ('Π’Π΅ΠΌΠ°: Python')
# Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π΄ΠΈΡΠΏΠ»Π΅ΠΉ Π½ΠΎΠ²ΡΠΌ Π΄ΠΈΡΠΏΠ»Π΅Π΅ΠΌ
self.
ΠΡΡΠ°Π²ΠΈΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
ΠΡΡΠ°Π²ΠΈΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ