Π Π°Π·Π½ΠΎΠ΅

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ PEP ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ влияСт Π½Π° Python: ΠšΠ»ΡŽΡ‡ ΠΊ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²Ρƒ ΠΊΠΎΠ΄Π°

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Π Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠ° PEP: Python Enhancement Proposal ΠΈ Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

Π’Ρ‹ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π·Π°Π΄ΡƒΠΌΡ‹Π²Π°Π»ΠΈΡΡŒ, Ρ‡Ρ‚ΠΎ Π΄Π²ΠΈΠΆΠ΅Ρ‚ ΡΠ²ΠΎΠ»ΡŽΡ†ΠΈΠ΅ΠΉ Python? Как этот язык программирования умудряСтся ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒΡΡ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈ ΠΌΠΎΡ‰Π½Ρ‹ΠΌ Π½Π° протяТСнии дСсятилСтий? ΠžΡ‚Π²Π΅Ρ‚ кроСтся Π² Ρ‚Ρ€Π΅Ρ… простых Π±ΡƒΠΊΠ²Π°Ρ…: PEP. Но Ρ‡Ρ‚ΠΎ ΠΆΠ΅ Ρ‚Π°ΠΊΠΎΠ΅ PEP Π½Π° самом Π΄Π΅Π»Π΅?

PEP, ΠΈΠ»ΠΈ Python Enhancement Proposal, — это ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π»Π΅ΠΆΠΈΡ‚ Π² основС развития Python. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ сСбС PEP ΠΊΠ°ΠΊ ΡΠ²ΠΎΠ΅ΠΎΠ±Ρ€Π°Π·Π½ΡƒΡŽ «ΠΊΠΎΠ½ΡΡ‚ΠΈΡ‚ΡƒΡ†ΠΈΡŽ» ΠΌΠΈΡ€Π° Python, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΡƒΡŽ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΈΠ³Ρ€Ρ‹ ΠΈ Π·Π°Π΄Π°ΡŽΡ‰ΡƒΡŽ Π²Π΅ΠΊΡ‚ΠΎΡ€ развития. Но Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΊΠΎΠΏΠ½Π΅ΠΌ Π³Π»ΡƒΠ±ΠΆΠ΅ ΠΈ разбСрСмся, Ρ‡Ρ‚ΠΎ ΠΆΠ΅ Ρ‚Π°ΠΊΠΎΠ΅ PEP Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅.

ПЭП — это Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ описываСт Π½ΠΎΠ²ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈΠ»ΠΈ процСсс для Python. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ: ΠΎΡ‚ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² синтаксисС Π΄ΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±Π½Ρ‹Ρ… Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ. Но Π½Π΅ Π΄ΡƒΠΌΠ°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ PEP — это просто сухой тСхничСский Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚. О Π½Π΅Ρ‚! Π­Ρ‚ΠΎ настоящСС ΠΏΠΎΠ»Π΅ Π±ΠΈΡ‚Π²Ρ‹ ΠΈΠ΄Π΅ΠΉ, Π³Π΄Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΡΡ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π·Π° Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅ языка.

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ PEP ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Ρ‡Π΅Ρ€Π΅Π· ТСсткий процСсс рСцСнзирования ΠΈ обсуТдСния. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ сСбС это ΠΊΠ°ΠΊ своСобразный «Π΅ΡΡ‚Π΅ΡΡ‚Π²Π΅Π½Π½Ρ‹ΠΉ ΠΎΡ‚Π±ΠΎΡ€» Π² ΠΌΠΈΡ€Π΅ программирования. Π’Ρ‹ΠΆΠΈΠ²Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ самыС ΡΠΈΠ»ΡŒΠ½Ρ‹Π΅ ΠΈ Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΈΠ΄Π΅ΠΈ. Но ΠΊΠ°ΠΊ ΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ этот процСсс Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅?

Анатомия PEP: ΠΎΡ‚ ΠΈΠ΄Π΅ΠΈ Π΄ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

ΠŸΡ€ΠΎΡ†Π΅ΡΡ создания PEP начинаСтся с ΠΈΠ΄Π΅ΠΈ. ΠšΡ‚ΠΎ-Ρ‚ΠΎ ΠΈΠ· сообщСства Python (Π° ΠΌΠΎΠΆΠ΅Ρ‚, ΠΈ Π²Ρ‹ сами) Π·Π°ΠΌΠ΅Ρ‡Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΈΠ»ΠΈ Π²ΠΈΠ΄ΠΈΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ. Π§Ρ‚ΠΎ дальшС? НачинаСтся настоящСС ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅!

Π‘Π½Π°Ρ‡Π°Π»Π° Π°Π²Ρ‚ΠΎΡ€ ΠΈΠ΄Π΅ΠΈ ΠΏΠΈΡˆΠ΅Ρ‚ Ρ‡Π΅Ρ€Π½ΠΎΠ²ΠΈΠΊ PEP. Π­Ρ‚ΠΎ Π½Π΅ просто набросок Π½Π° салфСткС — это Π΄Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΈ Π΅Π³ΠΎ обоснованиС. Π—Π²ΡƒΡ‡ΠΈΡ‚ просто? НС Ρ‚ΡƒΡ‚-Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ! НаписаниС качСствСнного PEP — это настоящСС искусство, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰Π΅Π΅ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ³ΠΎ понимания Python ΠΈ умСния Ρ‡Π΅Ρ‚ΠΊΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ°Ρ‚ΡŒ свои мысли.

ПослС создания Ρ‡Π΅Ρ€Π½ΠΎΠ²ΠΈΠΊΠ° начинаСтся самоС интСрСсноС — обсуТдСниС. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ сСбС горячиС Π΄Π΅Π±Π°Ρ‚Ρ‹ Π² римском сСнатС, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ вмСсто Ρ‚ΠΎΠ³ — Ρ„ΡƒΡ‚Π±ΠΎΠ»ΠΊΠΈ с Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏΠ°ΠΌΠΈ Python, Π° вмСсто ΠΌΠ΅Ρ‡Π΅ΠΉ — ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹. БообщСство Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ·ΡƒΡ‡Π°Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ аспСкт прСдлоТСния, Π·Π°Π΄Π°Π΅Ρ‚ вопросы, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ ΠΈ высказываСт ΠΊΡ€ΠΈΡ‚ΠΈΠΊΡƒ.


Π­Ρ‚ΠΎΡ‚ процСсс ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π»ΠΈΡ‚ΡŒΡΡ нСдСлями ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ мСсяцами. Иногда PEP ΠΎΡ‚ΠΊΠ»ΠΎΠ½ΡΡŽΡ‚, ΠΈΠ½ΠΎΠ³Π΄Π° ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ Π½Π° Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΡƒ. Но Ссли идСя Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ стоящая ΠΈ Π²Ρ‹Π΄Π΅Ρ€ΠΆΠ°Π»Π° всС испытания, ΠΎΠ½Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ этап — Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ.

PEP Π² дСйствии: ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΌΠ΅Π½ΡΡŽΡ‚ Python

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ PEP Π²Π»ΠΈΡΡŽΡ‚ Π½Π° язык. ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅ f-строки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сдСлали Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ строк Π² Python Ρ‚Π°ΠΊΠΈΠΌ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ? Π­Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ PEP 498. А асинхронноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с async/await? Бпасибо PEP 492. Π”Π°ΠΆΠ΅ сама систСма вСрсионирования Python опрСдСляСтся PEP (Ссли Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌ, PEP 440).

Но PEP — это Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎ Π½ΠΎΠ²Ρ‹Ρ… Ρ„ΠΈΡ‡Π°Ρ…. НСкоторыС ΠΈΠ· Π½ΠΈΡ… ΠΊΠ°ΡΠ°ΡŽΡ‚ΡΡ процСссов Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, стиля ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ философии языка. НапримСр, Π·Π½Π°ΠΌΠ΅Π½ΠΈΡ‚Ρ‹ΠΉ PEP 8 опрСдСляСт стандарты стиля ΠΊΠΎΠ΄Π° Python, Π° PEP 20 (извСстный ΠΊΠ°ΠΊ «Π”Π·Π΅Π½ Python») описываСт философскиС ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹, Π»Π΅ΠΆΠ°Ρ‰ΠΈΠ΅ Π² основС Π΄ΠΈΠ·Π°ΠΉΠ½Π° языка.

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ всС ΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Π½Ρ‹Π΅ PEP ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ. НСкоторыС ΠΈΠ· Π½ΠΈΡ… слуТат скорСС руководством ΠΈΠ»ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠ΅ΠΉ. НапримСр, PEP 484, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Π²Π΅Π» подсказки Ρ‚ΠΈΠΏΠΎΠ² Π² Python, Π½Π΅ сдСлал ΠΈΡ… ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ, Π½ΠΎ прСдоставил стандартный способ ΠΈΡ… использования.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ PEP Π²Π°ΠΆΠ½Ρ‹ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Python-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ: «ΠΡƒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ, PEP Π²Π°ΠΆΠ½Ρ‹ для создатСлСй Python, Π½ΠΎ ΠΊΠ°ΠΊΠΎΠ΅ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΊΠΎ ΠΌΠ½Π΅, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌΡƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ?» ΠžΡ‚Π²Π΅Ρ‚ прост: ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅! PEP — это Π½Π΅ просто тСхничСскиС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹, это ΠΎΠΊΠ½ΠΎ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅ Python.

Читая PEP, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΎ грядущих измСнСниях Π² языкС Π·Π°Π΄ΠΎΠ»Π³ΠΎ Π΄ΠΎ ΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π­Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ Π²Π°ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒΡΡ ΠΊ Π½ΠΎΠ²Ρ‹ΠΌ возмоТностям, Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ свой ΠΊΠΎΠ΄ ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π° Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ языка, участвуя Π² обсуТдСниях.

Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ PEP ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π³Π»ΡƒΠ±ΠΆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ Π΄ΠΈΠ·Π°ΠΉΠ½ ΠΈ Ρ„ΠΈΠ»ΠΎΡΠΎΡ„ΠΈΡŽ Python. ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ, Π° Π½Π΅ ΠΈΠ½Π°Ρ‡Π΅? ΠžΡ‚Π²Π΅Ρ‚Ρ‹ часто ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… PEP.

Как ΡΡ‚Π°Ρ‚ΡŒ экспСртом ΠΏΠΎ PEP

Π˜Ρ‚Π°ΠΊ, Π²Ρ‹ Π·Π°Π³ΠΎΡ€Π΅Π»ΠΈΡΡŒ ΠΈΠ΄Π΅Π΅ΠΉ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ PEP. Π‘ Ρ‡Π΅Π³ΠΎ Π½Π°Ρ‡Π°Ρ‚ΡŒ? Π’ΠΎΡ‚ нСсколько совСтов:

  • НачнитС с чтСния классичСских PEP, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ PEP 8 (ΡΡ‚ΠΈΠ»ΡŒ ΠΊΠΎΠ΄Π°) ΠΈ PEP 20 (Π”Π·Π΅Π½ Python).
  • Π‘Π»Π΅Π΄ΠΈΡ‚Π΅ Π·Π° Π½ΠΎΠ²Ρ‹ΠΌΠΈ PEP Π½Π° ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ сайтС Python.
  • УчаствуйтС Π² обсуТдСниях PEP Π½Π° Ρ„ΠΎΡ€ΡƒΠΌΠ°Ρ… ΠΈ Π² списках рассылки Python.
  • ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ свой собствСнный PEP! Π”Π°ΠΆΠ΅ Ссли ΠΎΠ½ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ принят, это ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ способ Π³Π»ΡƒΠ±ΠΆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ процСсс.

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ PEP — это Π½Π΅ просто тСхничСскоС Π·Π½Π°Π½ΠΈΠ΅. Π­Ρ‚ΠΎ способ ΠΌΡ‹ΡΠ»ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΡŒ Python, Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Ρƒ ΠΈ ΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π±ΡƒΠ΄ΡƒΡ‰Π΅Π³ΠΎ языка.


PEP: взгляд Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅ Python

PEP — это Π½Π΅ просто сухиС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹. Π­Ρ‚ΠΎ ΠΆΠΈΠ²ΠΎΠΉ, Π΄Ρ‹ΡˆΠ°Ρ‰ΠΈΠΉ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ постоянно ΡΠ²ΠΎΠ»ΡŽΡ†ΠΈΠΎΠ½ΠΈΡ€ΡƒΠ΅Ρ‚ вмСстС с языком. Они ΠΎΡ‚Ρ€Π°ΠΆΠ°ΡŽΡ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ тСхничСскиС аспСкты, Π½ΠΎ ΠΈ ΠΊΡƒΠ»ΡŒΡ‚ΡƒΡ€Ρƒ сообщСства Python, Π΅Π³ΠΎ цСнности ΠΈ Π²ΠΈΠ΄Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄ΡƒΡ‰Π΅Π³ΠΎ.

Π˜Π·ΡƒΡ‡Π°Ρ PEP, Π²Ρ‹ Π½Π΅ просто ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ ΠΎ Π½ΠΎΠ²Ρ‹Ρ… функциях ΠΈΠ»ΠΈ измСнСниях Π² синтаксисС. Π’Ρ‹ ΠΏΠΎΠ³Ρ€ΡƒΠΆΠ°Π΅Ρ‚Π΅ΡΡŒ Π² ΠΌΠΈΡ€ ΠΈΠ΄Π΅ΠΉ, Π΄Π΅Π±Π°Ρ‚ΠΎΠ² ΠΈ ΠΈΠ½Π½ΠΎΠ²Π°Ρ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‚ Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· самых популярных языков программирования Π² ΠΌΠΈΡ€Π΅.

Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π½Π° Python, ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅: Π·Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ, Π·Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ синтаксичСским ΠΏΡ€Π°Π²ΠΈΠ»ΠΎΠΌ стоит PEP — Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ обдумывания, обсуТдСния ΠΈ консСнсуса сообщСства. И ΠΊΡ‚ΠΎ Π·Π½Π°Π΅Ρ‚? ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π²ΠΎΠ»ΡŽΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ PEP Π±ΡƒΠ΄Π΅Ρ‚ написан ΠΈΠΌΠ΅Π½Π½ΠΎ Π²Π°ΠΌΠΈ!

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ возникновСния PEP: ΠžΡ‚ ΠΈΠ΄Π΅ΠΈ Π΄ΠΎ стандарта

Π—Π½Π°Π΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹, Ρ‡Ρ‚ΠΎ каТдая строчка ΠΊΠΎΠ΄Π° Π½Π° Python, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ сСгодня, ΠΈΠΌΠ΅Π΅Ρ‚ свою ΠΏΡ€Π΅Π΄Ρ‹ΡΡ‚ΠΎΡ€ΠΈΡŽ? Π”Π°-Π΄Π°, Π·Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ синтаксичСским ΠΏΡ€Π°Π²ΠΈΠ»ΠΎΠΌ стоит цСлая сага ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ эта идСя ΠΏΡ€ΠΎΡˆΠ»Π° ΠΏΡƒΡ‚ΡŒ ΠΎΡ‚ зароТдСния Π΄ΠΎ воплощСния. И Π² Ρ†Π΅Π½Ρ‚Ρ€Π΅ этой саги — PEP, ΠΈΠ»ΠΈ Python Enhancement Proposal. Но ΠΊΠ°ΠΊ ΠΆΠ΅ появился сам PEP? Π”Π°Π²Π°ΠΉΡ‚Π΅ ΡΠΎΠ²Π΅Ρ€ΡˆΠΈΠΌ ΠΏΡƒΡ‚Π΅ΡˆΠ΅ΡΡ‚Π²ΠΈΠ΅ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ ΡƒΠ·Π½Π°Π΅ΠΌ, ΠΊΠ°ΠΊ Ρ€ΠΎΠ΄ΠΈΠ»Π°ΡΡŒ эта Ρ€Π΅Π²ΠΎΠ»ΡŽΡ†ΠΈΠΎΠ½Π½Π°Ρ концСпция.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ сСбС ΠΊΠΎΠ½Π΅Ρ† 90-Ρ… Π³ΠΎΠ΄ΠΎΠ². Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π½Π°Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΎΠ±ΠΎΡ€ΠΎΡ‚Ρ‹, Π° Python — ΠΌΠΎΠ»ΠΎΠ΄ΠΎΠΉ ΠΈ Π°ΠΌΠ±ΠΈΡ†ΠΈΠΎΠ·Π½Ρ‹ΠΉ язык программирования, созданный Π“Π²ΠΈΠ΄ΠΎ Π²Π°Π½ Россумом. Python ΡƒΠΆΠ΅ Π·Π°Π²ΠΎΠ΅Π²Ρ‹Π²Π°Π΅Ρ‚ сСрдца программистов своСй простотой ΠΈ ΡΠ»Π΅Π³Π°Π½Ρ‚Π½ΠΎΡΡ‚ΡŒΡŽ, Π½ΠΎ Ρƒ Π½Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° — ΠΊΠ°ΠΊ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ процСсс развития языка?

Π’ Ρ‚Π΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π° измСнСния Π² Python вносились довольно Ρ…Π°ΠΎΡ‚ΠΈΡ‡Π½ΠΎ. ΠšΡ‚ΠΎ-Ρ‚ΠΎ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π» идСю Π½Π° Ρ„ΠΎΡ€ΡƒΠΌΠ΅, ΠΊΡ‚ΠΎ-Ρ‚ΠΎ писал письмо Π“Π²ΠΈΠ΄ΠΎ, Π° ΠΊΡ‚ΠΎ-Ρ‚ΠΎ просто Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Π» Π½ΠΎΠ²ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ надСялся, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° приТивСтся. Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Π°Π», ΠΏΠΎΠΊΠ° сообщСство Π±Ρ‹Π»ΠΎ нСбольшим, Π½ΠΎ с ростом популярности Python ΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ»ΠΎΡΡŒ ясно: Π½ΡƒΠΆΠ½Π° систСма.

И Π²ΠΎΡ‚, Π² 2000 Π³ΠΎΠ΄Ρƒ, появляСтся PEP 1 — Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ описываСт сам процСсс создания PEP. Π­Ρ‚ΠΎ Π±Ρ‹Π» ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° Python-сообщСство сказало: «Π₯Π²Π°Ρ‚ΠΈΡ‚ хаоса! Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Π²Π΅Π΄Π΅ΠΌ порядок Π² нашСм Π΄ΠΎΠΌΠ΅». PEP 1 стал своСобразной конституциСй ΠΌΠΈΡ€Π° Python, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π΅ΠΉ, ΠΊΠ°ΠΊ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Ρ‚ΡŒ, ΠΎΠ±ΡΡƒΠΆΠ΄Π°Ρ‚ΡŒ ΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ измСнСния Π² языкС.


Π ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ PEP: ΠΊΡ‚ΠΎ стоял Ρƒ истоков?

Но ΠΊΡ‚ΠΎ ΠΆΠ΅ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π» PEP? Π“Π»Π°Π²Π½Ρ‹ΠΌΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ этой ΠΈΠ΄Π΅ΠΈ Π±Ρ‹Π»ΠΈ Π‘Π°Ρ€Ρ€ΠΈ Π’Π°Ρ€ΡˆΠ°Π², Π”ΠΆΠ΅Ρ€Π΅ΠΌΠΈ Π₯ΠΈΠ»Ρ‚ΠΎΠ½ ΠΈ сам Π“Π²ΠΈΠ΄ΠΎ Π²Π°Π½ Россум. Они Π²Π΄ΠΎΡ…Π½ΠΎΠ²ΠΈΠ»ΠΈΡΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ IETF (Internet Engineering Task Force) ΠΈ ΠΈΡ… RFC (Request for Comments) — систСмой, которая ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π»Π° для развития ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ².

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ, Ρ‡Ρ‚ΠΎ сама идСя PEP Ρ€ΠΎΠ΄ΠΈΠ»Π°ΡΡŒ ΠΈΠ·… фрустрации! Π‘Π°Ρ€Ρ€ΠΈ Π’Π°Ρ€ΡˆΠ°Π², ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Python, устал ΠΎΡ‚ бСсконСчных дискуссий Π½Π° Ρ„ΠΎΡ€ΡƒΠΌΠ°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ часто Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Π»ΠΈΡΡŒ Π½ΠΈΡ‡Π΅ΠΌ. Он ΠΏΠΎΠ΄ΡƒΠΌΠ°Π»: «Π Ρ‡Ρ‚ΠΎ, Ссли ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС прСдлоТСния ΠΈ ΠΈΡ… обсуТдСния Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²?»

Π­Ρ‚Π° идСя ΠΏΠΎΠΏΠ°Π»Π° Π½Π° Π±Π»Π°Π³ΠΎΠ΄Π°Ρ‚Π½ΡƒΡŽ ΠΏΠΎΡ‡Π²Ρƒ. Π“Π²ΠΈΠ΄ΠΎ Π²Π°Π½ Россум, извСстный своСй любовью ΠΊ порядку ΠΈ структурС (Π½Π΅Π΄Π°Ρ€ΠΎΠΌ ΠΆΠ΅ Python славится своСй Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒΡŽ), сразу ΡƒΠ²ΠΈΠ΄Π΅Π» ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π» Π² этом ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅. Он понял, Ρ‡Ρ‚ΠΎ PEP ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ Π½Π΅ просто способом докумСнтирования ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π½ΠΎ ΠΈ ΠΌΠΎΡ‰Π½Ρ‹ΠΌ инструмСнтом для управлСния Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ΠΌ языка.

ΠŸΠ΅Ρ€Π²Ρ‹Π΅ шаги: ΠΊΠ°ΠΊ PEP ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ» ΠΌΠΈΡ€ Python

Π‘ появлСниСм PEP процСсс развития Python ΠΊΠ°Ρ€Π΄ΠΈΠ½Π°Π»ΡŒΠ½ΠΎ измСнился. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π·Π½Π°Ρ‡ΠΈΠΌΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² языкС Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ Ρ‡Π΅Ρ€Π΅Π· «Π³ΠΎΡ€Π½ΠΈΠ»ΠΎ» PEP. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π»ΠΎ, Ρ‡Ρ‚ΠΎ ΠΈΠ΄Π΅ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ, ΠΎΠ±ΡΡƒΠΆΠ΄Π°Ρ‚ΡŒΡΡ ΠΈ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ всСм сообщСством.

Один ΠΈΠ· ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Π·Π½Π°Ρ‡ΠΈΠΌΡ‹Ρ… PEP Π±Ρ‹Π» PEP 8 — руководство ΠΏΠΎ ΡΡ‚ΠΈΠ»ΡŽ ΠΊΠΎΠ΄Π° Python. Π­Ρ‚ΠΎΡ‚ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, созданный Π² 2001 Π³ΠΎΠ΄Ρƒ, Π΄ΠΎ сих ΠΏΠΎΡ€ остаСтся Π±ΠΈΠ±Π»ΠΈΠ΅ΠΉ для Python-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΏΠΎ всСму ΠΌΠΈΡ€Ρƒ. Он ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ», ΠΊΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ «ΠΊΡ€Π°ΡΠΈΠ²Ρ‹ΠΉ» Python-ΠΊΠΎΠ΄, ΠΈ ΠΏΠΎΠΌΠΎΠ³ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π½Π° Python ΡƒΠ·Π½Π°Π²Π°Π΅ΠΌΡ‹ΠΌ ΠΈ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΡ‚ΠΎ Π΅Π³ΠΎ написал.

Π”Ρ€ΡƒΠ³ΠΈΠΌ Ρ€Π°Π½Π½ΠΈΠΌ ΠΈ Π²Π»ΠΈΡΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ PEP стал PEP 20, извСстный ΠΊΠ°ΠΊ «Π”Π·Π΅Π½ Python». Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, написанный Π’ΠΈΠΌΠΎΠΌ ΠŸΠ΅Ρ‚Π΅Ρ€ΡΠΎΠΌ, ΠΈΠ·Π»ΠΎΠΆΠΈΠ» философскиС ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ Π΄ΠΈΠ·Π°ΠΉΠ½Π° Python. Он стал Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π°ΠΆΠ½ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΊΡƒΠ»ΡŒΡ‚ΡƒΡ€Ρ‹ Python, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ Π΄Π°ΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈ Π² сам язык — ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ «import this» Π² Python-консоли!

PEP Π² дСйствии: ΠΊΠ°ΠΊ Ρ€ΠΎΠΆΠ΄Π°ΡŽΡ‚ΡΡ Π½ΠΎΠ²Ρ‹Π΅ Ρ„ΠΈΡ‡ΠΈ

Но ΠΊΠ°ΠΊ ΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ PEP Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅? Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ — появлСниС f-строк Π² Python 3.6. Π­Ρ‚Π° Ρ„ΠΈΡ‡Π°, которая сдСлала Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ строк Π² Python Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅, появилась благодаря PEP 498.


ВсС Π½Π°Ρ‡Π°Π»ΠΎΡΡŒ с Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π­Ρ€ΠΈΠΊ Π’. Π‘ΠΌΠΈΡ‚ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ», Ρ‡Ρ‚ΠΎ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ форматирования строк Π² Python Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½Ρ‹. Он ΠΏΠΎΠ΄ΡƒΠΌΠ°Π»: «Π Ρ‡Ρ‚ΠΎ, Ссли ΠΌΡ‹ смоТСм Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ выраТСния прямо Π² строки?» Π’Π°ΠΊ Ρ€ΠΎΠ΄ΠΈΠ»Π°ΡΡŒ идСя f-строк.

Π­Ρ€ΠΈΠΊ написал Ρ‡Π΅Ρ€Π½ΠΎΠ²ΠΈΠΊ PEP 498, Π³Π΄Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ описал свою идСю, Π΅Π΅ обоснованиС ΠΈ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ. Π—Π°Ρ‚Π΅ΠΌ начался процСсс обсуТдСния. БообщСство Python Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ Π΄Π΅Π±Π°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΎ эту идСю: ΠΊΡ‚ΠΎ-Ρ‚ΠΎ восхищался ΡΠ»Π΅Π³Π°Π½Ρ‚Π½ΠΎΡΡ‚ΡŒΡŽ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, ΠΊΡ‚ΠΎ-Ρ‚ΠΎ высказывал опасСния ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρƒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ.

ПослС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ ΠΈ Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΎΠΊ PEP 498 Π±Ρ‹Π» принят. Но это Π±Ρ‹Π»ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Ρ‡Π°Π»ΠΎ! Π—Π°Ρ‚Π΅ΠΌ Π½Π°Ρ‡Π°Π»Π°ΡΡŒ Ρ€Π°Π±ΠΎΡ‚Π° Π½Π°Π΄ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ f-строк Π² самом Python. Π­Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Π° заняла нСсколько мСсяцСв, ΠΈ Π² ΠΈΡ‚ΠΎΠ³Π΅ f-строки появились Π² Python 3.6, навсСгда ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ² Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ со строками Π² Python.

PEP: Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎ Π½ΠΎΠ²Ρ‹Ρ… Ρ„ΠΈΡ‡Π°Ρ…

Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ PEP — это Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎ Π½ΠΎΠ²Ρ‹Ρ… функциях языка. МногиС PEP ΠΊΠ°ΡΠ°ΡŽΡ‚ΡΡ процСссов Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, стандартов кодирования, ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ философских аспСктов языка. НапримСр, PEP 440 опрСдСляСт стандарт вСрсионирования для Python-ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², Π° PEP 484 Π²Π²Π΅Π» систСму подсказок Ρ‚ΠΈΠΏΠΎΠ² Π² Python.

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ всС принятыС PEP ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ. НСкоторыС ΠΈΠ· Π½ΠΈΡ… слуТат скорСС руководством ΠΈΠ»ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠ΅ΠΉ. НапримСр, PEP 257, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ описываСт ΠΊΠΎΠ½Π²Π΅Π½Ρ†ΠΈΠΈ для докстрингов Π² Python, Π½Π΅ являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, Π½ΠΎ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² сообщСствС.

Π­Π²ΠΎΠ»ΡŽΡ†ΠΈΡ PEP: ΠΊΠ°ΠΊ систСма измСнилась со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ

Π—Π° Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ 20 Π»Π΅Ρ‚ сущСствования систСма PEP Ρ‚ΠΎΠΆΠ΅ ΡΠ²ΠΎΠ»ΡŽΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π»Π°. Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ всС PEP Π±Ρ‹Π»ΠΈ тСкстовыми Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ, Π½ΠΎ со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ ΠΎΠ½ΠΈ ΠΏΠ΅Ρ€Π΅Π΅Ρ…Π°Π»ΠΈ Π½Π° GitHub, Ρ‡Ρ‚ΠΎ сдСлало процСсс обсуТдСния ΠΈ внСсСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π±ΠΎΠ»Π΅Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ ΠΈ доступным.

Π’Π°ΠΊΠΆΠ΅ измСнилась ΠΈ структура PEP. Если Ρ€Π°Π½ΡŒΡˆΠ΅ всС PEP Π±Ρ‹Π»ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅, Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ½ΠΈ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Ρ‹ Π½Π° нСсколько Ρ‚ΠΈΠΏΠΎΠ²: стандартныС Ρ‚Ρ€Π΅ΠΊΠΈ (для ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² самом языкС), ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ (для ΠΎΠ±Ρ‰Π΅ΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ) ΠΈ процСссныС (для ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² процСссах Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Python).

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ, Ρ‡Ρ‚ΠΎ сама систСма PEP повлияла Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹. НапримСр, систСма PEP Π²Π΄ΠΎΡ…Π½ΠΎΠ²ΠΈΠ»Π° созданиС Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Ρ… систСм Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… языках программирования, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ PEP Π² Rust ΠΈΠ»ΠΈ JEP Π² Java.


PEP сСгодня: Π²Ρ‹Π·ΠΎΠ²Ρ‹ ΠΈ пСрспСктивы

БСгодня систСма PEP ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ ΠΈΠ³Ρ€Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΡƒΡŽ Ρ€ΠΎΠ»ΡŒ Π² Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠΈ Python. Но ΠΎΠ½Π° сталкиваСтся ΠΈ с Π½ΠΎΠ²Ρ‹ΠΌΠΈ Π²Ρ‹Π·ΠΎΠ²Π°ΠΌΠΈ. Один ΠΈΠ· Π½ΠΈΡ… — ΠΊΠ°ΠΊ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ баланс ΠΌΠ΅ΠΆΠ΄Ρƒ инновациями ΠΈ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ языка? Как ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½ΠΎΠ²Ρ‹Π΅ Ρ„ΠΈΡ‡ΠΈ Π½Π΅ услоТняли язык Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎ?

Π”Ρ€ΡƒΠ³ΠΎΠΉ Π²Ρ‹Π·ΠΎΠ² — ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ процСсс PEP Π±ΠΎΠ»Π΅Π΅ ΠΈΠ½ΠΊΠ»ΡŽΠ·ΠΈΠ²Π½Ρ‹ΠΌ? Π₯отя PEP ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ для участия всСх, Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ принятых PEP исходит ΠΎΡ‚ нСбольшой Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². БообщСство Python Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π°Π΄ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ процСсс Π±ΠΎΠ»Π΅Π΅ доступным для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ².

НСсмотря Π½Π° эти Π²Ρ‹Π·ΠΎΠ²Ρ‹, Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅ PEP выглядит ярким. Π‘ ростом популярности Python Ρ€ΠΎΠ»ΡŒ PEP ΠΊΠ°ΠΊ инструмСнта управлСния Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ΠΌ языка Ρ‚ΠΎΠ»ΡŒΠΊΠΎ возрастаСт. ΠšΡ‚ΠΎ Π·Π½Π°Π΅Ρ‚, ΠΊΠ°ΠΊΠΈΠ΅ Ρ€Π΅Π²ΠΎΠ»ΡŽΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ ΠΈΠ΄Π΅ΠΈ ΠΏΡ€ΠΈΠ΄ΡƒΡ‚ Π² Python Ρ‡Π΅Ρ€Π΅Π· систСму PEP Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ?

Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ², PEP — это Π½Π΅ просто тСхничСский процСсс. Π­Ρ‚ΠΎ Π²ΠΎΠΏΠ»ΠΎΡ‰Π΅Π½ΠΈΠ΅ Π΄ΡƒΡ…Π° открытости ΠΈ сотрудничСства, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π΅Π»Π°Π΅Ρ‚ Python Ρ‚Π°ΠΊΠΈΠΌ особСнным. Π­Ρ‚ΠΎ способ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‡Π»Π΅Π½Π° сообщСства Python внСсти свой Π²ΠΊΠ»Π°Π΄ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅ языка. И ΠΊΡ‚ΠΎ Π·Π½Π°Π΅Ρ‚? ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Π΅Π»ΠΈΠΊΠΈΠΉ PEP Π±ΡƒΠ΄Π΅Ρ‚ написан ΠΈΠΌΠ΅Π½Π½ΠΎ Π²Π°ΠΌΠΈ!

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΈ Ρ‚ΠΈΠΏΡ‹ PEP: Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅, процСссныС ΠΈ стандартныС

ΠŸΠΎΠ³Ρ€ΡƒΠΆΠ°ΡΡΡŒ Π² ΠΌΠΈΡ€ Python, Ρ€Π°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ Π²Ρ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½Π΅Ρ‚Π΅ΡΡŒ с Π·Π°Π³Π°Π΄ΠΎΡ‡Π½ΠΎΠΉ Π°Π±Π±Ρ€Π΅Π²ΠΈΠ°Ρ‚ΡƒΡ€ΠΎΠΉ PEP. Π§Ρ‚ΠΎ ΠΆΠ΅ это Ρ‚Π°ΠΊΠΎΠ΅? PEP — это Python Enhancement Proposal, ΠΈΠ»ΠΈ ΠΏΠΎ-русски «ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡŽ Python». Но Π½Π΅ ΡΠΏΠ΅ΡˆΠΈΡ‚Π΅ Π·Π΅Π²Π°Ρ‚ΡŒ! PEP — это Π½Π΅ просто скучныС тСхничСскиС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹. Π­Ρ‚ΠΎ настоящая ΠΊΠ°Ρ€Ρ‚Π° сокровищ для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΏΠΎΠ½ΡΡ‚ΡŒ Π΄ΡƒΡˆΡƒ Python ΠΈ Π·Π°Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π² Π΅Π³ΠΎ Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ сСбС PEP ΠΊΠ°ΠΊ ΡΠ²ΠΎΠ΅ΠΎΠ±Ρ€Π°Π·Π½ΡƒΡŽ ΠΊΠΎΠ½ΡΡ‚ΠΈΡ‚ΡƒΡ†ΠΈΡŽ ΠΌΠΈΡ€Π° Python. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ PEP — это ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ ΡΡ‚Π°Ρ‚ΡŒΡ этой конституции, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰Π°Ρ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ аспСкт языка ΠΈΠ»ΠΈ процСсса Π΅Π³ΠΎ развития. Но, ΠΊΠ°ΠΊ ΠΈ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ конституции, Π½Π΅ всС ΡΡ‚Π°Ρ‚ΡŒΠΈ созданы Ρ€Π°Π²Π½Ρ‹ΠΌΠΈ. Π’ ΠΌΠΈΡ€Π΅ PEP сущСствуСт Ρ‚Ρ€ΠΈ основных Ρ‚ΠΈΠΏΠ° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ со своСй ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ€ΠΎΠ»ΡŒΡŽ ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ.

Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ PEP: Компас Π² ΠΌΠΈΡ€Π΅ Python

НачнСм с ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… PEP. Π­Ρ‚ΠΈ рСбята — настоящиС ΠΏΡƒΡ‚Π΅Π²ΠΎΠ΄Π½Ρ‹Π΅ Π·Π²Π΅Π·Π΄Ρ‹ Π² ΠΌΠΈΡ€Π΅ Python. Π˜Ρ… Ρ†Π΅Π»ΡŒ — Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ язык, Π° ΠΏΠΎΠΌΠΎΡ‡ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π»ΡƒΡ‡ΡˆΠ΅ Π΅Π³ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ сСбС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ PEP ΠΊΠ°ΠΊ ΠΎΠΏΡ‹Ρ‚Π½ΠΎΠ³ΠΎ Π³ΠΈΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Ρ‚ вас ΠΏΠΎ самым интСрСсным Π·Π°ΠΊΠΎΡƒΠ»ΠΊΠ°ΠΌ Python-всСлСнной.


Один ΠΈΠ· самых извСстных ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… PEP — это PEP 20, Ρ‚Π°ΠΊΠΆΠ΅ извСстный ΠΊΠ°ΠΊ «Π”Π·Π΅Π½ Python». Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ, Π½ΠΎ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ ΠΈΠ·Π»Π°Π³Π°Π΅Ρ‚ философскиС ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ Π΄ΠΈΠ·Π°ΠΉΠ½Π° Python. Он Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π°ΠΆΠ΅Π½, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ Π΄Π°ΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈ Π² сам язык! ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ «import this» Π² Python-консоли, ΠΈ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ эти ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ своими Π³Π»Π°Π·Π°ΠΌΠΈ.

Π”Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ PEP — это PEP 257, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ описываСт ΠΊΠΎΠ½Π²Π΅Π½Ρ†ΠΈΠΈ для докстрингов Π² Python. Π₯отя этот PEP Π½Π΅ являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΊ исполнСнию, ΠΎΠ½ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² сообщСствС ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π° Π±ΠΎΠ»Π΅Π΅ Π΅Π΄ΠΈΠ½ΠΎΠΎΠ±Ρ€Π°Π·Π½ΠΎΠΉ ΠΈ понятной.

ΠŸΡ€ΠΎΡ†Π΅ΡΡΠ½Ρ‹Π΅ PEP: ΠŸΡ€Π°Π²ΠΈΠ»Π° ΠΈΠ³Ρ€Ρ‹

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ процСссным PEP. Если ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ PEP — это Π³ΠΈΠ΄Ρ‹, Ρ‚ΠΎ процСссныС PEP — это ΡΡƒΠ΄ΡŒΠΈ ΠΈ Π·Π°ΠΊΠΎΠ½ΠΎΠ΄Π°Ρ‚Π΅Π»ΠΈ. Они ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΈΠ³Ρ€Ρ‹ Π² ΠΌΠΈΡ€Π΅ Python: ΠΊΠ°ΠΊ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Ρ‚ΡŒ измСнСния, ΠΊΠ°ΠΊ ΠΈΡ… ΠΎΠ±ΡΡƒΠΆΠ΄Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ.

Π‘Π°ΠΌΡ‹ΠΉ Π²Π°ΠΆΠ½Ρ‹ΠΉ процСссный PEP — это PEP 1. Он описываСт сам процСсс создания ΠΈ принятия PEP. Π­Ρ‚ΠΎ своСго Ρ€ΠΎΠ΄Π° ΠΌΠ΅Ρ‚Π°-PEP, PEP ΠΎ PEP! Π‘Π΅Π· Π½Π΅Π³ΠΎ вся систСма PEP просто Π½Π΅ ΠΌΠΎΠ³Π»Π° Π±Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

Π”Ρ€ΡƒΠ³ΠΎΠΉ Π²Π°ΠΆΠ½Ρ‹ΠΉ процСссный PEP — это PEP 13, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ описываСт процСсс Π²Ρ‹Π±ΠΎΡ€ΠΎΠ² Π² Python Software Foundation Board of Directors. Π­Ρ‚ΠΎΡ‚ PEP обСспСчиваСт Π΄Π΅ΠΌΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ Π² ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ Python-сообщСством.

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ PEP: Π”Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΠΈ прогрСсса

И Π½Π°ΠΊΠΎΠ½Π΅Ρ†, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ самой «Π³ΠΎΡ€ΡΡ‡Π΅ΠΉ» ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ — стандартным PEP. Π­Ρ‚ΠΈ рСбята — настоящиС Ρ€ΠΎΠΊ-Π·Π²Π΅Π·Π΄Ρ‹ ΠΌΠΈΡ€Π° Python. Они ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ измСнСния Π² язык ΠΈΠ»ΠΈ Π΅Π³ΠΎ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ стандартный PEP — это ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ Ρ€Π΅Π²ΠΎΠ»ΡŽΡ†ΠΈΡ Π² ΠΌΠΈΡ€Π΅ Python.

Один ΠΈΠ· самых извСстных стандартных PEP — это PEP 8, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ опрСдСляСт ΡΡ‚ΠΈΠ»ΡŒ кодирования Π² Python. Π­Ρ‚ΠΎΡ‚ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ стал настоящСй Π±ΠΈΠ±Π»ΠΈΠ΅ΠΉ для Python-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΏΠΎ всСму ΠΌΠΈΡ€Ρƒ. Он опрСдСляСт, ΠΊΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ «ΠΊΡ€Π°ΡΠΈΠ²Ρ‹ΠΉ» Python-ΠΊΠΎΠ΄, ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π½Π° Python ΡƒΠ·Π½Π°Π²Π°Π΅ΠΌΡ‹ΠΌ ΠΈ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΡ‚ΠΎ Π΅Π³ΠΎ написал.

Π”Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ — PEP 484, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Π²Π΅Π» систСму подсказок Ρ‚ΠΈΠΏΠΎΠ² Π² Python. Π­Ρ‚ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ сдСлало статичСский Π°Π½Π°Π»ΠΈΠ· ΠΊΠΎΠ΄Π° Π½Π° Python Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ эффСктивным ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Π»ΠΎ Π΄ΠΎΡ€ΠΎΠ³Ρƒ для создания ΠΌΠΎΡ‰Π½Ρ‹Ρ… инструмСнтов ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΈΠΏΠΎΠ².


Анатомия PEP: Π§Ρ‚ΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ?

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ Ρ‚ΠΈΠΏΡ‹ PEP, Π΄Π°Π²Π°ΠΉΡ‚Π΅ заглянСм Π²Π½ΡƒΡ‚Ρ€ΡŒ ΠΈ посмотрим, ΠΈΠ· Ρ‡Π΅Π³ΠΎ ΠΎΠ½ΠΈ состоят. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ PEP ΠΈΠΌΠ΅Π΅Ρ‚ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ структуру, которая ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π±ΠΎΠ»Π΅Π΅ понятной ΠΈ Π»Π΅Π³ΠΊΠΎΠΉ для восприятия.

Π’ Π½Π°Ρ‡Π°Π»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ PEP ΠΈΠ΄Π΅Ρ‚ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит Π½ΠΎΠΌΠ΅Ρ€ PEP, Π΅Π³ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅, Π°Π²Ρ‚ΠΎΡ€ΠΎΠ² ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… участников. Π—Π°Ρ‚Π΅ΠΌ слСдуСт ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ Ρ€Π΅Π·ΡŽΠΌΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… прСдлоТСниях описываСт ΡΡƒΡ‚ΡŒ прСдлоТСния.

Π”Π°Π»Π΅Π΅ ΠΈΠ΄Π΅Ρ‚ основная Ρ‡Π°ΡΡ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, которая ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² сСбя ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π·Π΄Π΅Π»Ρ‹:

  • ОбоснованиС: ΠΏΠΎΡ‡Π΅ΠΌΡƒ это ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½ΡƒΠΆΠ½ΠΎ?
  • БпСцификация: Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ описаниС ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΠΎΠ³ΠΎ измСнСния
  • ΠžΠ±Ρ€Π°Ρ‚Π½Π°Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ: ΠΊΠ°ΠΊ это ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ повлияСт Π½Π° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄?
  • Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ: Π΅ΡΡ‚ΡŒ Π»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ риски бСзопасности?
  • РСализация: ΠΊΠ°ΠΊ это ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ?
  • ΠžΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½Π½Ρ‹Π΅ ΠΈΠ΄Π΅ΠΈ: ΠΊΠ°ΠΊΠΈΠ΅ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ Π±Ρ‹Π»ΠΈ рассмотрСны ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ ΠΎΡ‚Π²Π΅Ρ€Π³Π½ΡƒΡ‚Ρ‹?

Π’ ΠΊΠΎΠ½Ρ†Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΠ΄Π΅Ρ‚ Ρ€Π°Π·Π΄Π΅Π» с ссылками ΠΈ благодарностями. Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΡ€ΠΎΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΈΠ΄Π΅ΠΈ ΠΈ ΠΎΡ‚Π΄Π°Ρ‚ΡŒ Π΄ΠΎΠ»ΠΆΠ½ΠΎΠ΅ всСм, ΠΊΡ‚ΠΎ внСс Π²ΠΊΠ»Π°Π΄ Π² Π΅Ρ‘ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅.

PEP Π² дСйствии: ΠžΡ‚ ΠΈΠ΄Π΅ΠΈ Π΄ΠΎ ΠΊΠΎΠ΄Π°

Но ΠΊΠ°ΠΊ ΠΆΠ΅ PEP прСвращаСтся ΠΈΠ· ΠΈΠ΄Π΅ΠΈ Π² Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄? Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим этот процСсс Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π½Π΅Π΄Π°Π²Π½ΠΈΡ… PEP — PEP 634, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Π²Π΅Π» Π½ΠΎΠ²Ρ‹ΠΉ синтаксис сопоставлСния с ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠΌ (pattern matching) Π² Python 3.10.

ВсС Π½Π°Ρ‡Π°Π»ΠΎΡΡŒ с Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π³Ρ€ΡƒΠΏΠΏΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»Π°, Ρ‡Ρ‚ΠΎ Π² Python Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ ΠΌΠΎΡ‰Π½ΠΎΠ³ΠΎ ΠΈ элСгантного способа сопоставлСния с ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΅ΡΡ‚ΡŒ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ΠΈΡ… языках. Они написали Ρ‡Π΅Ρ€Π½ΠΎΠ²ΠΈΠΊ PEP, Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ описав ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΡ‹ΠΉ синтаксис ΠΈ Π΅Π³ΠΎ прСимущСства.

Π—Π°Ρ‚Π΅ΠΌ начался процСсс обсуТдСния. БообщСство Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ Π΄Π΅Π±Π°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΎ это ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅: ΠΊΡ‚ΠΎ-Ρ‚ΠΎ восхищался ΡΠ»Π΅Π³Π°Π½Ρ‚Π½ΠΎΡΡ‚ΡŒΡŽ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, ΠΊΡ‚ΠΎ-Ρ‚ΠΎ высказывал опасСния ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρƒ слоТности Π½ΠΎΠ²ΠΎΠΉ конструкции. PEP нСсколько Ρ€Π°Π· дорабатывался, учитывая ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ связь ΠΎΡ‚ сообщСства.

ПослС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… мСсяцСв обсуТдСний ΠΈ Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΎΠΊ PEP Π±Ρ‹Π» принят. Но это Π±Ρ‹Π»ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Ρ‡Π°Π»ΠΎ! Π—Π°Ρ‚Π΅ΠΌ Π½Π°Ρ‡Π°Π»Π°ΡΡŒ Ρ€Π°Π±ΠΎΡ‚Π° Π½Π°Π΄ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Π½ΠΎΠ²ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² самом Python. Π­Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Π° заняла нСсколько мСсяцСв, ΠΈ Π² ΠΈΡ‚ΠΎΠ³Π΅ Π½ΠΎΠ²Ρ‹ΠΉ синтаксис сопоставлСния с ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠΌ появился Π² Python 3.10, Π΄ΠΎΠ±Π°Π²ΠΈΠ² языку Π½ΠΎΠ²ΡƒΡŽ ΠΌΠΎΡ‰Π½ΡƒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ.


PEP: НС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Python-ΠΊΠΎΡ€ΠΈΡ„Π΅Π΅Π²

ΠœΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ PEP — это ΡƒΠ΄Π΅Π» лишь Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ядра Python ΠΈ Π³ΡƒΡ€Ρƒ языка. Но это Π½Π΅ Ρ‚Π°ΠΊ! PEP — это ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Python-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°, нСзависимо ΠΎΡ‚ уровня ΠΎΠΏΡ‹Ρ‚Π°.

Для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² PEP — это ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ способ Π³Π»ΡƒΠ±ΠΆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ язык ΠΈ Π΅Π³ΠΎ Ρ„ΠΈΠ»ΠΎΡΠΎΡ„ΠΈΡŽ. Читая PEP, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚Π° ΠΈΠ»ΠΈ иная функция, Π½ΠΎ ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ½Π° Π±Ρ‹Π»Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ, Π° Π½Π΅ ΠΈΠ½Π°Ρ‡Π΅.

Для Π±ΠΎΠ»Π΅Π΅ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² PEP — это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅ Python. Читая PEP, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΎ грядущих измСнСниях Π² языкС Π·Π°Π΄ΠΎΠ»Π³ΠΎ Π΄ΠΎ ΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π­Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ Π²Π°ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒΡΡ ΠΊ Π½ΠΎΠ²Ρ‹ΠΌ возмоТностям ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π° ΠΈΡ… Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅, участвуя Π² обсуТдСниях.

Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ PEP ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ «ΠΏΠΈΡ‚оничСский» ΠΊΠΎΠ΄. Зная ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΈ Ρ„ΠΈΠ»ΠΎΡΠΎΡ„ΠΈΡŽ, Π»Π΅ΠΆΠ°Ρ‰ΠΈΠ΅ Π² основС Π΄ΠΈΠ·Π°ΠΉΠ½Π° Python, Π²Ρ‹ смоТСтС ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ просто Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Π½ΠΎ ΠΈ Π³Π°Ρ€ΠΌΠΎΠ½ΠΈΡ‡Π½ΠΎ вписываСтся Π² экосистСму языка.

Π‘ΡƒΠ΄ΡƒΡ‰Π΅Π΅ PEP: Quo Vadis?

БистСма PEP ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ ΡΠ²ΠΎΠ»ΡŽΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ вмСстС с языком. Одно ΠΈΠ· Π½Π΅Π΄Π°Π²Π½ΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ — ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ GitHub для хранСния ΠΈ обсуТдСния PEP. Π­Ρ‚ΠΎ сдСлало процСсс создания ΠΈ обсуТдСния PEP Π±ΠΎΠ»Π΅Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ ΠΈ доступным для ΡˆΠΈΡ€ΠΎΠΊΠΎΠ³ΠΎ сообщСства.

Π’Π°ΠΊΠΆΠ΅ обсуТдаСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ввСдСния Π½ΠΎΠ²Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² PEP, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для описания Π»ΡƒΡ‡ΡˆΠΈΡ… ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊ ΠΈΠ»ΠΈ для ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΡŽ экосистСмы Python Π² Ρ†Π΅Π»ΠΎΠΌ, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ самого языка.

Π’ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ счСтС, Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅ PEP зависит ΠΎΡ‚ сообщСства Python. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Python ΠΌΠΎΠΆΠ΅Ρ‚ внСсти свой Π²ΠΊΠ»Π°Π΄ Π² Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ языка Ρ‡Π΅Ρ€Π΅Π· систСму PEP. И ΠΊΡ‚ΠΎ Π·Π½Π°Π΅Ρ‚? ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π²ΠΎΠ»ΡŽΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ PEP Π±ΡƒΠ΄Π΅Ρ‚ написан ΠΈΠΌΠ΅Π½Π½ΠΎ Π²Π°ΠΌΠΈ!

ΠŸΡ€ΠΎΡ†Π΅ΡΡ создания ΠΈ принятия PEP: ΠžΡ‚ Ρ‡Π΅Ρ€Π½ΠΎΠ²ΠΈΠΊΠ° Π΄ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

Π’Ρ‹ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π·Π°Π΄ΡƒΠΌΡ‹Π²Π°Π»ΠΈΡΡŒ, ΠΊΠ°ΠΊ Ρ€ΠΎΠΆΠ΄Π°ΡŽΡ‚ΡΡ Π½ΠΎΠ²Ρ‹Π΅ Ρ„ΠΈΡ‡ΠΈ Π² Python? Как идСя прСвращаСтся Π² ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ дСнь? ΠžΡ‚Π²Π΅Ρ‚ кроСтся Π² Ρ‚Ρ€Π΅Ρ… Π²ΠΎΠ»ΡˆΠ΅Π±Π½Ρ‹Ρ… Π±ΡƒΠΊΠ²Π°Ρ…: PEP. Но Ρ‡Ρ‚ΠΎ ΠΆΠ΅ Ρ‚Π°ΠΊΠΎΠ΅ PEP Π½Π° самом Π΄Π΅Π»Π΅? PEP — это Python Enhancement Proposal, ΠΈΠ»ΠΈ ΠΏΠΎ-русски «ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡŽ Python». Π­Ρ‚ΠΎ Π½Π΅ просто сухой тСхничСский Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, Π° настоящСС ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ΄Π΅ΠΈ, ΠΏΡƒΡ‚Π΅ΡˆΠ΅ΡΡ‚Π²ΠΈΠ΅ ΠΎΡ‚ зароТдСния мысли Π΄ΠΎ воплощСния Π² ΠΊΠΎΠ΄Π΅.


ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ сСбС PEP ΠΊΠ°ΠΊ сСмСчко, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ вырасти новая Π²Π΅Ρ‚Π²ΡŒ Π½Π° Π΄Ρ€Π΅Π²Π΅ Python. Но ΠΏΡƒΡ‚ΡŒ ΠΎΡ‚ сСмСчка Π΄ΠΎ плодоносящСй Π²Π΅Ρ‚Π²ΠΈ Π΄ΠΎΠ»ΠΎΠ³ ΠΈ тСрнист. Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΆΠ΅ ΠΏΡ€ΠΎΠΉΠ΄Π΅ΠΌ этот ΠΏΡƒΡ‚ΡŒ вмСстС, шаг Π·Π° шагом, ΠΈ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ, ΠΊΠ°ΠΊ идСя становится Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· самых популярных языков программирования Π² ΠΌΠΈΡ€Π΅.

Π¨Π°Π³ 1: Π—Π°Ρ€ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΈΠ΄Π΅ΠΈ

ВсС начинаСтся с ΠΈΠ΄Π΅ΠΈ. ΠšΡ‚ΠΎ-Ρ‚ΠΎ ΠΈΠ· сообщСства Python (Π° ΠΌΠΎΠΆΠ΅Ρ‚, ΠΈ Π²Ρ‹ сами) Π·Π°ΠΌΠ΅Ρ‡Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΈΠ»ΠΈ Π²ΠΈΠ΄ΠΈΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ. ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, это Π½ΠΎΠ²Ρ‹ΠΉ синтаксис, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сдСлаСт ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ. Или новая функция, которая упростит Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ часто Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‰Π΅ΠΉΡΡ Π·Π°Π΄Π°Ρ‡ΠΈ. А ΠΌΠΎΠΆΠ΅Ρ‚, это ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² процСссС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ сдСлаСт Тизнь Python-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π»Π΅Π³Ρ‡Π΅.

Но ΠΌΠ°Π»ΠΎ просто ΠΈΠΌΠ΅Ρ‚ΡŒ идСю. НуТно ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ стоящая. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ шаг — это обсуТдСниС ΠΈΠ΄Π΅ΠΈ с сообщСством. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ пост Π½Π° Ρ„ΠΎΡ€ΡƒΠΌΠ΅ python-ideas, обсуТдСниС Π² Ρ‡Π°Ρ‚Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π»ΠΈΡ‡Π½Ρ‹ΠΉ Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€ с ΠΊΠΎΡ€-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ Π½Π° ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ.

Π¨Π°Π³ 2: НаписаниС Ρ‡Π΅Ρ€Π½ΠΎΠ²ΠΈΠΊΠ° PEP

Если идСя ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π° ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚ΠΊΠ»ΠΈΠΊ, ΠΏΡ€ΠΈΡˆΠ»ΠΎ врСмя ΠΎΠ±Π»Π΅Ρ‡ΡŒ Π΅Π΅ Π² Ρ„ΠΎΡ€ΠΌΡƒ PEP. Π­Ρ‚ΠΎ Π½Π΅ просто набросок Π½Π° салфСткС — это Π΄Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΈ Π΅Π³ΠΎ обоснованиС. Π—Π²ΡƒΡ‡ΠΈΡ‚ просто? НС Ρ‚ΡƒΡ‚-Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ! НаписаниС качСствСнного PEP — это настоящСС искусство, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰Π΅Π΅ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ³ΠΎ понимания Python ΠΈ умСния Ρ‡Π΅Ρ‚ΠΊΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ°Ρ‚ΡŒ свои мысли.

PEP Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ мноТСство Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ: обоснованиС нСобходимости измСнСния, Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ описаниС ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΠΎΠ³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, Π°Π½Π°Π»ΠΈΠ· влияния Π½Π° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄, рассмотрСниС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² ΠΈ ΠΈΡ… нСдостатков. Π­Ρ‚ΠΎ ΠΊΠ°ΠΊ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π°ΡƒΡ‡Π½ΡƒΡŽ ΡΡ‚Π°Ρ‚ΡŒΡŽ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ вмСсто экспСримСнта Ρƒ вас — ΠΊΠΎΠ΄.

Π¨Π°Π³ 3: НазначСниС Π½ΠΎΠΌΠ΅Ρ€Π° PEP

Когда Ρ‡Π΅Ρ€Π½ΠΎΠ²ΠΈΠΊ Π³ΠΎΡ‚ΠΎΠ², Π°Π²Ρ‚ΠΎΡ€ отправляСт Π΅Π³ΠΎ PEP-Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°ΠΌ. Π­Ρ‚ΠΎ Π³Ρ€ΡƒΠΏΠΏΠ° ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ слСдят Π·Π° процСссом создания PEP. Если Ρ‡Π΅Ρ€Π½ΠΎΠ²ΠΈΠΊ соотвСтствуСт всСм трСбованиям, Π΅ΠΌΡƒ присваиваСтся Π½ΠΎΠΌΠ΅Ρ€. Π­Ρ‚ΠΎ Π²Π°ΠΆΠ½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ — Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎ стало Ρ‡Π°ΡΡ‚ΡŒΡŽ систСмы PEP.

НомСр PEP — это Π½Π΅ просто Ρ†ΠΈΡ„Ρ€Π°. Π­Ρ‚ΠΎ ΠΊΠ°ΠΊ имя для Ρ€Π΅Π±Π΅Π½ΠΊΠ° — ΠΎΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°Ρ‚ΡŒ это ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ всю Π΅Π³ΠΎ Тизнь. PEP 8 (ΡΡ‚ΠΈΠ»ΡŒ кодирования), PEP 20 (Π”Π·Π΅Π½ Python), PEP 484 (подсказки Ρ‚ΠΈΠΏΠΎΠ²) — эти Π½ΠΎΠΌΠ΅Ρ€Π° Π·Π½Π°ΠΊΠΎΠΌΡ‹ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΎΠΏΡ‹Ρ‚Π½ΠΎΠΌΡƒ Python-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ.


Π¨Π°Π³ 4: ΠžΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΈ Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΠ°

Π’Π΅ΠΏΠ΅Ρ€ΡŒ начинаСтся самоС интСрСсноС — обсуТдСниС. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ сСбС горячиС Π΄Π΅Π±Π°Ρ‚Ρ‹ Π² римском сСнатС, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ вмСсто Ρ‚ΠΎΠ³ — Ρ„ΡƒΡ‚Π±ΠΎΠ»ΠΊΠΈ с Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏΠ°ΠΌΠΈ Python, Π° вмСсто ΠΌΠ΅Ρ‡Π΅ΠΉ — ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹. БообщСство Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ·ΡƒΡ‡Π°Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ аспСкт прСдлоТСния, Π·Π°Π΄Π°Π΅Ρ‚ вопросы, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ ΠΈ высказываСт ΠΊΡ€ΠΈΡ‚ΠΈΠΊΡƒ.

Π­Ρ‚ΠΎΡ‚ процСсс ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π»ΠΈΡ‚ΡŒΡΡ нСдСлями ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ мСсяцами. PEP ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ Ρ‡Π΅Ρ€Π΅Π· нСсколько ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΡƒΠ»ΡƒΡ‡ΡˆΠ°ΡΡΡŒ ΠΈ ΡƒΡ‚ΠΎΡ‡Π½ΡΡΡΡŒ. Автор PEP Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ² ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π½Π° вопросы, ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ связь ΠΈ Π²Π½ΠΎΡΠΈΡ‚ΡŒ измСнСния Π² своС ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π΅ всС PEP проходят этот этап ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ. НСкоторыС прСдлоТСния ΠΎΡ‚ΠΊΠ»ΠΎΠ½ΡΡŽΡ‚ΡΡ ΠΈΠ·-Π·Π° тСхничСских слоТностСй, нСсовмСстимости с философиСй Python ΠΈΠ»ΠΈ просто ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ сообщСство Ρ€Π΅ΡˆΠ°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½Π΅ стоит усилий ΠΏΠΎ Π΅Π³ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

Шаг 5: РСшСниС BDFL

ПослС всСх обсуТдСний ΠΈ Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΎΠΊ наступаСт ΠΌΠΎΠΌΠ΅Π½Ρ‚ истины — принятиС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ. Π˜ΡΡ‚ΠΎΡ€ΠΈΡ‡Π΅ΡΠΊΠΈ это Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π» BDFL (Benevolent Dictator For Life) — Π“Π²ΠΈΠ΄ΠΎ Π²Π°Π½ Россум, ΡΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΡŒ Python. Он ΠΌΠΎΠ³ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ PEP, ΠΎΡ‚ΠΊΠ»ΠΎΠ½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΈΠ»ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π½Π° Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΡƒ.

БСйчас, послС ΡƒΡ…ΠΎΠ΄Π° Π“Π²ΠΈΠ΄ΠΎ с поста BDFL, Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Steering Council — Π³Ρ€ΡƒΠΏΠΏΠ° ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Ρ… сообщСством. Но ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ остаСтся Ρ‚Π΅ΠΌ ΠΆΠ΅ — Ρ„ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ принимаСтся послС Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ рассмотрСния всСх Π·Π° ΠΈ ΠΏΡ€ΠΎΡ‚ΠΈΠ².

Π¨Π°Π³ 6: РСализация

Если PEP принят, начинаСтся Ρ€Π°Π±ΠΎΡ‚Π° Π½Π°Π΄ Π΅Π³ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² ядрС Python, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² процСссС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Часто (Π½ΠΎ Π½Π΅ всСгда) Π°Π²Ρ‚ΠΎΡ€ PEP сам Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π°Π΄ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ своСго прСдлоТСния.

РСализация — это Π½Π΅ просто написаниС ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя созданиС тСстов, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, ΠΈΠ½ΠΎΠ³Π΄Π° Π΄Π°ΠΆΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΡ… частСй Python для совмСстимости с Π½ΠΎΠ²ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΡΡ‚ΡŒ нСсколько мСсяцСв, особСнно для слоТных ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

Π¨Π°Π³ 7: Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π² Ρ€Π΅Π»ΠΈΠ·

Π€ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ шаг — Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ PEP Π² Π½ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅Π»ΠΈΠ· Python. Но Π΄Π°ΠΆΠ΅ здСсь ΠΏΡƒΡ‚Π΅ΡˆΠ΅ΡΡ‚Π²ΠΈΠ΅ PEP Π½Π΅ заканчиваСтся. ПослС Ρ€Π΅Π»ΠΈΠ·Π° сообщСство Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ. Иногда это ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ созданию Π½ΠΎΠ²Ρ‹Ρ… PEP, ΠΈ Ρ†ΠΈΠΊΠ» начинаСтся снова.


PEP Π² дСйствии: Π Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим этот процСсс Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ — PEP 484, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Π²Π΅Π» подсказки Ρ‚ΠΈΠΏΠΎΠ² Π² Python. Π­Ρ‚ΠΎ Π±Ρ‹Π»Π° Ρ€Π΅Π²ΠΎΠ»ΡŽΡ†ΠΈΠΎΠ½Π½Π°Ρ идСя, которая сущСствСнно ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»Π° Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ‹ пишСм ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ ΠΊΠΎΠ΄ Π½Π° Python.

ИдСя подсказок Ρ‚ΠΈΠΏΠΎΠ² Π·Π°Ρ€ΠΎΠ΄ΠΈΠ»Π°ΡΡŒ ΠΈΠ· потрСбности Π² Π»ΡƒΡ‡ΡˆΠΈΡ… инструмСнтах статичСского Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π°. Π“Π²ΠΈΠ΄ΠΎ Π²Π°Π½ Россум ΠΈ Яннис Ласкарис написали Ρ‡Π΅Ρ€Π½ΠΎΠ²ΠΈΠΊ PEP, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ синтаксис ΠΈ сСмантику подсказок Ρ‚ΠΈΠΏΠΎΠ². ПослС мСсяцСв обсуТдСний ΠΈ Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΎΠΊ, PEP Π±Ρ‹Π» принят.

РСализация заняла нСсколько мСсяцСв ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Π»Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ измСнСния Π² самом Python, Π½ΠΎ ΠΈ созданиС модуля typing Π² стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅. Подсказки Ρ‚ΠΈΠΏΠΎΠ² Π±Ρ‹Π»ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² Python 3.5, Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΉ Π² сСнтябрС 2015 Π³ΠΎΠ΄Π°.

Но история Π½Π° этом Π½Π΅ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ»Π°ΡΡŒ. ПослС Ρ€Π΅Π»ΠΈΠ·Π° сообщСство Π½Π°Ρ‡Π°Π»ΠΎ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ подсказки Ρ‚ΠΈΠΏΠΎΠ², Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π»ΠΎ ΠΊ созданию Π½ΠΎΠ²Ρ‹Ρ… инструмСнтов (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, mypy) ΠΈ Π΄Π°ΠΆΠ΅ Π½ΠΎΠ²Ρ‹Ρ… PEP, Ρ€Π°ΡΡˆΠΈΡ€ΡΡŽΡ‰ΠΈΡ… ΠΈ ΡƒΡ‚ΠΎΡ‡Π½ΡΡŽΡ‰ΠΈΡ… использованиС Ρ‚ΠΈΠΏΠΎΠ² Π² Python.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ PEP Π²Π°ΠΆΠ½Ρ‹ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Python-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ: «ΠΡƒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ, PEP Π²Π°ΠΆΠ½Ρ‹ для создатСлСй Python, Π½ΠΎ ΠΊΠ°ΠΊΠΎΠ΅ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΊΠΎ ΠΌΠ½Π΅, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌΡƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ?» ΠžΡ‚Π²Π΅Ρ‚ прост: ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅! PEP — это Π½Π΅ просто тСхничСскиС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹, это ΠΎΠΊΠ½ΠΎ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅ Python.

Читая PEP, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΎ грядущих измСнСниях Π² языкС Π·Π°Π΄ΠΎΠ»Π³ΠΎ Π΄ΠΎ ΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π­Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ Π²Π°ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒΡΡ ΠΊ Π½ΠΎΠ²Ρ‹ΠΌ возмоТностям, Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ свой ΠΊΠΎΠ΄ ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π° Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ языка, участвуя Π² обсуТдСниях.

Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ PEP ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π³Π»ΡƒΠ±ΠΆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ Π΄ΠΈΠ·Π°ΠΉΠ½ ΠΈ Ρ„ΠΈΠ»ΠΎΡΠΎΡ„ΠΈΡŽ Python. ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ, Π° Π½Π΅ ΠΈΠ½Π°Ρ‡Π΅? ΠžΡ‚Π²Π΅Ρ‚Ρ‹ часто ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… PEP.

НаконСц, процСсс создания ΠΈ принятия PEP — это прСкрасный ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ процСсса Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π­Ρ‚ΠΎ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΈΠ΄Π΅ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ Π² ΠΊΠΎΠ΄, ΠΊΠ°ΠΊ сообщСство ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π»ΠΈΡΡ‚ΡŒ Π½Π° Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΠΈ ΠΊΠ°ΠΊ Π²Π°ΠΆΠ½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ Π² ΠΌΠΈΡ€Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ исходного ΠΊΠΎΠ΄Π°.

Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π½Π° Python, ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅: Π·Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ, Π·Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ синтаксичСским ΠΏΡ€Π°Π²ΠΈΠ»ΠΎΠΌ стоит PEP — Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ обдумывания, обсуТдСния ΠΈ консСнсуса сообщСства. И ΠΊΡ‚ΠΎ Π·Π½Π°Π΅Ρ‚? ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π²ΠΎΠ»ΡŽΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ PEP Π±ΡƒΠ΄Π΅Ρ‚ написан ΠΈΠΌΠ΅Π½Π½ΠΎ Π²Π°ΠΌΠΈ!


ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ PEP, измСнившиС Python: ΠžΠ±Π·ΠΎΡ€ Π²Π°ΠΆΠ½Π΅ΠΉΡˆΠΈΡ… ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ

Π’Ρ‹ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π·Π°Π΄ΡƒΠΌΡ‹Π²Π°Π»ΠΈΡΡŒ, ΠΊΠ°ΠΊ Python стал Ρ‚Π°ΠΊΠΈΠΌ, ΠΊΠ°ΠΊΠΈΠΌ ΠΌΡ‹ Π΅Π³ΠΎ Π·Π½Π°Π΅ΠΌ сСгодня? КаТдая функция, ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ синтаксиса, каТдая философская концСпция языка ΠΈΠΌΠ΅Π΅Ρ‚ свою ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ. И эта история часто начинаСтся с PEP — Python Enhancement Proposal. PEP — это Π½Π΅ просто сухиС тСхничСскиС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹. Π­Ρ‚ΠΎ настоящиС Π²Π΅Ρ…ΠΈ Π² ΡΠ²ΠΎΠ»ΡŽΡ†ΠΈΠΈ Python, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ²ΡˆΠΈΠ΅ Π΅Π³ΠΎ ΠΏΡƒΡ‚ΡŒ развития. Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΆΠ΅ отправимся Π² ΡƒΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡƒΡ‚Π΅ΡˆΠ΅ΡΡ‚Π²ΠΈΠ΅ ΠΏΠΎ самым Π·Π½Π°Ρ‡ΠΈΠΌΡ‹ΠΌ PEP, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ навсСгда ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ Π»ΠΈΡ†ΠΎ Python.

PEP 8: Библия стиля Python

НачнСм нашС ΠΏΡƒΡ‚Π΅ΡˆΠ΅ΡΡ‚Π²ΠΈΠ΅ с PEP 8 — Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, самого извСстного PEP Π² истории Python. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ PEP 8? Π­Ρ‚ΠΎ руководство ΠΏΠΎ ΡΡ‚ΠΈΠ»ΡŽ ΠΊΠΎΠ΄Π° Python, своСго Ρ€ΠΎΠ΄Π° «Π±ΠΈΠ±Π»ΠΈΡ» для Python-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ сСбС, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΡ€ΠΈΠ΅Ρ…Π°Π»ΠΈ Π² Π½ΠΎΠ²ΡƒΡŽ страну. Π£ вас Π΅ΡΡ‚ΡŒ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ, Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΡƒ, Π½ΠΎ Π²Π°ΠΌ всС Π΅Ρ‰Π΅ слоТно ΠΎΠ±Ρ‰Π°Ρ‚ΡŒΡΡ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅ мСстных ΠΎΠ±Ρ‹Ρ‡Π°Π΅Π² ΠΈ этикСта. PEP 8 — это ΠΊΠ°ΠΊ ΠΊΠ½ΠΈΠ³Π° ΠΏΠΎ этикСту для Python-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². Она ΡƒΡ‡ΠΈΡ‚ нас, ΠΊΠ°ΠΊ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ понятСн ΠΈ приятСн для чтСния Π΄Ρ€ΡƒΠ³ΠΈΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ.

PEP 8 ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ всС: ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, сколько ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для отступов (4, Ссли Π²Π°ΠΌ интСрСсно), Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Благодаря PEP 8, ΠΊΠΎΠ΄ Π½Π° Python ΡƒΠ·Π½Π°Π²Π°Π΅ΠΌ ΠΈ Ρ‡ΠΈΡ‚Π°Π΅ΠΌ, нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΡ‚ΠΎ Π΅Π³ΠΎ написал. Π­Ρ‚ΠΎ ΠΊΠ°ΠΊ Ссли Π±Ρ‹ всС писатСли Π² ΠΌΠΈΡ€Π΅ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΡΡ‚ΠΈΠ»ΡŒ ΠΏΡƒΠ½ΠΊΡ‚ΡƒΠ°Ρ†ΠΈΠΈ — Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ стало Π±Ρ‹ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ приятнСС, Π½Π΅ Ρ‚Π°ΠΊ Π»ΠΈ?

PEP 20: Π”Π·Π΅Π½ Python

Если PEP 8 — это этикСт Python, Ρ‚ΠΎ PEP 20, извСстный ΠΊΠ°ΠΊ «Π”Π·Π΅Π½ Python», — это Π΅Π³ΠΎ философия. Π­Ρ‚ΠΎΡ‚ ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, состоящий всСго ΠΈΠ· 19 Π°Ρ„ΠΎΡ€ΠΈΠ·ΠΌΠΎΠ², Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π°ΠΆΠ΅Π½, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ Π΄Π°ΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈ Π² сам язык. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ввСсти «import this» Π² Python-консоли, ΠΈ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ эти ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹.

«Π―Π²Π½ΠΎΠ΅ Π»ΡƒΡ‡ΡˆΠ΅ нСявного», «ΠŸΡ€ΠΎΡΡ‚ΠΎΠ΅ Π»ΡƒΡ‡ΡˆΠ΅ слоТного», «Π§ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅» — эти ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ стали ΠΏΡƒΡ‚Π΅Π²ΠΎΠ΄Π½Ρ‹ΠΌΠΈ Π·Π²Π΅Π·Π΄Π°ΠΌΠΈ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Python. Они Π²Π»ΠΈΡΡŽΡ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ‹ пишСм ΠΊΠΎΠ΄, Π½ΠΎ ΠΈ Π½Π° Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ‹ Π΄ΡƒΠΌΠ°Π΅ΠΌ ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π² Ρ†Π΅Π»ΠΎΠΌ. PEP 20 — это Π½Π΅ просто Π½Π°Π±ΠΎΡ€ ΠΏΡ€Π°Π²ΠΈΠ», это ΠΎΠ±Ρ€Π°Π· ΠΌΡ‹ΡˆΠ»Π΅Π½ΠΈΡ, философия, которая Π΄Π΅Π»Π°Π΅Ρ‚ Python ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ.


PEP 257: Π˜ΡΠΊΡƒΡΡΡ‚Π²ΠΎ докумСнтирования

ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ PEP 257 — Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°ΡƒΡ‡ΠΈΠ» нас ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ докстринги. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ докстринги? Π­Ρ‚ΠΎ строки Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ пишСм Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ классов. PEP 257 опрСдСляСт, ΠΊΠ°ΠΊ эти строки Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΈ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ.

Благодаря PEP 257, докумСнтация Π² Python стала Π½Π΅ΠΎΡ‚ΡŠΠ΅ΠΌΠ»Π΅ΠΌΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΎ ΠΊΠ°ΠΊ Ссли Π±Ρ‹ каТдая ΠΊΠ½ΠΈΠ³Π° содСрТала ΠΊΡ€Π°Ρ‚ΠΊΡƒΡŽ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π½Π°Ρ‡Π°Π»Π΅, Π½ΠΎ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π³Π»Π°Π²ΠΎΠΉ ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ Π°Π±Π·Π°Ρ†Π΅ΠΌ. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ понятным ΠΈ самодокумСнтируСмым, Ρ‡Ρ‚ΠΎ особСнно Π²Π°ΠΆΠ½ΠΎ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… ΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅.

PEP 484: Випизация вступаСт Π² ΠΈΠ³Ρ€Ρƒ

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ PEP 484 — Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Π²Π΅Π» подсказки Ρ‚ΠΈΠΏΠΎΠ² Π² Python. Π­Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ поистинС Ρ€Π΅Π²ΠΎΠ»ΡŽΡ†ΠΈΠΎΠ½Π½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅. Python всСгда Π±Ρ‹Π» языком с динамичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ, Ρ‡Ρ‚ΠΎ Π΄Π°Π²Π°Π»ΠΎ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ, Π½ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠ»ΠΎ ΠΊ ошибкам. PEP 484 ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ» способ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏΡ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π½Π΅ тСряя ΠΏΡ€ΠΈ этом динамичСской ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρ‹ Python.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ собираСтС ΠΏΠ°Π·Π». РаньшС Π²Ρ‹ просто ΠΏΡ‹Ρ‚Π°Π»ΠΈΡΡŒ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒ кусочки ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΠ΅. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΆΠ΅, благодаря PEP 484, Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ кусочкС Π΅ΡΡ‚ΡŒ подсказка ΠΎ Ρ‚ΠΎΠΌ, ΠΊΡƒΠ΄Π° ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ΄

PEP 8: Руководство ΠΏΠΎ ΡΡ‚ΠΈΠ»ΡŽ ΠΊΠΎΠ΄Π° Python ΠΈ Π΅Π³ΠΎ влияниС Π½Π° Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ

Π’Ρ‹ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π·Π°Π΄ΡƒΠΌΡ‹Π²Π°Π»ΠΈΡΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΊΠΎΠ΄ Π½Π° Python, написанный Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ, часто выглядит Ρ‚Π°ΠΊ ΠΏΠΎΡ…ΠΎΠΆΠ΅? ΠŸΠΎΡ‡Π΅ΠΌΡƒ, открывая ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π° GitHub, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ Π΅Π³ΠΎ структуру ΠΈ Π»ΠΎΠ³ΠΈΠΊΡƒ? ΠžΡ‚Π²Π΅Ρ‚ кроСтся Π² Ρ‚Ρ€Π΅Ρ… символах ΠΈ ΠΎΠ΄Π½ΠΎΠΉ Ρ†ΠΈΡ„Ρ€Π΅: PEP 8. Но Ρ‡Ρ‚ΠΎ ΠΆΠ΅ Ρ‚Π°ΠΊΠΎΠ΅ PEP 8 Π½Π° самом Π΄Π΅Π»Π΅, ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ влияниС Π½Π° ΠΌΠΈΡ€ Python?

PEP 8 — это Π½Π΅ просто ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ ΠΈΠ· сСрии Python Enhancement Proposals (PEP). Π­Ρ‚ΠΎ настоящая библия стиля для Python-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², своСобразный кодСкс чСсти, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ опрСдСляСт, ΠΊΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ «ΠΊΡ€Π°ΡΠΈΠ²Ρ‹ΠΉ» ΠΊΠΎΠ΄ Π½Π° Python. Но ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΆΠ΅ этот Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Ρ‚Π°ΠΊ Π²Π°ΠΆΠ΅Π½? Π”Π°Π²Π°ΠΉΡ‚Π΅ разбСрСмся!

Π˜ΡΡ‚ΠΎΠΊΠΈ PEP 8: Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ½ΠΎ руководство ΠΏΠΎ ΡΡ‚ΠΈΠ»ΡŽ?

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ сСбС, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ ΠΊΠ½ΠΈΠ³Ρƒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π°Π±Π·Π°Ρ† написан Ρ€Π°Π·Π½Ρ‹ΠΌ ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠΌ, с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ отступами ΠΈ Ρ€Π°Π·Π½ΠΎΠΉ структурой ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π£Ρ‚ΠΎΠΌΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π½Π΅ ΠΏΡ€Π°Π²Π΄Π° Π»ΠΈ? Π’ΠΎ ΠΆΠ΅ самоС происходит, ΠΊΠΎΠ³Π΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΠΈΡˆΡƒΡ‚ ΠΊΠΎΠ΄ Π±Π΅Π· ΠΎΠ±Ρ‰ΠΈΡ… ΠΏΡ€Π°Π²ΠΈΠ» стиля. PEP 8 Ρ€Π΅ΡˆΠ°Π΅Ρ‚ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ для Python, прСдоставляя Π΅Π΄ΠΈΠ½Ρ‹ΠΉ стандарт оформлСния ΠΊΠΎΠ΄Π°.


PEP 8 Π±Ρ‹Π» создан Π“Π²ΠΈΠ΄ΠΎ Π²Π°Π½ Россумом, Π‘Π°Ρ€Ρ€ΠΈ Π’Π°Ρ€ΡˆΠ°Π²ΠΎΠΌ ΠΈ Ником Коглэном Π² 2001 Π³ΠΎΠ΄Ρƒ. Π˜Ρ… Ρ†Π΅Π»ΡŒΡŽ Π±Ρ‹Π»ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ руководство, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ сдСлаСт ΠΊΠΎΠ΄ Π½Π° Python максимально Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ ΠΈ понятным. Они ΠΏΠΎΠ½ΠΈΠΌΠ°Π»ΠΈ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ читаСтся Ρ‡Π°Ρ‰Π΅, Ρ‡Π΅ΠΌ ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ, ΠΈ Ρ…ΠΎΡ‚Π΅Π»ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ этот процСсс максимально ΠΊΠΎΠΌΡ„ΠΎΡ€Ρ‚Π½Ρ‹ΠΌ.

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ PEP 8: Π§Ρ‚ΠΎ Π² Π½Π΅ΠΌ Ρ‚Π°ΠΊΠΎΠ³ΠΎ особСнного?

PEP 8 ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ мноТСство аспСктов оформлСния ΠΊΠΎΠ΄Π°, Π½ΠΎ Π΅ΡΡ‚ΡŒ нСсколько ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ стоит Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ:

  • ΠžΡ‚ΡΡ‚ΡƒΠΏΡ‹: Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ 4 ΠΏΡ€ΠΎΠ±Π΅Π»Π° вмСсто табуляции. Π­Ρ‚ΠΎ каТСтся ΠΌΠ΅Π»ΠΎΡ‡ΡŒΡŽ, Π½ΠΎ обСспСчиваСт Π΅Π΄ΠΈΠ½ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠ΅ отобраТСния ΠΊΠΎΠ΄Π° Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… устройствах.
  • Π”Π»ΠΈΠ½Π° строк: ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ строк 79 символами. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌ Π² эпоху ΡˆΠΈΡ€ΠΎΠΊΠΎΡ„ΠΎΡ€ΠΌΠ°Ρ‚Π½Ρ‹Ρ… ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΎΠ², Π½ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ позволяСт ΠΊΠΎΠΌΡ„ΠΎΡ€Ρ‚Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΊΠΎΠ΄ΠΎΠΌ Π΄Π°ΠΆΠ΅ Π½Π° Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… экранах.
  • ИмСнованиС: Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ snake_case для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, CamelCase для классов. Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² ΠΊΠΎΠ΄Π΅.
  • Π˜ΠΌΠΏΠΎΡ€Ρ‚Ρ‹: Π Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒ ΠΈΠΌΠΏΠΎΡ€Ρ‚Ρ‹ Π² Π½Π°Ρ‡Π°Π»Π΅ Ρ„Π°ΠΉΠ»Π°, группируя ΠΈΡ… логичСски. Π­Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ структуру зависимостСй ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π±ΠΎΠ»Π΅Π΅ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎΠΉ.
  • ΠŸΡ€ΠΎΠ±Π΅Π»Ρ‹: Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ Π²ΠΎΠΊΡ€ΡƒΠ³ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈ послС запятых, Π½ΠΎ Π½Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ скобок. Π­Ρ‚ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ.

Но PEP 8 — это Π½Π΅ просто Π½Π°Π±ΠΎΡ€ сухих ΠΏΡ€Π°Π²ΠΈΠ». Π­Ρ‚ΠΎ философия написания ΠΊΠΎΠ΄Π°, которая ставит Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΈ ΠΏΠΎΠ½ΡΡ‚Π½ΠΎΡΡ‚ΡŒ Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠ΅ мСсто. Как говорится Π² самом Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅: «Π§ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅».

ВлияниС PEP 8 Π½Π° экосистСму Python

Π’Ρ€ΡƒΠ΄Π½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ влияниС PEP 8 Π½Π° ΠΌΠΈΡ€ Python. Π­Ρ‚ΠΎΡ‚ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ стал стандартом Π΄Π΅-Ρ„Π°ΠΊΡ‚ΠΎ для оформлСния ΠΊΠΎΠ΄Π° Π½Π° Python. МногиС IDE ΠΈ тСкстовыС Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Ρ‹ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ соотвСтствия PEP 8 ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ инструмСнты, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ flake8 ΠΈ pylint, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ автоматичСски ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ ΠΊΠΎΠ΄ Π½Π° соотвСтствиС PEP 8.

Но влияниС PEP 8 Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π΄Π°Π»Π΅ΠΊΠΎ Π·Π° Ρ€Π°ΠΌΠΊΠΈ простого форматирования ΠΊΠΎΠ΄Π°. Он создал ΠΊΡƒΠ»ΡŒΡ‚ΡƒΡ€Ρƒ Π² сообщСствС Python, Π³Π΄Π΅ чистота ΠΈ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° цСнятся Π½Π°Ρ€Π°Π²Π½Π΅ с Π΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π»ΠΎ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° Python часто Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ «ΡΠ°ΠΌΠΎΠ΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ» — ΠΎΠ½ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ясСн ΠΈ понятСн, Ρ‡Ρ‚ΠΎ часто Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π².


PEP 8 Π² дСйствии: Π Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ PEP 8 ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, написанной Π±Π΅Π· ΡƒΡ‡Π΅Ρ‚Π° PEP 8:


def calculate_average(numbers):
    if len(numbers)==0:return None
    total=sum(numbers)
    average=total/len(numbers)
    return average

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ‚Π° ΠΆΠ΅ функция, пСрСписанная Π² соотвСтствии с PEP 8:


def calculate_average(numbers):
    if not numbers:
        return None
    total = sum(numbers)
    average = total / len(numbers)
    return average

Π’ΠΈΠ΄ΠΈΡ‚Π΅ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ? Π’Ρ‚ΠΎΡ€ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π»Π΅Π³Ρ‡Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ. ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ отступы, ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ Π²ΠΎΠΊΡ€ΡƒΠ³ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², Π±ΠΎΠ»Π΅Π΅ идиоматичная ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° пустой список — всС это Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ «ΠΏΠΈΡ‚ΠΎΠ½ΠΈΡ‡Π½Ρ‹ΠΌ».

ΠšΡ€ΠΈΡ‚ΠΈΠΊΠ° ΠΈ ограничСния PEP 8

НСсмотря Π½Π° свою ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ, PEP 8 Π½Π΅ ΠΈΠ·Π±Π΅ΠΆΠ°Π» ΠΊΡ€ΠΈΡ‚ΠΈΠΊΠΈ. НСкоторыС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ Π΅Π³ΠΎ слишком строгим ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌ Ρ‚Π²ΠΎΡ€Ρ‡Π΅ΡΠΊΡƒΡŽ свободу. Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Ρ‹ строки 79 символами) устарСли Π² эпоху ΡˆΠΈΡ€ΠΎΠΊΠΎΡ„ΠΎΡ€ΠΌΠ°Ρ‚Π½Ρ‹Ρ… ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΎΠ².

Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ PEP 8 — это руководство, Π° Π½Π΅ ТСсткий свод ΠΏΡ€Π°Π²ΠΈΠ». Π‘Π°ΠΌ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚: «Π—Π½Π°ΠΉΡ‚Π΅, ΠΊΠΎΠ³Π΄Π° Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ — ΠΈΠ½ΠΎΠ³Π΄Π° руководство ΠΏΠΎ ΡΡ‚ΠΈΠ»ΡŽ просто Π½Π΅ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ. Когда ΡΠΎΠΌΠ½Π΅Π²Π°Π΅Ρ‚Π΅ΡΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ своС суТдСниС». Π­Ρ‚ΠΎ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π³Π»Π°Π²Π½ΠΎΠ΅ — это Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΈ ΠΏΠΎΠ½ΡΡ‚Π½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°, Π° Π½Π΅ слСпоС слСдованиС ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ.

Π‘ΡƒΠ΄ΡƒΡ‰Π΅Π΅ PEP 8: Π­Π²ΠΎΠ»ΡŽΡ†ΠΈΡ стандарта

PEP 8 Π½Π΅ статичСн. Он ΡΠ²ΠΎΠ»ΡŽΡ†ΠΈΠΎΠ½ΠΈΡ€ΡƒΠ΅Ρ‚ вмСстС с языком Python ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°ΠΌΠΈ программирования. НапримСр, с появлСниСм Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΉ Ρ‚ΠΈΠΏΠΎΠ² Π² Python 3.5 Π² PEP 8 Π±Ρ‹Π»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΠΈΡ… ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΡŽ.

Π’ Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² PEP 8, ΠΎΡ‚Ρ€Π°ΠΆΠ°ΡŽΡ‰ΠΈΡ… Π½ΠΎΠ²Ρ‹Π΅ возмоТности Python ΠΈ ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠ΅ΡΡ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ программирования. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ обновлСния, связанныС с асинхронным ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈΠ»ΠΈ Π½ΠΎΠ²Ρ‹ΠΌΠΈ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π°ΠΌΠΈ структурного ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½-ΠΌΠ°Ρ‚Ρ‡ΠΈΠ½Π³Π°, появившимися Π² Python 3.10.

Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ PEP 8 Π² своСй Ρ€Π°Π±ΠΎΡ‚Π΅?

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ PEP 8 Π² своСй Ρ€Π°Π±ΠΎΡ‚Π΅ (Π° Π²Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹!), Π²ΠΎΡ‚ нСсколько совСтов:


  • НачнитС с чтСния самого Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° PEP 8. Он написан понятным языком ΠΈ содСрТит ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ².
  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ инструмСнты автоматичСской ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΊΠΎΠ΄Π°, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ flake8 ΠΈΠ»ΠΈ pylint. Они ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π²Π°ΠΌ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ отклонСния ΠΎΡ‚ PEP 8.
  • НастройтС свой IDE ΠΈΠ»ΠΈ тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Π½Π° автоматичСскоС Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π² соотвСтствии с PEP 8.
  • ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒΠΉΡ‚Π΅ΡΡŒ! Π§Π΅ΠΌ большС Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΊΠΎΠ΄ Π² соотвСтствии с PEP 8, Ρ‚Π΅ΠΌ СстСствСннСС это Π±ΡƒΠ΄Π΅Ρ‚ для вас.

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ†Π΅Π»ΡŒ PEP 8 — Π½Π΅ ΡƒΡΠ»ΠΎΠΆΠ½ΠΈΡ‚ΡŒ Π²Π°ΡˆΡƒ Тизнь Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ, Π° ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ваш ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ ΠΈ понятным. Π­Ρ‚ΠΎ инвСстиция Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅ — ΠΊΠ°ΠΊ вашС собствСнноС, Ρ‚Π°ΠΊ ΠΈ Π²Π°ΡˆΠΈΡ… ΠΊΠΎΠ»Π»Π΅Π³, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с вашим ΠΊΠΎΠ΄ΠΎΠΌ.

PEP 8 ΠΈ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ Python

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ, Ρ‡Ρ‚ΠΎ влияниС PEP 8 Π²Ρ‹ΡˆΠ»ΠΎ Π΄Π°Π»Π΅ΠΊΠΎ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ ΠΌΠΈΡ€Π° Python. МногиС Π΄Ρ€ΡƒΠ³ΠΈΠ΅ языки программирования Π²Π΄ΠΎΡ…Π½ΠΎΠ²ΠΈΠ»ΠΈΡΡŒ ΠΈΠ΄Π΅Π΅ΠΉ Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ руководства ΠΏΠΎ ΡΡ‚ΠΈΠ»ΡŽ ΠΈ создали свои Π°Π½Π°Π»ΠΎΠ³ΠΈ. НапримСр, Π² ΠΌΠΈΡ€Π΅ JavaScript Π΅ΡΡ‚ΡŒ популярноС руководство ΠΏΠΎ ΡΡ‚ΠΈΠ»ΡŽ ΠΎΡ‚ Airbnb, Π° Π² Go стилистичСскиС ΠΏΡ€Π°Π²ΠΈΠ»Π° встроСны прямо Π² инструмСнты языка.

Π­Ρ‚ΠΎ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, насколько Π²Π°ΠΆΠ½Π° идСя Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ стиля ΠΊΠΎΠ΄Π° для соврСмСнного программирования. Π’ ΠΌΠΈΡ€Π΅, Π³Π΄Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ПО — это ΠΏΠΎΡ‡Ρ‚ΠΈ всСгда ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹ΠΉ процСсс, ΡƒΠΌΠ΅Π½ΠΈΠ΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π»Π΅Π³ΠΊΠΎ Ρ‡ΠΈΡ‚Π°ΡŽΡ‚ ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅, становится критичСски Π²Π°ΠΆΠ½Ρ‹ΠΌ Π½Π°Π²Ρ‹ΠΊΠΎΠΌ.

Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ, изучая ΠΈ примСняя PEP 8, Π²Ρ‹ Π½Π΅ просто ΡƒΡ‡ΠΈΡ‚Π΅ΡΡŒ ΠΏΠΈΡΠ°Ρ‚ΡŒ красивый ΠΊΠΎΠ΄ Π½Π° Python. Π’Ρ‹ осваиваСтС ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π½Π°Π²Ρ‹ΠΊ создания Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΈ понятного ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ пригодится Π²Π°ΠΌ нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Π½Π° ΠΊΠ°ΠΊΠΎΠΌ языкС Π²Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅Ρ‚Π΅.

Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ², PEP 8 — это Π½Π΅ просто Π½Π°Π±ΠΎΡ€ ΠΏΡ€Π°Π²ΠΈΠ». Π­Ρ‚ΠΎ философия, ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ написанию ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ставит Π²ΠΎ Π³Π»Π°Π²Ρƒ ΡƒΠ³Π»Π° ΡΡΠ½ΠΎΡΡ‚ΡŒ ΠΈ ΠΏΠΎΠ½ΡΡ‚Π½ΠΎΡΡ‚ΡŒ. И, слСдуя этой философии, Π²Ρ‹ Π½Π΅ просто ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚Π΅ свой ΠΊΠΎΠ΄ — Π²Ρ‹ ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚Π΅ΡΡŒ Π»ΡƒΡ‡ΡˆΠΈΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ.

Π‘ΡƒΠ΄ΡƒΡ‰Π΅Π΅ Python Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€ΠΈΠ·ΠΌΡƒ PEP: Π’Π΅Π½Π΄Π΅Π½Ρ†ΠΈΠΈ ΠΈ пСрспСктивы развития языка

Π§Ρ‚ΠΎ ΠΆΠ΄Π΅Ρ‚ Python Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ? Как Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒΡΡ этот популярный язык программирования? ΠžΡ‚Π²Π΅Ρ‚Ρ‹ Π½Π° эти вопросы ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ, изучая PEP — Python Enhancement Proposals. PEP — это Π½Π΅ просто сухиС тСхничСскиС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹, Π° настоящиС ΠΎΠΊΠ½Π° Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅ Python. Π”Π°Π²Π°ΠΉΡ‚Π΅ заглянСм Π² эти ΠΎΠΊΠ½Π° ΠΈ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Python Ρ‡Π΅Ρ€Π΅Π· 5, 10 ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ 20 Π»Π΅Ρ‚.


PEP ΠΊΠ°ΠΊ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ‚Ρ€Π΅Π½Π΄ΠΎΠ²

PEP — это своСобразный Π±Π°Ρ€ΠΎΠΌΠ΅Ρ‚Ρ€ настроСний Π² сообщСствС Python. Анализируя послСдниС PEP, ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ нСсколько ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΉ развития языка:

  1. Π£Π»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ
  2. Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ возмоТностСй статичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ
  3. Π£ΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΠ΅ асинхронного программирования
  4. Π£Π»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ инструмСнтов для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ
  5. ΠŸΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ бСзопасности

Рассмотрим ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ· этих Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΉ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅.

Погоня Π·Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ: Python становится быстрСС

Одна ΠΈΠ· Π³Π»Π°Π²Π½Ρ‹Ρ… ΠΊΡ€ΠΈΡ‚ΠΈΠΊ Python всСгда касалась Π΅Π³ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Но создатСли языка Π½Π΅ сидят слоТа Ρ€ΡƒΠΊΠΈ. PEP 659, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ спСциализированныС Π°Π΄Π°ΠΏΡ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°. А ΠΊΠ°ΠΊ насчСт PEP 624, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Π²ΠΎΠ΄ΠΈΡ‚ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ Ρ†Π΅ΠΏΠΎΡ‡Π΅ΠΊ сравнСний? Π­Ρ‚ΠΈ PEP — лишь Π²Π΅Ρ€Ρ…ΡƒΡˆΠΊΠ° айсбСрга Π² стрСмлСнии ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Python быстрСС.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ сСбС Python, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚Π°ΠΊ ΠΆΠ΅ быстро, ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ языки. Π—Π²ΡƒΡ‡ΠΈΡ‚ фантастично? Но ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΊ этому стрСмятся Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ. И ΠΊΡ‚ΠΎ Π·Π½Π°Π΅Ρ‚, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· дСсяток Π»Π΅Ρ‚ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Python Ρ‚Π°ΠΌ, Π³Π΄Π΅ сСйчас примСняСм C++ ΠΈΠ»ΠΈ Rust.

БтатичСская типизация: Python ΠΎΠ±Ρ€Π΅Ρ‚Π°Π΅Ρ‚ ΡΡ‚Ρ€ΠΎΠ³ΠΎΡΡ‚ΡŒ

Python всСгда Π±Ρ‹Π» динамичСски Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ языком, Π½ΠΎ Ρ‚Ρ€Π΅Π½Π΄ Π½Π° ΡΡ‚Π°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΡŽ Π½Π°Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΎΠ±ΠΎΡ€ΠΎΡ‚Ρ‹. PEP 484 Π²Π²Π΅Π» подсказки Ρ‚ΠΈΠΏΠΎΠ², Π° ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ PEP (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, PEP 563 ΠΈ PEP 649) Ρ€Π°ΡΡˆΠΈΡ€ΡΡŽΡ‚ ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ°ΡŽΡ‚ эту систСму.

Π—Π°Ρ‡Π΅ΠΌ это Π½ΡƒΠΆΠ½ΠΎ? БтатичСская типизация ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ ошибки Π½Π° этапС написания ΠΊΠΎΠ΄Π°, ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΈ позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ эффСктивныС инструмСнты Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ сСбС IDE, которая ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚ ваш ΠΊΠΎΠ΄ Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ Π²Ρ‹ сами!

Но Π½Π΅ прСвратится Π»ΠΈ Python Π² ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ Java ΠΈΠ»ΠΈ C#? Π­Ρ‚ΠΎ маловСроятно. Π‘ΠΊΠΎΡ€Π΅Π΅ всСго, ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, Π³Π΄Π΅ статичСская типизация Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ, Π½ΠΎ ΠΌΠΎΡ‰Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Π΅Π΅ Π²Ρ‹Π±Π΅Ρ€Π΅Ρ‚.

ΠΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΠΎΡΡ‚ΡŒ: Python учится ΠΆΠΎΠ½Π³Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ

АсинхронноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ стало Π½Π΅ΠΎΡ‚ΡŠΠ΅ΠΌΠ»Π΅ΠΌΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ соврСмСнной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΈ Python Π½Π΅ отстаСт. PEP 492 Π²Π²Π΅Π» ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова async ΠΈ await, Π° ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ PEP ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‚ ΡƒΠ»ΡƒΡ‡ΡˆΠ°Ρ‚ΡŒ эту систСму.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ сСбС Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅, Π³Π΄Π΅ написаниС асинхронного ΠΊΠΎΠ΄Π° Π² Python Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊ ΠΆΠ΅ просто, ΠΊΠ°ΠΊ ΠΈ синхронного. Π“Π΄Π΅ Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ ΠΊΠΎΡ€ΡƒΡ‚ΠΈΠ½Π°Ρ… ΠΈ event loop — всС это Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ «ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡ‚ΠΎΠΌ». PEP 678, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ввСсти Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ для обозначСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ Python станСт языком Π²Ρ‹Π±ΠΎΡ€Π° для создания высоконагруТСнных Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ микросСрвисов. ΠšΡ‚ΠΎ Π±Ρ‹ ΠΌΠΎΠ³ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎΠ± этом 20 Π»Π΅Ρ‚ Π½Π°Π·Π°Π΄?

Π Π°Π±ΠΎΡ‚Π° с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ: Python ΠΊΠ°ΠΊ ΡˆΠ²Π΅ΠΉΡ†Π°Ρ€ΡΠΊΠΈΠΉ Π½ΠΎΠΆ для data science

Python ΡƒΠΆΠ΅ стал Π΄Π΅-Ρ„Π°ΠΊΡ‚ΠΎ стандартом Π² ΠΌΠΈΡ€Π΅ data science ΠΈ машинного обучСния. Но Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π½Π΅ ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π½Π° достигнутом. PEP 646, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Π²ΠΎΠ΄ΠΈΡ‚ Π²Π°Ρ€ΠΈΠ°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Π΄ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΊΠΈ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ массивами Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ… Π²Ρ€ΠΎΠ΄Π΅ NumPy.

А Ρ‡Ρ‚ΠΎ Ссли Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ Python смоТСт эффСктивно Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ? Или автоматичСски Ρ€Π°ΡΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ²Π°Ρ‚ΡŒ вычислСния Π½Π° мноТСство машин? PEP 574 Π²Π²ΠΎΠ΄ΠΈΡ‚ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Π±ΡƒΡ„Π΅Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ основой для Ρ‚Π°ΠΊΠΈΡ… возмоТностСй.

Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ: Python становится ΠΊΡ€Π΅ΠΏΠΎΡΡ‚ΡŒΡŽ

Π’ ΠΌΠΈΡ€Π΅, Π³Π΄Π΅ ΠΊΠΈΠ±Π΅Ρ€Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ становится всС Π±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΠΎΠΉ, Python Π½Π΅ остаСтся Π² сторонС. PEP 578 Π²Π²ΠΎΠ΄ΠΈΡ‚ систСму Π°ΡƒΠ΄ΠΈΡ‚Π° ΠΈ Ρ…ΡƒΠΊΠΎΠ² бСзопасности, которая позволяСт ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ опасныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ сСбС Python, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ автоматичСски ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΠΉ ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ ΡƒΡ‚Π΅Ρ‡ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ язык Π΅Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ для ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

Π‘ΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄: ΠœΠΎΡΡ‚ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡ€ΠΎΡˆΠ»Ρ‹ΠΌ ΠΈ Π±ΡƒΠ΄ΡƒΡ‰ΠΈΠΌ

Одна ΠΈΠ· ΡΠΈΠ»ΡŒΠ½Ρ‹Ρ… сторон Python — это Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΊ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ совмСстимости. Но ΠΊΠ°ΠΊ язык ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ²ΠΎΠ»ΡŽΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Π½Π΅ ломая ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄? PEP 387 описываСт процСсс устарСвания ΠΈ удалСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π° PEP 5000 (ΡˆΡƒΡ‚Π»ΠΈΠ²Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€!) обсуТдаСт идСю «Python 6000» — гипотСтичСской вСрсии Python, которая ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ€ΡƒΡˆΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ Ρ€Π°Π΄ΠΈ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠΉ.

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ «Π΄Π²Π° Python» — классичСский, с ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ, ΠΈ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ, Π³Π΄Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ смогут ΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π΄ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ измСнСния.

ЭкосистСма: Python ΠΊΠ°ΠΊ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°

Python — это Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ язык, Π½ΠΎ ΠΈ ΠΎΠ±ΡˆΠΈΡ€Π½Π°Ρ экосистСма Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ инструмСнтов. PEP 517 ΠΈ PEP 518 ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ систСму сборки ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², Π° PEP 621 Π²Π²ΠΎΠ΄ΠΈΡ‚ Π½ΠΎΠ²Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Ρ„Π°ΠΉΠ»Π° pyproject.toml. Π­Ρ‚ΠΈ измСнСния ΠΌΠΎΠ³ΡƒΡ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈ распространСниС Python-ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π΅Ρ‰Π΅ ΠΏΡ€ΠΎΡ‰Π΅.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ сСбС Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅, Π³Π΄Π΅ установка любой Python-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ происходит ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ, Π±Π΅Π· ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² зависимостСй. Π“Π΄Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π»Π΅Π³ΠΊΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ для своСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ. PEP 582 ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², которая ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚ΡŒ нас ΠΊ этому Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌΡƒ.

ΠžΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅: Python ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ язык

Python ΡƒΠΆΠ΅ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ, Π½ΠΎ Π΅ΡΡ‚ΡŒ PEP, Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ язык Π΅Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ Π΄Ρ€ΡƒΠΆΠ΅Π»ΡŽΠ±Π½Ρ‹ΠΌ для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ². PEP 20, извСстный ΠΊΠ°ΠΊ «Π”Π·Π΅Π½ Python», ΡƒΠΆΠ΅ Π΄Π°Π²Π½ΠΎ являСтся руководством ΠΏΠΎ философии языка. Но Ρ‡Ρ‚ΠΎ Ссли Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ появятся PEP, ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ Π½Π° ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ ΠΎΠΏΡ‹Ρ‚Π° Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… программистов?

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ «ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ» ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° Python, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π°Π²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ понятныС сообщСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… ΠΈ подсказки ΠΏΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡŽ ΠΊΠΎΠ΄Π°.

Π’Ρ‹Π·ΠΎΠ²Ρ‹ ΠΈ прСпятствия

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΏΡƒΡ‚ΡŒ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π³Π»Π°Π΄ΠΊΠΈΠΌ. Python сталкиваСтся с рядом Π²Ρ‹Π·ΠΎΠ²ΠΎΠ²:

  • Как ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ простоту ΠΈ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ языка, добавляя Π½ΠΎΠ²Ρ‹Π΅ ΠΌΠΎΡ‰Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ?
  • Как ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ язык, Π½Π΅ ТСртвуя Π΅Π³ΠΎ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒΡŽ?
  • Как ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΠΏΠ»Π°Π²Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΌΠ΅ΠΆΠ΄Ρƒ вСрсиями языка?

Π­Ρ‚ΠΈ вопросы Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΎΠ±ΡΡƒΠΆΠ΄Π°ΡŽΡ‚ΡΡ Π² сообщСствС Python, ΠΈ Π±ΡƒΠ΄ΡƒΡ‰ΠΈΠ΅ PEP нСсомнСнно Π±ΡƒΠ΄ΡƒΡ‚ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Ρ‹ Π½Π° ΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅.

Π—Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ мысли

PEP — это Π½Π΅ просто тСхничСскиС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹. Π­Ρ‚ΠΎ ΠΎΠΊΠ½Π° Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅ Python, Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠΌ станСт этот язык Ρ‡Π΅Ρ€Π΅Π· Π³ΠΎΠ΄Ρ‹ ΠΈ дСсятилСтия. И судя ΠΏΠΎ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ Ρ‡Π΅Ρ€Π΅Π· эти ΠΎΠΊΠ½Π°, Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅ Python выглядит ярким ΠΈ Π·Π°Ρ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌ.

Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΡƒΡΠ»Ρ‹ΡˆΠΈΡ‚Π΅ ΠΎ Π½ΠΎΠ²ΠΎΠΌ PEP, Π½Π΅ ΡΠΏΠ΅ΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ эту Π½ΠΎΠ²ΠΎΡΡ‚ΡŒ. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΈΠΌΠ΅Π½Π½ΠΎ этот PEP ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚, ΠΊΠ°ΠΊ Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· нСсколько Π»Π΅Ρ‚. А ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, Π²Ρ‹ сами Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ PEP ΠΈ внСсти свой Π²ΠΊΠ»Π°Π΄ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅ Python. Π’Π΅Π΄ΡŒ PEP — это Π½Π΅ просто ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡŽ Python. PEP — это ваш шанс ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π° Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· самых популярных языков программирования Π² ΠΌΠΈΡ€Π΅.

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *