самый большой ΠΊΠΎΠ΄ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅

Как Π² Python Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΎΡ‡Π΅Π½ΡŒ Π΄Π»ΠΈΠ½Π½Ρ‹Π΅ числа Ρ‚ΠΈΠΏΠ° integer?

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ для студСнтов курса Β«Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ PythonΒ».

Но Π² Python ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это ΠΏΡ€ΠΎΡ‰Π΅ простого:

Π”ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡ‚ΠΎΠΌ Python Π΄Π΅Π»Π°Π΅Ρ‚ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ красивоС ΠΈ сСгодня ΠΌΡ‹ ΡƒΠ·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°!

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅

Integer Π² Python это структура C, опрСдСлСнная ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π”Ρ€ΡƒΠ³ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΅ΡΡ‚ΡŒ PyObject_VAR_HEAD :

Π Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠ° ob_digit

Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π² Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Ρ… языках, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π‘, Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ Ρ†Π΅Π»Ρ‹Ρ… чисСл ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° 64-Π±ΠΈΡ‚Π°ΠΌΠΈ, ΠΎΠ΄Π½Π°ΠΊΠΎ Python ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ†Π΅Π»Ρ‹Π΅ числа ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΉ точности. Начиная с вСрсии Python 3, всС числа прСдставлСны Π² Π²ΠΈΠ΄Π΅ bignum ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ доступной ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ систСмы.

Π Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠ° ob_size

Π₯Ρ€Π°Π½Π΅Π½ΠΈΠ΅

Π‘Π°ΠΌΡ‹ΠΉ Π½Π°ΠΈΠ²Π½Ρ‹ΠΉ способ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ числа Ρ‚ΠΈΠΏΠ° integer – это Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΎΠ΄Π½Ρƒ Π΄Π΅ΡΡΡ‚ΠΈΡ‡Π½ΡƒΡŽ Ρ†ΠΈΡ„Ρ€Ρƒ Π² ΠΎΠ΄Π½ΠΎΠΌ элСмСнтС массива, Ρ‚ΠΎΠ³Π΄Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ слоТСниС ΠΈ Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅, ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΏΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ ΠΈΠ· Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ ΡˆΠΊΠΎΠ»Ρ‹.

Π‘ Ρ‚Π°ΠΊΠΈΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠΌ число 5238 Π±ΡƒΠ΄Π΅Ρ‚ сохранСно Ρ‚Π°ΠΊ:

самый большой ΠΊΠΎΠ΄ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ самый большой ΠΊΠΎΠ΄ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ самый большой ΠΊΠΎΠ΄ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ самый большой ΠΊΠΎΠ΄ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π€ΠΎΡ‚ΠΎ самый большой ΠΊΠΎΠ΄ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅

Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ нСэффСктивСн, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΎ 32-Π±ΠΈΡ‚ Ρ†ΠΈΡ„Ρ€ (uint32_t) для хранСния дСсятичной Ρ†ΠΈΡ„Ρ€Ρ‹, которая, ΠΏΠΎ сути, колСблСтся ΠΎΡ‚ 0 Π΄ΠΎ 9 ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ прСдставлСна всСго лишь 4 Π±ΠΈΡ‚Π°ΠΌΠΈ, вСдь ΠΏΡ€ΠΈ написании Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ ΡΡ‚ΠΎΠ»ΡŒ ΠΆΠ΅ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ python, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ядра Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π΅Ρ‰Π΅ ΠΈΠ·ΠΎΠ±Ρ€Π΅Ρ‚Π°Ρ‚Π΅Π»ΡŒΠ½Π΅Π΅.

Π˜Ρ‚Π°ΠΊ, ΠΌΠΎΠΆΠ΅ΠΌ Π»ΠΈ ΠΌΡ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π»ΡƒΡ‡ΡˆΠ΅? ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΈΠ½Π°Ρ‡Π΅ я Π±Ρ‹ Π½Π΅ Π²Ρ‹Π»ΠΎΠΆΠΈΠ» эту ΡΡ‚Π°Ρ‚ΡŒΡŽ. Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ рассмотрим Ρ‚ΠΎ, ΠΊΠ°ΠΊ Python Ρ…Ρ€Π°Π½ΠΈΡ‚ свСрхдлинноС Ρ†Π΅Π»ΠΎΠ΅ число.

ΠŸΡƒΡ‚ΡŒ Python

Π’ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠΉ систСмС счислСния, основаниС 16

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Python эффСктивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΠΎΡ‡Ρ‚ΠΈ всС Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ пространство Π² 32 Π±ΠΈΡ‚Π° Π½Π° ΠΎΠ΄Π½Ρƒ Ρ†ΠΈΡ„Ρ€Ρƒ, экономит рСсурсы ΠΈ всС Π΅Ρ‰Π΅ выполняСт простыС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ слоТСниС ΠΈ Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ ΡˆΠΊΠΎΠ»Ρ‹.

Π’ зависимости ΠΎΡ‚ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Python ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π»ΠΈΠ±ΠΎ 32-Π±ΠΈΡ‚Π½Ρ‹Π΅ цСлочислСнныС Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹Π΅ массивы, Π»ΠΈΠ±ΠΎ 16-Π±ΠΈΡ‚Π½Ρ‹Π΅ цСлочислСнныС Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹Π΅ массивы с 15-Π±ΠΈΡ‚Π½Ρ‹ΠΌΠΈ Ρ†ΠΈΡ„Ρ€Π°ΠΌΠΈ. Для выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ рассмотрСны дальшС, понадобится всСго нСсколько Π±ΠΈΡ‚ΠΎΠ².

1152921504606846976 = 1 * (2 30 ) 2 + 0 * (2 30 ) 1 + 0 * (2 30 ) 0

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ob_digit ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Ρ…Ρ€Π°Π½ΠΈΡ‚ Π½Π°ΠΈΠΌΠ΅Π½Π΅Π΅ Π·Π½Π°Ρ‡Π°Ρ‰ΡƒΡŽ Ρ†ΠΈΡ„Ρ€Ρƒ, ΠΎΠ½ΠΎ сохраняСтся ΠΊΠ°ΠΊ 001 Π² Π²ΠΈΠ΄Π΅ Ρ‚Ρ€Π΅Ρ… Ρ†ΠΈΡ„Ρ€.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° _longobject для этого значСния Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ:

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΌΠΈ числами Ρ‚ΠΈΠΏΠ° integer

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Ρƒ нас Π΅ΡΡ‚ΡŒ Ρ‡Π΅Ρ‚ΠΊΠΎΠ΅ прСдставлСниС ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Python Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ Ρ†Π΅Π»Ρ‹Π΅ числа ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΉ точности, настало врСмя ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ с Π½ΠΈΠΌΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ матСматичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

Π‘Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅

Π¦Π΅Π»Ρ‹Π΅ числа хранятся Β«Π² Ρ†ΠΈΡ„Ρ€Π°Ρ…Β», это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ слоТСниС выполняСтся Ρ‚Π°ΠΊΠΆΠ΅ просто, ΠΊΠ°ΠΊ Π² Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ школС, ΠΈ исходный ΠΊΠΎΠ΄ Python ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π°ΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ слоТСниС ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ. Ѐункция с ΠΈΠΌΠ΅Π½Π΅ΠΌ x_add Π² Ρ„Π°ΠΉΠ»Π΅ longobject.c выполняСт слоТСниС Π΄Π²ΡƒΡ… чисСл.

Π’Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅

Подобно Ρ‚ΠΎΠΌΡƒ, ΠΊΠ°ΠΊ происходит слоТСниС, происходит ΠΈ Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅. Ѐункция с ΠΈΠΌΠ΅Π½Π΅ΠΌ x_sub Π² Ρ„Π°ΠΉΠ»Π΅ longobject.c выполняСт Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ числа ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ.

Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅

И снова ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Ρ‚Π΅ΠΌ ΠΆΠ΅ Π½Π°ΠΈΠ²Π½Ρ‹ΠΌ способом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ ΡƒΠ·Π½Π°Π»ΠΈ ΠΈΠ· ΡƒΡ€ΠΎΠΊΠΎΠ² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ Π² Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ школС, Π½ΠΎ ΠΎΠ½ Π½Π΅ отличаСтся ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒΡŽ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ, Python Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠšΠ°Ρ€Π°Ρ†ΡƒΠ±Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΌΠ½ΠΎΠΆΠ°Π΅Ρ‚ Π΄Π²Π° n-Π·Π½Π°Ρ‡Π½Ρ‹Ρ… числа Π·Π° O( n log 2 3 ) простых шагов.

Π”Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Ρ†Π΅Π»Ρ‹Ρ… чисСл

Π­Ρ‚ΠΎ вторая ΡΡ‚Π°Ρ‚ΡŒΡ ΠΈΠ· сСрии Python Internals. ΠŸΠ΅Ρ€Π²Π°Ρ ΡΡ‚Π°Ρ‚ΡŒΡ Π±Ρ‹Π»Π° ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ я ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ» свою Π²Π΅Ρ€ΡΠΈΡŽ Python, сдСлав Π΅Π³ΠΎ двусмыслСнным. Она ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ шаги Π² ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ исходного ΠΊΠΎΠ΄Π° Python ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ ΠΏΡƒΡ‚ΡŒ ΠΊ ΡΡ‚Π°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡŽ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ ядра Python.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π¨ΠΏΠ°Ρ€Π³Π°Π»ΠΊΠΈ ΠΏΠΎ Python β€” хитрости ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅!

самый большой ΠΊΠΎΠ΄ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ самый большой ΠΊΠΎΠ΄ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ самый большой ΠΊΠΎΠ΄ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ самый большой ΠΊΠΎΠ΄ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π€ΠΎΡ‚ΠΎ самый большой ΠΊΠΎΠ΄ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅

МногиС люди Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ ΠΏΠ΅Ρ€Π΅Π΅Π·ΠΆΠ°Ρ‚ΡŒ с вСрсии 2 Π½Π° 3 ΠΈΠ·-Π·Π° Python EOL (ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Python 2.7 ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ с 2020 Π³ΠΎΠ΄Π°). К соТалСнию, часто Python 3 выглядит ΠΊΠ°ΠΊ Python 2 со скобками. Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ я ΠΏΠΎΠΊΠ°ΠΆΡƒ нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Python 3, с Π½Π°Π΄Π΅ΠΆΠ΄ΠΎΠΉ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ это ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ ваши Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ ΠΈ Π±ΡƒΠ΄ΡƒΡ‰ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ.

Π•ΡΡ‚ΡŒ вопросы ΠΏΠΎ Python?

На нашСм Ρ„ΠΎΡ€ΡƒΠΌΠ΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Π΄Π°Ρ‚ΡŒ любой вопрос ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚ ΠΎΡ‚ всСго нашСго сообщСства!

Telegram Π§Π°Ρ‚ & Канал

ВступитС Π² наш Π΄Ρ€ΡƒΠΆΠ½Ρ‹ΠΉ Ρ‡Π°Ρ‚ ΠΏΠΎ Python ΠΈ Π½Π°Ρ‡Π½ΠΈΡ‚Π΅ ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ с Π΅Π΄ΠΈΠ½ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΠ°ΠΌΠΈ! Π‘Ρ‚Π°Π½ΡŒΡ‚Π΅ Ρ‡Π°ΡΡ‚ΡŒΡŽ большого сообщСства!

Паблик VK

Одно ΠΈΠ· самых Π±ΠΎΠ»ΡŒΡˆΠΈΡ… сообщСств ΠΏΠΎ Python Π² ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ сСти Π’Πš. Π’ΠΈΠ΄Π΅ΠΎ ΡƒΡ€ΠΎΠΊΠΈ ΠΈ ΠΊΠ½ΠΈΠ³ΠΈ для вас!

ВсС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ написаны Π² Python 3.7 ΠΈ каТдая функция содСрТит ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Python для этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

F-строки (Python 3.6+)

Π‘Π»ΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Π»ΠΈΠ±ΠΎ Π±Π΅Π· строк Π² Python ΠΈ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π°Π΄Π΅ΠΊΠ²Π°Ρ‚Π½ΠΎΡΡ‚ΡŒ, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ структурированный способ Ρ€Π°Π±ΠΎΡ‚Ρ‹ со строками. Π‘ΠΎΠ»ΡŒΡˆΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ людСй, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… с Python, ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ format python.

Pathlib (Python 3.4+)

F-строки β€” это ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, Π½ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ строки, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΏΡƒΡ‚ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΈΠΌΠ΅ΡŽΡ‚ свои собствСнныС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ. Python 3 прСдоставляСт pathlib Π² качСствС ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ абстракции для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с путями Ρ„Π°ΠΉΠ»ΠΎΠ².

Подсказки Ρ‚ΠΈΠΏΠΎΠ² | ОТиданиС Ρ‚ΠΈΠΏΠ° | Type hinting (Python 3.5+)

Π‘ΠΏΠΎΡ€ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΎΠ΅ Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ python Π»ΡƒΡ‡ΡˆΠ΅ β€” статичСскоС ΠΈΠ»ΠΈ динамичСскоС β€” Π½Π΅ ΡƒΠΌΠΎΠ»ΠΊΠ°ΡŽΡ‚ ΠΈ ΠΏΠΎ сСй дСнь ΠΈ Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π΅ΡΡ‚ΡŒ своС ΠΌΠ½Π΅Π½ΠΈΠ΅ Π½Π° этот счСт. Π­Ρ‚ΠΎ Π»ΠΈΡ‡Π½ΠΎΠ΅ Π΄Π΅Π»ΠΎ читатСля β€” ΠΊΠΎΠ³Π΄Π° Π΅ΠΌΡƒ Π½ΡƒΠΆΠ½ΠΎ Π²ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏΡ‹, Π½ΠΎ ΠΌΠ½Π΅ каТСтся Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π½Π°Ρ‚ΡŒ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Python 3 ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ подсказки Ρ‚ΠΈΠΏΠΎΠ².

ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΡ enum (Python 3.4+)

Python 3 ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ простой способ написания пСрСчислСний Ρ‡Π΅Ρ€Π΅Π· класс Enum. Π­Ρ‚ΠΎΡ‚ класс ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π²Π°Ρ‚ΡŒ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ способом инкапсуляции списка констант, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ Π½Π΅ Π±Ρ‹Π»ΠΈ разбросаны ΠΏΠΎ всСму ΠΊΠΎΠ΄Ρƒ Π±Π΅Π· структуры.

ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΠ΅ β€” это Π½Π°Π±ΠΎΡ€ символичСских ΠΈΠΌΠ΅Π½ (Ρ‡Π»Π΅Π½ΠΎΠ²), связанных ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ, постоянным Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ. Π‘ пСрСчислСниСм, Ρ‡Π»Π΅Π½Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ ΠΏΠΎ идСнтичности, Π° само пСрСчислСниС ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒΡΡ.

ВстроСнный LRU кэш (Python 3.2+)

Π’Π½ΠΈΠ·Ρƒ ΠΏΠΎΠΊΠ°Π·Π°Π½Π° простая функция Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ, которая, ΠΊΠ°ΠΊ ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ, Π²Ρ‹ΠΈΠ³Ρ€Π°Π΅Ρ‚ ΠΎΡ‚ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ выполняСт ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρƒ нСсколько Ρ€Π°Π· Ρ‡Π΅Ρ€Π΅Π· Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΡŽ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ lru_cache для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ (эта Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ называСтся мСморизация). ВрСмя выполнСния Π²Π°Ρ€ΡŒΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΡ‚ сСкунд Π΄ΠΎ наносСкунд.

ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΠ΅ΠΌΠ°Ρ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Π°Ρ распаковка (Python 3.0+)

Π—Π΄Π΅ΡΡŒ ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ сам Π·Π° сСбя (докумСнтация):

ΠšΠ»Π°ΡΡΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… (Python 3.7+)

Π’Π° ΠΆΠ΅ рСализация класса Armor ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ классов Π΄Π°Π½Π½Ρ‹Ρ….

ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²Π° ΠΈΠΌΠ΅Π½ (Python 3.3+)

Один ΠΈΠ· способов структуризации ΠΊΠΎΠ΄Π° Python Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ… (ΠΏΠ°ΠΏΠΊΠΈ с Ρ„Π°ΠΉΠ»ΠΎΠΌ __init__.py ). ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π½ΠΈΠΆΠ΅ прСдоставлСн ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ Python.

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

ПодвСдСм ΠΈΡ‚ΠΎΠ³ΠΈ

Как ΠΈ практичСски любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ список Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅, этот нСльзя Π½Π°Π·Π²Π°Ρ‚ΡŒ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ‹ΠΌ. НадСюсь Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π²Ρ‹ нашли хотя Π±Ρ‹ ΠΎΠ΄Π½Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Python 3, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ Ρ€Π°Π½Π΅Π΅ Π½Π΅ пользовались, ΠΈ это ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ чистый ΠΈ ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΊΠΎΠ΄.

самый большой ΠΊΠΎΠ΄ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ самый большой ΠΊΠΎΠ΄ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ самый большой ΠΊΠΎΠ΄ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ самый большой ΠΊΠΎΠ΄ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π€ΠΎΡ‚ΠΎ самый большой ΠΊΠΎΠ΄ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅

Являюсь администратором Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠΎΡ€Ρ‚Π°Π»ΠΎΠ² ΠΏΠΎ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΡŽ языков программирования Python, Golang ΠΈ Kotlin. Π’ составС нСбольшой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π΅Π΄ΠΈΠ½ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΠΎΠ², ΠΌΡ‹ занимаСмся популяризациСй языков программирования Π½Π° Ρ€ΡƒΡΡΠΊΠΎΡΠ·Ρ‹Ρ‡Π½ΡƒΡŽ Π°ΡƒΠ΄ΠΈΡ‚ΠΎΡ€ΠΈΡŽ. Π‘ΠΎΠ»ΡŒΡˆΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ статСй Π±Ρ‹Π»Π° Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π° Π½Π°ΠΌΠΈ Π½Π° русский язык ΠΈ распространяСтся бСсплатно.

E-mail: vasile.buldumac@ati.utm.md

ΠžΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅
Universitatea Tehnică a Moldovei (utm.md)

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠŸΡƒΡ‚Π΅Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ ΠΏΠΎ Python. ПишСм Π²Π΅Π»ΠΈΠΊΠΎΠ»Π΅ΠΏΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄

Kenneth Reitz Π½Π° PyCon Π² Австралии (2012)

самый большой ΠΊΠΎΠ΄ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ самый большой ΠΊΠΎΠ΄ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ самый большой ΠΊΠΎΠ΄ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ самый большой ΠΊΠΎΠ΄ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π€ΠΎΡ‚ΠΎ самый большой ΠΊΠΎΠ΄ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ свой ΠΏΡ€ΠΎΠ΅ΠΊΡ‚

Под структурой ΠΌΡ‹ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π’Ρ‹ приняли Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π’Π°Ρˆ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ смоТСт Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ поставлСнных Ρ†Π΅Π»Π΅ΠΉ. ΠœΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°ΠΊ Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ особСнности языка Python, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΈΡΠ°Ρ‚ΡŒ чистый ΠΈ эффСктивный ΠΊΠΎΠ΄. Π‘ практичСской Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния, понятиС «структура» ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ созданиС (написаниС) чистого ΠΊΠΎΠ³Π΄Π° Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ, Π»ΠΎΠ³ΠΈΠΊΠ° ΠΈ зависимости Ρ‚Π°ΠΊ ΠΆΠ΅ ясны ΠΊΠ°ΠΊ организация Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΏΠ°ΠΏΠΎΠΊ Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС.

КакиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½Ρ‹ Π² ΠΊΠ°ΠΊΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ? Как ΠΏΠΎΠΉΠ΄Π΅Ρ‚ ΠΏΠΎΡ‚ΠΎΠΊ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€ΠΎΠ΅ΠΊΡ‚? КакиС особСнности ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ сгруппированы вмСстС ΠΈ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹? ΠžΡ‚Π²Π΅Ρ‡Π°Ρ Π½Π° ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ вопросы, Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚.

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

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Ρ€Π΅ΡˆΠ°Π΅Ρ‚

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

ΠœΠΎΠ΄ΡƒΠ»ΠΈ

ΠœΠΎΠ΄ΡƒΠ»ΠΈ Π² Python ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· основных слоСв абстракции ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ доступны, ΠΈ, вСроятно, ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ для языка. Π£Ρ€ΠΎΠ²Π½ΠΈ абстракции ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ Π½Π° части ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ содСрТащиС ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π».

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ стиля руководства, ΡΡ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ Π΄Π°Π²Π°Ρ‚ΡŒ модулям ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π°, содСрТащиС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±ΡƒΠΊΠ²Ρ‹ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ рСгистра ΠΈ ΡƒΠ²Π΅Ρ€ΡΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π’Ρ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ символы, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Ρ‚ΠΎΡ‡ΠΊΠ° (.) ΠΈΠ»ΠΈ Π·Π½Π°ΠΊ вопроса (?). Π’Π°ΠΊ ΠΊΠ°ΠΊ имя Ρ„Π°ΠΉΠ»Π° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ my.spam.py, Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ. ИмСнованиС Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠ΅ΡˆΠ°Ρ‚ΡŒ Python ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ.

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Python ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ Π½Π°ΠΉΡ‚ΠΈ » spam.py » Π² ΠΏΠ°ΠΏΠΊΠ΅ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ » my «, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π΅ сущСствуСт. БущСствуСт ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ точСчная нотация Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ использована Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ… Python.

Помимо Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ имСнования, Π½ΠΈΡ‡Π΅Π³ΠΎ большС Π½Π΅ трСбуСтся Ρ„Π°ΠΉΠ»Ρƒ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΡ‚Π°Ρ‚ΡŒ Python-ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ, Π½ΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эту ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ.

ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ module.py Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΉΠ΄Π΅Π½, ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Python Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π² ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ области видимости. Π›ΡŽΠ±ΠΎΠ΅ объявлСниС Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня Π² Ρ„Π°ΠΉΠ»Π΅ module.py Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚Ρ‹, Ссли Ρ‚Π°ΠΊΠΎΠ²Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ. ОбъявлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ классов сохранятся Π² ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ модуля.

Π—Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ модуля, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ классы Π±ΡƒΠ΄ΡƒΡ‚ доступны для Π²Ρ‹Π·ΠΎΠ²Π° Ρ‡Π΅Ρ€Π΅Π· пространство ΠΈΠΌΠ΅Π½ модуля β€” Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠ΅ понятиС Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ особСнно ΠΌΠΎΡ‰Π½ΠΎ ΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π² языкС Python.

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

ИспользованиС from module import func это способ Ρ‚ΠΎΡ‡Π½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости. А Ρ‚Π°ΠΊ ΠΆΠ΅ это ΠΌΠ΅Π½Π΅Π΅ Π²Ρ€Π΅Π΄Π½ΠΎ для ΠΊΠΎΠ΄Π° Π½Π΅ΠΆΠ΅Π»ΠΈ » import * «, Ρ‚.ΠΊ. Ρ‚ΡƒΡ‚ ясно Π²ΠΈΠ΄Π½ΠΎ Ρ‡Ρ‚ΠΎ импортируСтся Π² Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости, прСимущСство Π±ΠΎΠ»Π΅Π΅ простой записи import module Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² экономии Π½Π°ΠΆΠ°Ρ‚ΠΈΠΉ клавиш.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Python с Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠ³ΠΎ нуля. Учимся ΠΊΠΎΠ΄ΠΈΡ‚ΡŒ Π±Π΅Π· скучных ΠΊΠ½ΠΈΠΆΠ΅ΠΊ

самый большой ΠΊΠΎΠ΄ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ самый большой ΠΊΠΎΠ΄ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ самый большой ΠΊΠΎΠ΄ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ самый большой ΠΊΠΎΠ΄ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π€ΠΎΡ‚ΠΎ самый большой ΠΊΠΎΠ΄ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ

ΠžΡ‚ Ρ€Π΅Π΄Π°ΠΊΡ†ΠΈΠΈ

НС­дав­но ΠΌΡ‹ ΠΏΡ€ΠΎΒ­Π²ΠΎΠ΄ΠΈΒ­Π»ΠΈ опрос ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΎΠΉ курс ΠΏΠΎ Python Π±Ρ‹Π» Π±Ρ‹ интС­рСс­нСС читатС­лям. Π”Π²Π΅ ΠΏΠ΅Ρ€Β­Π²Ρ‹Π΅ строч­ки с боль­шим ΠΎΡ‚Ρ€Ρ‹Β­Π²ΠΎΠΌ Π² Π½Π΅ΠΌ заняли Π²Π°Ρ€ΠΈΒ­Π°Π½Ρ‚Ρ‹ «для Ρ…Π°ΠΊΠ΅Ρ€Π°Β» ΠΈ Β«Python с нуля». Π£Π·Π½Π°Π² ΠΎ Ρ‚Π°ΠΊΠΎΠΌ ΠΏΠΎΠ»ΠΎΠΆΠ΅Β­Π½ΠΈΠΈ Π΄Π΅Π», ΠΌΡ‹ Π½Π΅ΠΌΠ΅Π΄Β­Π»Π΅Π½Π½ΠΎ Π·Π°ΠΊΠ°Π·Π°Β­Π»ΠΈ ΡΡ‚Π°Ρ‚ΡŒΡŽ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Β­Ρ€Π°ΠΌΠΌΠΈΒ­Ρ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Python. Если ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ успСх, Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π²Β­Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΒ­ΡΡ Π² Ρ†Π΅Π»ΡƒΡŽ ΡΠ΅Ρ€ΠΈΡŽ. ΠžΡ‚Π»ΠΈΒ­Ρ‡ΠΈΠ΅ нашСго ΠΏΠΎΠ΄Β­Ρ…ΠΎΠ΄Π° β€” Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ объ­ясня­См всС ΠΆΠΈΠ²Ρ‹ΠΌ язы­ком ΠΈ Π΄Π°Π΅ΠΌ нСс­кучныС ΠΏΡ€ΠΈΒ­ΠΌΠ΅Ρ€Ρ‹. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, ΠΎΠ±ΡƒΒ­Ρ‡Π΅Π½ΠΈΠ΅ Π² Ρ„ΠΈΡ€Β­ΠΌΠ΅Π½Π½ΠΎΠΌ сти­лС Β«Π₯Π°ΠΊΠ΅Ρ€Π°Β»!

И, ΠΏΠΎΡΒ­ΠΊΠΎΠ»ΡŒΒ­ΠΊΡƒ это экспС­римСнт, ΡΡ‚Π°Ρ‚ΡŒΡ дос­тупна Π±Π΅Π· ΠΏΠ»Π°Ρ‚Β­Π½ΠΎΠΉ под­писки.

Ес­ли Ρƒ тСбя Π½Π° ΠΊΠΎΠΌΒ­ΠΏΠ΅ Π΅ΡΡ‚ΡŒ сов­рСмСн­ный дис­три­бутив Linux, Ρ‚ΠΎ Π² Π½Π΅Π³ΠΎ ΡƒΠΆΠ΅ Π²Ρ…ΠΎΒ­Π΄ΠΈΡ‚ Python 3, Π° ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΠ΅Ρ€Β­Π²Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Β­Ρ€Π°ΠΌΠΌΡ‹ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄ΠΎΠ±Β­Π½ΠΎ Π² IDLE β€” прос­том Ρ€Π΅Π΄Π°ΠΊΒ­Ρ‚ΠΎΡ€Π΅ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ при­лага­Стся ΠΊ Python. Π’ Ubuntu, Ρ‡Ρ‚ΠΎΒ­Π±Ρ‹ ΡƒΡΡ‚Π°Β­Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ, Π½Π°Π±Π΅Ρ€ΠΈ Π² кон­соли

Π’ Windows ΠΏΡ€ΠΈ уста­нов­кС Python ΠΎΠ±ΡΒ­Π·Π°Ρ‚Π΅Π»ΡŒΒ­Π½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΡŒ Π½Π° ΠΏΠ΅Ρ€Β­Π²ΠΎΠΌ экра­нС уста­нов­щика Π³Π°Π»ΠΎΡ‡Β­ΠΊΡƒ Add to Path, Ρ‡Ρ‚ΠΎΒ­Π±Ρ‹ ΠΌΠΎΠΆΒ­Π½ΠΎ Π±Ρ‹Π»ΠΎ Π·Π°ΠΏΡƒΡΒ­ΠΊΠ°Ρ‚ΡŒ python3 ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Β­Π΄Π½ΠΎΠΉ стро­ки Π² любом ΡƒΠ΄ΠΎΠ±Β­Π½ΠΎΠΌ мСс­тС.

За­пус­тив IDLE, Π·Π°ΠΉΒ­Π΄ΠΈ Π² Options β†’ Configure IDLE, ΠΏΠ΅Ρ€Π΅ΠΉΒ­Π΄ΠΈ Π½Π° Π²ΠΊΠ»Π°Π΄Β­ΠΊΡƒ General ΠΈ ΠΏΠΎΡΒ­Ρ‚Π°Π²ΡŒ Π³Π°Π»ΠΎΡ‡Β­ΠΊΡƒ Π½Π° ΠΏΡƒΠ½Β­ΠΊΡ‚Π΅ Open Edit Window, Π½Π°ΠΆΒ­ΠΌΠΈ ОK ΠΈ пСрСза­пус­ти IDLE. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΒ­Π½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Β­Ρ€Π°ΠΌΠΌΡ‹, ΡΠΎΡ…Β­Ρ€Π°Π½ΡΡ‚ΡŒ ΠΈΡ… ΠΈ Π·Π°ΠΏΡƒΡΒ­ΠΊΠ°Ρ‚ΡŒ кла­вишСй F5. Ну Ρ‡Ρ‚ΠΎ, ΠΏΠΎΠ³Β­Π½Π°Π»ΠΈ?

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅

А Ссли ΠΈΠ·Π½Π°Β­Ρ‡Π°Π»ΡŒΒ­Π½ΠΎ нСиз­вСс­тно, ΠΊΠ°ΠΊΠΈΠ΅ чис­ла Π½Π°Π΄ΠΎ ΡΠΊΠ»Π°Β­Π΄Ρ‹Π²Π°Ρ‚ΡŒ? Π’ΠΎΠ³Β­Π΄Π° ΠΏΡ€ΠΈΡˆΒ­Π»ΠΎΡΡŒ Π±Ρ‹ спСр­ва ΠΏΠΎΠΏΒ­Ρ€ΠΎΡΠΈΡ‚ΡŒ ΡŽΠ·Π΅Β­Ρ€Π° ввСс­ти ΠΈΡ… Π² кон­соли ΠΈ Π½Π°ΠΆΠ°Ρ‚ΡŒ Enter. Π”Π°Π²Π°ΠΉ Ρ‚Π°ΠΊ ΠΈ сдС­лаСм:

Π’Π½ΡƒΡ‚Β­Ρ€ΠΈ ско­бочСк Ρƒ input Ρ‚Ρ‹ пишСшь пояс­нСниС для ΡŽΠ·Π΅Β­Ρ€Π°, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ½Β­ΠΊΡ€Π΅Ρ‚Β­Π½ΠΎ Π΅Π³ΠΎ про­сят ввСс­ти. Но Π²ΠΎΡ‚ Π±Π΅Π΄Π°, ΠΏΠΎ ΡƒΠΌΠΎΠ»Β­Ρ‡Π°Π½ΠΈΡŽ всС, Ρ‡Ρ‚ΠΎ вво­дит­ся Ρ‡Π΅Ρ€Π΅Π· input, счи­таСт­ся Π½Π΅ чис­лом, Π° стро­кой, поэто­му, ΠΏΡ€Π΅ΠΆΒ­Π΄Π΅ Ρ‡Π΅ΠΌ ΡΠΊΠ»Π°Β­Π΄Ρ‹Π²Π°Ρ‚ΡŒ количСс­тво Π»ΠΈΡ‚Β­Ρ€ΠΎΠ² ΠΏΠΈΠ²Π°, Π½ΡƒΠΆΒ­Π½ΠΎ сна­чала ΠΏΡ€Π΅Β­ΠΎΠ±Ρ€Π°Β­Π·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π²Π΅Β­Π΄Π΅Π½Β­Π½Ρ‹Π΅ стро­ки Π² чис­ла с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½Β­ΠΊΡ†ΠΈΠΈ int().

Π’ΠΎΒ­ΠΎΠ±Ρ‰Π΅, Ρ‚ΠΈΠΏΠΎΠ² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Β­Π½Ρ‹Ρ… ΠΌΠ½ΠΎΒ­Π³ΠΎ, Π½ΠΎ ΡΡƒΡ‚ΡŒ Ρ‚Ρ‹ ΡƒΠ»ΠΎΒ­Π²ΠΈΠ» β€” Ρ‡Ρ‚ΠΎΒ­Π±Ρ‹ ΠΏΡ€ΠΎΒ­ΠΈΠ·Π²ΠΎΒ­Π΄ΠΈΡ‚ΡŒ с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Β­Π½Ρ‹ΠΌΠΈ какиС‑то дСй­ствия, Π½ΡƒΠΆΒ­Π½ΠΎ ΠΈΡ… сна­чала при­вСс­ти ΠΊ ΠΎΠ΄Π½ΠΎΒ­ΠΌΡƒ Ρ‚ΠΈΠΏΡƒ β€” ΠΊ стро­ково­му, ΠΈΠ»ΠΈ ΠΊ чис­ловому, ΠΈΠ»ΠΈ Π΅Ρ‰Π΅ ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡƒβ€‘Π½ΠΈΠ±ΡƒΠ΄ΡŒ. Если с этим Π½Π΅ Π·Π°ΠΌΠΎΡ€Π°Β­Ρ‡ΠΈΠ²Π°Ρ‚ΡŒΒ­ΡΡ, Python сло­Тит Π½Π΅ чис­ла, Π° стро­ки ΠΈ Π²Π²Π΅Β­Π΄Π΅Π½Β­Π½Ρ‹Π΅ 2 ΠΈ 3 Π»ΠΈΡ‚Β­Ρ€Π° ΠΏΠΈΠ²Π° Π² сум­мС Π΄Π°Π΄ΡƒΡ‚ Π½Π΅ 5, Π° Ρ†Π΅Π»Ρ‹Ρ… 23. Π₯ΠΎΡ€ΠΎΡˆΠΎ Π±Ρ‹ Ρ‚Π°ΠΊ Π±Ρ‹Π»ΠΎ Π² Ρ€Π΅Π°Π»ΡŒΒ­Π½ΠΎΡΒ­Ρ‚ΠΈ!

Π’ΠΎΡ‚ Π΅Ρ‰Π΅ ΠΏΡ€ΠΈΒ­ΠΌΠ΅Ρ€Β­Ρ‡ΠΈΠΊ, Ρ€Π°ΡΒ­ΡΡ‡ΠΈΒ­Ρ‚Ρ‹Π²Π°Β­ΡŽΡ‰ΠΈΠΉ, сколь­ко Ρ‚Π΅Π±Π΅ Π΅Ρ‰Π΅ ΠΏΠΈΡ‚ΡŒ ΠΏΠΈΠ²ΠΎ, исхо­дя ΠΈΠ· срСд­нСй ΠΏΡ€ΠΎΒ­Π΄ΠΎΠ»Β­ΠΆΠΈΡ‚Π΅Π»ΡŒΒ­Π½ΠΎΡΒ­Ρ‚ΠΈ ΠΆΠΈΠ·Β­Π½ΠΈ Π² Рос­сии:

Условия

Π’ осно­вС любой ΠΏΡ€ΠΎΠ³Β­Ρ€Π°ΠΌΠΌΡ‹ Π»Π΅ΠΆΠ°Ρ‚ усло­вия. Π’ зависи­мос­ти ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Π²Ρ‹ΠΏΠΎΠ»Β­Π½ΡΡŽΡ‚Β­ΡΡ ΠΎΠ½ΠΈ ΠΈΠ»ΠΈ Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Β­Π½ΡΡŽΡ‚Β­ΡΡ, ΠΏΡ€ΠΎΠ³Β­Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΉΒ­Ρ‚ΠΈ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΒ­ΠΌΡƒ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΒ­Π³ΠΎΠΌΡƒ ΠΏΡƒΡ‚ΠΈ. ΠŸΡ€Π΅Π΄Β­ΡΡ‚Π°Π²ΡŒ, Ρ‚Ρ‹ СдСшь Π½Π° машинС ΠΈ ΡΠΌΠΎΡ‚Β­Ρ€ΠΈΡˆΡŒ Π½Π° часы: Ссли ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ Π΄Π΅ΡΡΡ‚ΡŒ Π²Π΅Ρ‡Π΅Ρ€Π°, Ρ‚ΠΎ ΠΏΠΎΠ²ΠΎΡ€Π°Β­Ρ‡ΠΈΠ²Π°Β­Π΅ΡˆΡŒ Π΄ΠΎΠΌΠΎΠΉ, Ссли Π½Π΅Ρ‚, Ρ‚ΠΎ ΠΌΠΎΠΆΒ­Π½ΠΎ Π·Π°Π΅Ρ…Π°Ρ‚ΡŒ Π² гос­ти. Π’ΠΎΡ‡Β­Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Β­Π΅Ρ‚ ΠΈ ΠΏΡ€ΠΎΠ³Β­Ρ€Π°ΠΌΠΌΠ°: про­вСря­Ст какоС‑то Π·Π½Π°Β­Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ сво­рачи­ваСт Ρ‚ΡƒΠ΄Π° ΠΈΠ»ΠΈ сюда ΠΈ выпол­няСт ΡΠΎΠΎΡ‚Β­Π²Π΅Ρ‚ΡΒ­Ρ‚Π²ΡƒΒ­ΡŽΡ‰ΠΈΠΉ кусочСк ΠΊΠΎΠ΄Π°.

Π‘Π»ΠΎΒ­ΠΊΠΈ ΠΊΠΎΠ΄Π° Π² Python ΠΎΡ‚Π΄Π΅Β­Π»Π°ΡŽΡ‚Β­ΡΡ отсту­пами. ΠžΡ‚ΡΡ‚ΡƒΠΏ Π½Π° самом Π΄Π΅Π»Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹ΠΌ, Π½Π°ΠΏΒ­Ρ€ΠΈΠΌΠ΅Ρ€ Π½Π΅ΠΊΠΎΡ‚ΠΎΒ­Ρ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄Β­ΠΏΠΎΡ‡ΠΈΡ‚Π°Β­ΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΒ­Π·ΠΎΠ²Π°Ρ‚ΡŒ вмСс­то Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… ΠΏΡ€ΠΎΒ­Π±Π΅Π»ΠΎΠ² ΠΊΠ»Π°Β­Π²ΠΈΡˆΡƒ Tab. Π“Π»Π°Π²Β­Π½ΠΎΠ΅ β€” Π½Π΅ ΡΠΌΠ΅Β­ΡˆΠΈΠ²Π°Ρ‚ΡŒ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Β­Ρ€Π°ΠΌΠΌΠ΅ отсту­пы Ρ€Π°Π·Β­Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. Если ΡƒΠΆ Π½Π°Ρ‡Π°Π» ΠΈΡΠΏΠΎΠ»ΡŒΒ­Π·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΏΡ€ΠΎΒ­Π±Π΅Π»Π°, Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΒ­Π·ΡƒΠΉ ΠΏΠΎ всСй ΠΏΡ€ΠΎΠ³Β­Ρ€Π°ΠΌΠΌΠ΅, Π° Ρ‚ΠΎ Python Π±ΡƒΠ΄Π΅Ρ‚ Π½Π° тСбя Ρ€ΡƒΠ³Π°Ρ‚ΡŒΒ­ΡΡ ΠΈ ΡƒΠ½ΠΈΒ­ΠΆΠ°Ρ‚ΡŒ.

Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Π²Π°ΠΆΒ­Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ здСсь β€” это Π·Π½Π°ΠΊ равСнс­тва Π² усло­вии. Он ΠΏΠΈΡˆΠ΅Ρ‚Β­ΡΡ ΠΊΠ°ΠΊ Π΄Π²ΠΎΠΉΒ­Π½ΠΎΠ΅ Β«Ρ€Π°Π²Β­Π½ΠΎΒ» ( == ) ΠΈ этим отли­чаСт­ся ΠΎΡ‚ прис­воСния β€” ΠΎΠ΄ΠΈΒ­Π½Π°Ρ€Β­Π½ΠΎΠ³ΠΎ Β«Ρ€Π°Π²Β­Π½ΠΎΒ».

Ѐун­кция lower(), ΠΏΡ€Π΅ΠΆΒ­Π΄Π΅ Ρ‡Π΅ΠΌ ΡΡ€Π°Π²Β­Π½ΠΈΠ²Π°Ρ‚ΡŒ усло­виС, Π΄Π΅Π»Π°Β­Π΅Ρ‚ всС Π±ΡƒΠΊΒ­Π²Ρ‹ Π² стро­кС малСнь­кими, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π³Π»ΡƒΒ­ΠΏΡ‹ΠΉ ΡŽΠ·Π΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ ввСс­ти сло­во YES с горящим Caps Lock, ΠΈ это Π½Π°Π΄ΠΎ ΠΏΡ€Π΅Β­Π΄ΡƒΡΒ­ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π·Π°Ρ€Π°Π½Π΅Π΅.

На самом Π΄Π΅Π»Π΅ lower( ) β€” Π½Π΅ прос­то фун­кция, Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ клас­са string (стро­ка). ИмСн­но поэто­му ΠΎΠ½ вызыва­Стся Ρ‡Π΅Ρ€Π΅Π· Ρ‚ΠΎΡ‡Β­ΠΊΡƒ пос­лС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Β­Π½ΠΎΠΉ, которая содСр­Тит стро­ку. О клас­сах ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΒ­Ρ€ΠΈΠΌ ΠΊΠ°ΠΊβ€‘Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π² Π΄Ρ€ΡƒΒ­Π³ΠΎΠΉ Ρ€Π°Π·, Π° ΠΏΠΎΠΊΠ° прос­то Π·Π°ΠΏΠΎΠΌΒ­Π½ΠΈ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΒ­Ρ€Ρ‹Π΅ Ρ„ΡƒΠ½Β­ΠΊΡ†ΠΈΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Β­ΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Β­Π·ΠΎΠΌ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Cython: Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ 30-ΠΊΡ€Π°Ρ‚Π½ΠΎΠ΅ ускорСниС Python-ΠΊΠΎΠ΄Π°

Python β€” это язык, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π»ΡŽΠ±ΡΡ‚ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ программисты. Π­Ρ‚ΠΈΠΌ языком нСвСроятно Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ. Всё Π΄Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄, написанный Π½Π° Python, отличаСтся ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎΠΉ ΠΏΠΎΠ½ΡΡ‚Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ. Однако Π² Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€Π°Ρ… ΠΎ Python часто ΠΌΠΎΠΆΠ½ΠΎ ΡΠ»Ρ‹ΡˆΠ°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ ΠΆΠ°Π»ΠΎΠ±Ρƒ Π½Π° этот язык. ОсобСнно Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΎ Python говорят Π·Π½Π°Ρ‚ΠΎΠΊΠΈ языка C. Π’ΠΎΡ‚ ΠΊΠ°ΠΊ ΠΎΠ½Π° Π·Π²ΡƒΡ‡ΠΈΡ‚: Β«Python β€” это ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΒ». И Ρ‚Π΅, ΠΊΡ‚ΠΎ Ρ‚Π°ΠΊ говорят, Π½Π΅ Π³Ρ€Π΅ΡˆΠ°Ρ‚ ΠΏΡ€ΠΎΡ‚ΠΈΠ² истины.

Π’ сравнСнии со ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ языками программирования Python β€” это, ΠΈ ΠΏΡ€Π°Π²Π΄Π°, ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ. Π’ΠΎΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ испытаний, Π² Ρ…ΠΎΠ΄Π΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… сопоставляСтся ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Ρ… языков программирования ΠΏΡ€ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡.

самый большой ΠΊΠΎΠ΄ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ самый большой ΠΊΠΎΠ΄ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ самый большой ΠΊΠΎΠ΄ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ самый большой ΠΊΠΎΠ΄ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π€ΠΎΡ‚ΠΎ самый большой ΠΊΠΎΠ΄ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅

Π•ΡΡ‚ΡŒ нСсколько способов ускорСния Python-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. НапримСр, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, рассчитанныС Π½Π° использованиС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ядСр процСссора. Π’Π΅ΠΌ, ΠΊΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Numpy, Pandas ΠΈΠ»ΠΈ Scikit-Learn, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΎΠ²Π΅Ρ‚ΠΎΠ²Π°Ρ‚ΡŒ Π²Π·Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ комплСкс Rapids, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ GPU ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ Π½Π°ΡƒΡ‡Π½Ρ‹Ρ… расчётов.

ВсС эти ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠΈ ускорСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ…ΠΎΡ€ΠΎΡˆΠΈ Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° Ρ€Π΅ΡˆΠ°Π΅ΠΌΡ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Python Π·Π°Π΄Π°Ρ‡ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ распараллСлСны. НапримСр β€” это Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΠΎ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°ΠΌΠΈ.

ΠžΡ‚Π²Π΅Ρ‚ Π½Π° этот вопрос Π΄Π°Ρ‘Ρ‚ Cython β€” ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄, написанный Π½Π° Python.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Cython?

Cython, ΠΏΠΎ своСй сути, это ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ слой ΠΌΠ΅ΠΆΠ΄Ρƒ Python ΠΈ C/C++. Cython позволяСт ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Python-ΠΊΠΎΠ΄ с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ модификациями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Ρ‚Π΅ΠΌ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ транслируСтся Π² C-ΠΊΠΎΠ΄.

ЕдинствСнноС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Python-ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΈ этом Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ± Π΅Ρ‘ Ρ‚ΠΈΠΏΠ΅. ΠŸΡ€ΠΈ написании ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π½Π° Python ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊ:

ΠŸΡ€ΠΈ использовании Cython ΠΏΡ€ΠΈ объявлСнии ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π΅Ρ‘ Ρ‚ΠΈΠΏ:

Π­Ρ‚Π° конструкция сообщаСт Cython ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ пСрСмСнная прСдставляСт собой число с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ. По Ρ‚Π°ΠΊΠΎΠΌΡƒ ΠΆΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ Π² C. ΠŸΡ€ΠΈ использовании ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ Python Ρ‚ΠΈΠΏΡ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ динамичСски. Π―Π²Π½ΠΎΠ΅ объявлСниС Ρ‚ΠΈΠΏΠΎΠ², примСняСмоС Π² Cython β€” это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Python-ΠΊΠΎΠ΄Π° Π² C-ΠΊΠΎΠ΄. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² C Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ явноС объявлСниС Ρ‚ΠΈΠΏΠΎΠ² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

Установка Cython ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ проста:

Π’ΠΈΠΏΡ‹ Π² Cython

ΠŸΡ€ΠΈ использовании Cython ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΄Π²Π° Π½Π°Π±ΠΎΡ€Π° Ρ‚ΠΈΠΏΠΎΠ². Один β€” для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π²Ρ‚ΠΎΡ€ΠΎΠΉ β€” для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

Если Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Ρ‘Ρ‚ ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Ρ‚ΠΎ Ρ‚ΡƒΡ‚ Π½Π°ΠΌ доступны ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹:

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с функциями Π½Π°ΠΌ доступны ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹:

УскорСниС ΠΊΠΎΠ΄Π° с использованиСм Cython

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π‘-ΠΊΠΎΠ΄ Π³ΠΎΡ‚ΠΎΠ² ΠΊ использованию.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ всё Π³ΠΎΡ‚ΠΎΠ²ΠΎ ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ нашСго свСрхбыстрого C-ΠΊΠΎΠ΄Π°. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½ ΠΊΠΎΠ΄, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для тСстирования ΠΈ сравнСния Π΄Π²ΡƒΡ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Код этот устроСн ΠΎΡ‡Π΅Π½ΡŒ просто. ΠœΡ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ β€” Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ Python-Ρ„Π°ΠΉΠ»Ρ‹, послС Ρ‡Π΅Π³ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, дСлая это Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Ссли Π±Ρ‹ ΠΌΡ‹ всё врСмя Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Π±Ρ‹ с ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ Python-функциями.

ВзглянитС Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ. МоТно Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Cython-вСрсия ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ оказываСтся быстрСй Π΅Ρ‘ Python-вСрсии Π²ΠΎ всСх случаях. Π§Π΅ΠΌ ΠΌΠ°ΡΡˆΡ‚Π°Π±Π½Π΅Π΅ Π·Π°Π΄Π°Ρ‡Π° β€” Ρ‚Π΅ΠΌ большС ΠΈ ускорСниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΄Π°Ρ‘Ρ‚ использованиС Cython.

Π§ΠΈΡΠ»ΠΎΠŸΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Python TimeΠŸΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Cython TimeΠŸΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Speedup
101.6689300537109375e-064.76837158203125e-073.5
1003.337860107421875e-064.76837158203125e-077.0
10002.193450927734375e-059.5367431640625e-0723.0
100000.00020909309387207036.4373016357421875e-0632.481
1000000.00215625762939453126.008148193359375e-0535.89
10000000.021287679672241210.000595331192016601635.75
100000000.21482801437377930.0059478282928466836.1187317112278

Π˜Ρ‚ΠΎΠ³ΠΈ

ИспользованиС Cython позволяСт Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ практичСски любой ΠΊΠΎΠ΄, написанный Π½Π° Python, Π½Π΅ прилагая ΠΊ этому особСнных усилий. Π§Π΅ΠΌ большС Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΈ Ρ‡Π΅ΠΌ большС Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ½Π° ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ β€” Ρ‚Π΅ΠΌ Π»ΡƒΡ‡ΡˆΠΈΡ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΆΠ΄Π°Ρ‚ΡŒ ΠΎΡ‚ примСнСния Cython.

Π£Π²Π°ΠΆΠ°Π΅ΠΌΡ‹Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΠΈ! Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ Cython Π² своих ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…?

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

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

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