Π Π°Π·Π½ΠΎΠ΅

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ python: ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π² Python

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

ЗаявлСниС, отступ ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π² Python

ЗаявлСния

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ, написанныС Π² исходном ΠΊΠΎΠ΄Π΅ для выполнСния, Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ. Π’ языкС программирования Python ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ присваивания, условный ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ зацикливания ΠΈ Ρ‚. Π”. ВсС ΠΎΠ½ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. НапримСр, n = 50 являСтся ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ присваивания.

ΠœΠ½ΠΎΠ³ΠΎΡΡ‚Ρ€ΠΎΡ‡Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹: ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π² Python ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Ρ‹ Π΄ΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… строк с использованиСм скобок (), Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобок {}, ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобок [], Ρ‚ΠΎΡ‡ΠΊΠΈ с запятой (;), косой Ρ‡Π΅Ρ€Ρ‚Ρ‹ продолТСния (/). Когда программисту Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΄Π»ΠΈΠ½Π½Ρ‹Π΅ вычислСния ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ свои ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π² ΠΎΠ΄Π½Ρƒ строку, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эти символы.
ΠŸΡ€ΠΈΠΌΠ΅Ρ€ :

Declared using Continuation Character (\):
s = 1 + 2 + 3 + \
    4 + 5 + 6 + \
    7 + 8 + 9

Declared using parentheses () :
n = (1 * 2 * 3 + 7 + 8 + 9)

Declared using square brackets [] :
footballer = ['MESSI',
          'NEYMAR',
          'SUAREZ']

Declared using braces {} :
x = {1 + 2 + 3 + 4 + 5 + 6 +
     7 + 8 + 9}

Declared using semicolons(;) :
flag = 2; ropes = 3; pole = 4

Π²Π΄Π°Π²Π»ΠΈΠ²Π°Π½ΠΈΠ΅

Π‘Π»ΠΎΠΊ β€” это комбинация всСх этих ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ². Π‘Π»ΠΎΠΊ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Ρ†Π΅Π»ΠΈ. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ языков программирования, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ C, C ++, Java, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки {} для опрСдСлСния Π±Π»ΠΎΠΊΠ° ΠΊΠΎΠ΄Π°. Одной ΠΈΠ· ΠΎΡ‚Π»ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… особСнностСй Python являСтся использованиС отступов для выдСлСния Π±Π»ΠΎΠΊΠΎΠ² ΠΊΠΎΠ΄Π°. ΠŸΡ€ΠΎΠ±Π΅Π» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для отступа Π² Python. ВсС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ расстояниСм справа ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ Π±Π»ΠΎΠΊΡƒ ΠΊΠΎΠ΄Π°. Если Π±Π»ΠΎΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Π³Π»ΡƒΠ±ΠΎΠΊΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌ, ΠΎΠ½ просто отступаСт Π²ΠΏΡ€Π°Π²ΠΎ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ это Π»ΡƒΡ‡ΡˆΠ΅, посмотрСв Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ строки ΠΊΠΎΠ΄Π°:

Β Β 

site = 'gfg'

Β Β 

if site == 'gfg':

Β Β Β Β print('Logging on to geeksforgeeks...')

else:

Β Β Β Β print('retype the URL.')

print('All set !')

Π’Ρ‹Ρ…ΠΎΠ΄:

Logging on to geeksforgeeks...
All set !

Π‘Ρ‚Ρ€ΠΎΠΊΠΈ print (Β«Π’Ρ…ΠΎΠ΄ Π² geeksforgeeks…») ΠΈ print (Β«retype the URL.Β») β€” это Π΄Π²Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Π±Π»ΠΎΠΊΠ° ΠΊΠΎΠ΄Π°. Π”Π²Π° Π±Π»ΠΎΠΊΠ° ΠΊΠΎΠ΄Π° Π² нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ if-ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ отступа. ΠžΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄ (‘All set!’) НС ΠΈΠΌΠ΅Π΅Ρ‚ отступов ΠΈ поэтому Π½Π΅ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ Π±Π»ΠΎΠΊΡƒ else.

j = 1

while(j<= 5):

Β Β Β Β Β print(j)

Β Β Β Β Β j = j + 1

Π’Ρ‹Ρ…ΠΎΠ΄:

1
2
3
4
5

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° Π² Python, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ отступ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки Π±Π»ΠΎΠΊΠ° ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠΌ. ОбС строки ΠΊΠΎΠ΄Π° Π² Ρ†ΠΈΠΊΠ»Π΅ while ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ отступа. Π­Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для указания Ρ‚ΠΎΠ³ΠΎ, ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡƒ Π±Π»ΠΎΠΊΡƒ ΠΊΠΎΠ΄Π° относится ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€. НапримСр, j = 1 ΠΈ while (j <= 5): Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ отступов, ΠΈ поэтому Π½Π΅ находятся Π² Π±Π»ΠΎΠΊΠ΅ while. Π˜Ρ‚Π°ΠΊ, структура ΠΊΠΎΠ΄Π° Python с отступом.

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Python часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ систСму ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π², Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π±Π΅Π· Π½Π΅Π΅ всС ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ Π·Π°ΠΏΡƒΡ‚Π°Π½Π½Ρ‹ΠΌ, ΠΎΡ‡Π΅Π½ΡŒ быстрым. ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ β€” это полСзная информация, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŽ для понимания исходного ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΎ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΈΠ»ΠΈ Π΅Π΅ Ρ‡Π°ΡΡ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡƒΡŽ Π² ΠΊΠΎΠ΄Π΅. ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΈΠ»ΠΈ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΡƒΠ΅Ρ‚ ваш ΠΊΠΎΠ΄, ΠΊΠΎΠ³Π΄Π° вас большС Π½Π΅Ρ‚ рядом, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π½Π° вопросы ΠΏΠΎ этому ΠΏΠΎΠ²ΠΎΠ΄Ρƒ. Они часто ΡƒΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅ соглашСниС ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π΅ участвуСт Π² Π²Ρ‹Π²ΠΎΠ΄Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ всСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ Python Π΅ΡΡ‚ΡŒ Π΄Π²Π° Ρ‚ΠΈΠΏΠ° ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π²:
ΠžΠ΄Π½ΠΎΡΡ‚Ρ€ΠΎΡ‡Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ: однострочный ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Python начинаСтся с символа Ρ…ΡΡˆΡ‚Π΅Π³Π° Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ² (#) ΠΈ длится Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° строки. Если ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ ΠΎΠ΄Π½Ρƒ строку, помСститС Ρ…ΡΡˆΡ‚Π΅Π³ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ строку ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ. ΠžΠ΄Π½ΠΎΡΡ‚Ρ€ΠΎΡ‡Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Python оказались ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌΠΈ для прСдоставлСния ΠΊΡ€Π°Ρ‚ΠΊΠΈΡ… объяснСний ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, объявлСний Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π°, Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ однострочный ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ:

Код 1:

Код 2:

a, b = 1, 3

sum = a + b

print(sum)

ΠœΠ½ΠΎΠ³ΠΎΡΡ‚Ρ€ΠΎΡ‡Π½Π°Ρ строка Π² качСствС коммСнтария: многострочный ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Python β€” это Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ тСкста, Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΉ Π² Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ () Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠΎΠ½Ρ†Π΅ коммСнтария. ΠžΠΏΡΡ‚ΡŒ ΠΆΠ΅, ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΌ () Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ². Они ΠΏΠΎΠ»Π΅Π·Π½Ρ‹, ΠΊΠΎΠ³Π΄Π° тСкст коммСнтария Π½Π΅ помСщаСтся Π² ΠΎΠ΄Π½Ρƒ строку; поэтому Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ Π»ΠΈΠ½ΠΈΠΈ. ΠœΠ½ΠΎΠ³ΠΎΡΡ‚Ρ€ΠΎΡ‡Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΈΠ»ΠΈ Π°Π±Π·Π°Ρ†Ρ‹ слуТат Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ для Π΄Ρ€ΡƒΠ³ΠΈΡ…, Ρ‡ΠΈΡ‚Π°ΡŽΡ‰ΠΈΡ… ваш ΠΊΠΎΠ΄. Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π°, Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ многострочный ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ:

Код 1:

Код 2:

Β Β 

print("GeeksForGeeks")

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹Π΅ посты:

ЗаявлСниС, отступ ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π² Python

0.00 (0%) 0 votes

совСты ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ исходного ΠΊΠΎΠ΄Π° / Π₯Π°Π±Ρ€

Π‘ΡƒΠ΄ΡŒΡ‚Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹ Π² использовании ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ стиля для модуля, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈΠ»ΠΈ строкового коммСнтария.

Π‘Ρ‚Ρ€ΠΎΠΊΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

Python ΠΈΠΌΠ΅Π΅Ρ‚ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΡΡ‚ΠΈΠ»ΡŒ коммСнтирования β€” строки Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. Π‘Ρ‚Ρ€ΠΎΠΊΠ° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ это строка, которая являСтся ΠΏΠ΅Ρ€Π²ΠΎΠΉ конструкциСй Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅, ΠΌΠΎΠ΄ΡƒΠ»Π΅, классС ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’Π°ΠΊΠΈΠ΅ строки ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ экспортированы автоматичСски с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° __doc__ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ pydoc-ΠΎΠΌ. (ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ pydoc Π½Π° своСм ΠΌΠΎΠ΄ΡƒΠ»Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΊΠ°ΠΊ это выглядит.) НашС соглашСниС ΠΏΠΎ строкам Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π²Π΅Π»ΠΈΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Ρ€ΠΈ Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ для обрамлСния Ρ‚Π°ΠΊΠΎΠΉ строки. Π‘Ρ‚Ρ€ΠΎΠΊΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΊΠ°ΠΊ суммарная строка (ΠΎΠ΄Π½Π° физичСская строка), сносящаяся ΠΏΠΎ ΠΊΠΎΠ»-Π²Ρƒ символов, Π·Π½Π°ΠΊΡƒ вопроса ΠΈΠ»ΠΈ Π²ΠΎΡΠΊΠ»ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ Π·Π½Π°ΠΊΡƒ, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ Π·Π° пустой строкой, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ строки Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ с ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ курсора Π² качСствС ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΉ строки. НиТС описано Π΅Ρ‰Π΅ большС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΏΠΎ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΡŽ строк докумСнтирования.

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

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π² сСбС шаблон Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ подходящий шаблон Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ для вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.(НапримСр, Apache 2.0, BSD, LGPL, GPL).

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Π² этом Ρ€Π°Π·Π΄Π΅Π»Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ (функция) относится ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ, функциям ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌ.
Ѐункция Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅Ρ‚ΡŒ строку Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π²ΠΎ всСх случаях, ΠΊΡ€ΠΎΠΌΠ΅ описанных Π½ΠΈΠΆΠ΅:

  • НС Π²ΠΈΠ΄ΠΈΠΌΠ° снаруТи модуля
  • ΠžΡ‡Π΅Π½ΡŒ короткая
  • ΠžΡ‡Π΅Π²ΠΈΠ΄Π½Π°Ρ (Π»Π΅Π³ΠΊΠΎ читаСмая)

Π‘Ρ‚Ρ€ΠΎΠΊΠ° докумСнтирования Π΄ΠΎΠ»ΠΆΠ½Π° Π΄Π°Π²Π°Ρ‚ΡŒ достаточно ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ„ΠΎΡ€ΠΌΠΈΡ‚ΡŒ Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±Π΅Π· чтСния Π΅Π΅ исходного ΠΊΠΎΠ΄Π°. Π‘Ρ‚Ρ€ΠΎΠΊΠ° докумСнтирования Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ синтаксис Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Π΅Π΅ сСмантику, Π½ΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π΅Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ. Для Ρ…ΠΈΡ‚Ρ€ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ исходного ΠΊΠΎΠ΄Π° Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹, Ρ‡Π΅ΠΌ строки Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ аспСкты Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… сСкциях, пСрСчислСнных Π½ΠΈΠΆΠ΅. КаТдая сСкция начинаСтся со строки Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°, которая заканчиваСтся Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ. Π‘Π΅ΠΊΡ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ отступ Π² Π΄Π²Π° ΠΏΡ€ΠΎΠ±Π΅Π»Π°, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½ΠΎΠΉ.
Args:
ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ. ОписаниС Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ сразу Π·Π° ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΎ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ ΠΈ ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠΌ. Если описаниС слишком Π΄Π»ΠΈΠ½Π½ΠΎΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² Π² 80 символов, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠΎΠ΄Π²Π΅ΡˆΠ΅Π½Π½Ρ‹ΠΉ отступ Π² 2 ΠΈΠ»ΠΈ 4 ΠΏΡ€ΠΎΠ±Π΅Π»Π° (Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ Π² ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠΈ всСго Ρ„Π°ΠΉΠ»Π°).
ОписаниС Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΉ Ρ‚ΠΈΠΏ(Ρ‹) ΠΈ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°. Если функция позволяСт *foo (списки Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹) ΠΈ/ΠΈΠ»ΠΈ **bar (ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ‚ΠΈΠΏΠ° ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅), ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ записаны ΠΊΠ°ΠΊ *foo ΠΈ **bar.
Returns: (Π»ΠΈΠ±ΠΎ Yields для Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²)
ΠžΠΏΠΈΡˆΠΈΡ‚Π΅ Ρ‚ΠΈΠΏ ΠΈ сСмантику Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния. Если функция всСгда Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ None, Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π» нСобязатСлСн.
Raises:
Бписок всСх ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ для Π΄Π°Π½Π½ΠΎΠ³ΠΎ интСрфСйса.

def fetch_bigtable_rows(big_table, keys, other_silly_variable=None):
   """Fetches rows from a Bigtable.

   Retrieves rows pertaining to the given keys from the Table instance
   represented by big_table.  Silly things may happen if
   other_silly_variable is not None.

   Args:
       big_table: An open Bigtable Table instance.
       keys: A sequence of strings representing the key of each table row
          to fetch.
       other_silly_variable: Another optional variable, that has a much
          longer name than the other args, and which does nothing.

   Returns:
       A dict mapping keys to the corresponding table row data
       fetched. Each row is represented as a tuple of strings. For
       example:

       {'Serak': ('Rigel VII', 'Preparer'),
       'Zim': ('Irk', 'Invader'),
       'Lrrr': ('Omicron Persei 8', 'Emperor')}

       If a key from the keys argument is missing from the dictionary,
       then that row was not found in the table.

   Raises:
       IOError: An error occurred accessing the bigtable.Table object.
   """
   pass
ΠšΠ»Π°ΡΡΡ‹

ΠšΠ»Π°ΡΡΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ строку Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π½ΠΈΠΆΠ΅ своСго объявлСния. Если Π’Π°Ρˆ класс ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹, ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Ρ‚ΡƒΡ‚ ΠΆΠ΅ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Attributes ΠΈ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ ΡΡ‚ΠΈΠ»ΡŽ форматирования, Ρ‡Ρ‚ΠΎ ΠΈ Ρ€Π°Π·Π΄Π΅Π» Args.

class SampleClass(object):
   """Summary of class here.

   Longer class information....
   Longer class information....

   Attributes:
       likes_spam: A boolean indicating if we like SPAM or not.
       eggs: An integer count of the eggs we have laid.
   """

   def __init__(self, likes_spam=False):
       """Inits SampleClass with blah."""
       self.likes_spam = likes_spam
       self.eggs = 0

   def public_method(self):
       """Performs operation blah."""
Π‘Π»ΠΎΠΊΠΈ ΠΈ ΠΈΠ½Π»Π°ΠΉΠ½ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

ПослСднСС мСсто, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ β€” это Ρ…ΠΈΡ‚Ρ€Ρ‹Π΅ мСста Π² ΠΊΠΎΠ΄Π΅. Если Π’Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΡΡΠ½ΠΈΡ‚ΡŒ ΠΈΡ… Π² Π’Π°ΡˆΠ΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΊΠΎΠ΄-Ρ€Π΅Π²ΡŒΡŽ, Ρ‚ΠΎ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΎΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… сСйчас. Π‘Π»ΠΎΠΆΠ½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠ΅ нСсколько строк Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅Π΄ Π΅Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ. НСявныС части Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π² ΠΊΠΎΠ½Ρ†Π΅ строки.

# We use a weighted dictionary search to find out where i is in
# the array.  We extrapolate position based on the largest num
# in the array and the array size and then do binary search to
# get the exact number.

if i & (i-1) == 0:        # true iff i is a power of 2

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½Π°Ρ€ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π½Π° расстоянии ΠΏΠΎ мСньшСй ΠΌΠ΅Ρ€Π΅ 2-Ρ… ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ² ΠΎΡ‚ ΠΊΠΎΠ΄Π°. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Π»ΡƒΡ‡ΡˆΠ΅ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ описывайтС ΠΊΠΎΠ΄. ΠŸΡ€Π΅ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ, Ρ‡ΠΈΡ‚Π°ΡŽΡ‰ΠΈΠΉ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, Π·Π½Π°Π΅Ρ‚ Python (Π° Π½Π΅ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΡ‹Ρ‚Π°Π»ΠΈΡΡŒ Π΄Π΅Π»Π°Ρ‚ΡŒ) Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ Π’Ρ‹.

# BAD COMMENT: Now go through the b array and make sure whenever i occurs
# the next element is i+1

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½Ρ‹ΠΉ Ρ„Π°ΠΊΡ‚ ΠΎ многострочных коммСнтариях Python

ΠœΠ½ΠΎΠ³ΠΎΡΡ‚Ρ€ΠΎΡ‡Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ (Π±Π»ΠΎΠΊ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π²) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для описания большого тСкста ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ коммСнтирования кусков ΠΊΠΎΠ΄Π° Π²ΠΎ врСмя ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ прилоТСния .

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π»ΠΈ Python многострочныС ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, c / c ++…)?
На самом Π΄Π΅Π»Π΅ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΎΠ½Π»Π°ΠΉΠ½-ΡƒΡ€ΠΎΠΊΠ°Ρ… ΠΈ Π½Π° Π²Π΅Π±-страницах Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ multiline_comments доступны Π² python («» ΠΈΠ»ΠΈ «»). Π½ΠΎ Π΄Π°Π²Π°ΠΉΡ‚Π΅ сначала посмотрим Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΡŒ Python, Β«Π“Π²ΠΈΠ΄ΠΎ Π²Π°Π½ Россум», сказал ΠΎ Ρ„Π°Π»ΡŒΡˆΠΈΠ²ΠΎΠΌ стилС коммСнтирования Π±Π»ΠΎΠΊΠΎΠ²:

Π‘ΠΎΠ²Π΅Ρ‚ ΠΏΠΎ Python: Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ многострочныС строки Π² качСствС многострочных ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π². Если ΠΎΠ½ΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² качСствС строки Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ , ΠΎΠ½ΠΈ Π½Π΅ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ ΠΊΠΎΠ΄!
исходный Ρ„Π°ΠΉΠ»

  • Ссли Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ тСкст ΠΎΠ΄Π½ΠΎΠΉ строкой, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π² Python Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΈΠ»ΠΈ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ.
  • Ссли Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ стихи, пСсни ΠΈΠ»ΠΈ многострочный тСкст, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ‚Ρ€ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ («» ΠΈΠ»ΠΈ «»).
both two points do not give any error because text within single quotes or 
double quotes or tripple quotes can be considered as text-constant
  • Ссли Π²Ρ‹ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚Π΅ эти строки ΠΈΠ»ΠΈ тСкст, просто Π²ΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΈΡ… Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ print ().
  • ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

    Β Β Β 

    "this is a text constant for single line you"Β 
    "can't use multi-line within single or double quotes"

    Β Β 
    'this is also text-constant for single line'

    Β Β Β 

    Β Β Β 

    print('this is also text-constant for single line')

    print(

    )

    Π’Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚Π°Ρ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° Π½Π΅ создаСт истинных ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π². Он просто вставляСт Ρ‚Π΅ΠΊΡΡ‚ΠΎΠ²ΡƒΡŽ константу, которая Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ мСняСт ΠΈ Π½Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ это обычная однострочная строка Π³Π΄Π΅-Ρ‚ΠΎ Π² вашСм ΠΊΠΎΠ΄Π΅. ВсСгда ΠΈΠΌΠ΅ΠΉΡ‚Π΅ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ отступ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ( «» ΠΈΠ»ΠΈ «» ) отступа ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС гСнСрируСтся ошибка SyntaxError.

    ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

    def check_syntax():

    Β Β Β Β 

    Β Β Β Β 

    Β Β Β Β 

    print("after this line interpreter gives error because your first ident doesnot match")

    Β 

    Как ΠΌΡ‹ Π»Π΅Π³ΠΊΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ куски ΠΊΠΎΠ΄Π°?
    ΠŸΡ€ΠΎΡΡ‚ΠΎ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ эти строки (это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ тСкст, Π·Π°Ρ‚Π΅ΠΌ сначала Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ эти строки), Π° Π·Π°Ρ‚Π΅ΠΌ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ (cntrl + #), Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ # Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строкС являСтся СдинствСнным способом.
    РСзюмС:

  • Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… языков программирования (c, c ++,…) Β«pythonΒ» Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ многострочныС Π±Π»ΠΎΠΊΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ.
  • МоТно Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Ρ‚Ρ€ΠΎΠΉΠ½ΡƒΡŽ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΡƒ «» ΠΊΠ°ΠΊ многострочныС ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, Π½ΠΎ это Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ идСя, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ строки этого Ρ‚ΠΈΠΏΠ° ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ Π² случайныС строки Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².
  • ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ # β€” СдинствСнный способ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ строки Π² python (Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠΉ строки, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ эти строки ΠΈ Π½Π°ΠΆΠ°Ρ‚ΡŒ (ctrl + #) Π² python3.
  • Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹Π΅ посты:

    Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½Ρ‹ΠΉ Ρ„Π°ΠΊΡ‚ ΠΎ многострочных коммСнтариях Python

    0.00 (0%) 0 votes

    ΠŸΠΎΡ‡Π΅ΠΌΡƒ Python Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ многострочных ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π²?

    Ρ…ΠΎΡ€ΠΎΡˆΠΎ, я знаю, Ρ‡Ρ‚ΠΎ строки с Ρ‚Ρ€ΠΎΠΉΠ½Ρ‹ΠΌΠΈ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ многострочными коммСнтариями. НапримСр,

    """Hello, I am a 
       multiline comment"""
    

    ΠΈ

    '''Hello, I am a 
       multiline comment'''
    

    Π½ΠΎ тСхничСски говоря, это строки, ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ?

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

    224

    Π°Π²Ρ‚ΠΎΡ€: Peter Mortensen

    16 ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ²


    Π― сомнСваюсь, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΎΡ‚Π²Π΅Ρ‚, Ρ‡Π΅ΠΌ «Π“Π²ΠΈΠ΄ΠΎ Π½Π΅ чувствовал нСобходимости для многострочных ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π²».

    Π“Π²ΠΈΠ΄ΠΎ Ρ‚Π²ΠΈΡ‚Ρ‚Π΅Ρ€Π΅ это:

    Python tip: Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ многострочныС строки Π² качСствС многострочных ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π². Если ΠΎΠ½ΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² качСствС docstrings, ΠΎΠ½ΠΈ Π½Π΅ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ ΠΊΠΎΠ΄! πŸ™‚

    245

    Π°Π²Ρ‚ΠΎΡ€: Ned Batchelder


    многострочныС ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π»Π΅Π³ΠΊΠΎ Π»ΠΎΠΌΠ°ΡŽΡ‚ΡΡ. Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π² простой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°?

    operation = ''
    print("Pick an operation:  +-*/")
    # Get user input here
    

    ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ это многострочным ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅ΠΌ:

    /*
    operation = ''
    print("Pick an operation:  +-*/")
    # Get user input here
    */
    

    Oops, ваша строка содСрТит Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ коммСнтария.

    57

    Π°Π²Ρ‚ΠΎΡ€: Steve Losh


    тСкст с Ρ‚Ρ€ΠΎΠΉΠ½Ρ‹ΠΌΠΈ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ Π½Π΅ слСдуСт Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ многострочныС ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ; ΠΏΠΎ соглашСнию, ΠΎΠ½ΠΈ docstrings. Они Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ваш ΠΊΠΎΠ΄ ΠΈ ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Π½ΠΎ Π½Π΅ для Ρ‚Π°ΠΊΠΈΡ… Π²Π΅Ρ‰Π΅ΠΉ, ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠΎΠ² ΠΊΠΎΠ΄Π°.

    ΠΏΠΎ словам Π“Π²ΠΈΠ΄ΠΎ, многострочныС ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π² Python — это просто Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½Ρ‹Π΅ однострочныС ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ (поиск «Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ»).

    ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±Π»ΠΎΠΊΠΈ ΠΊΠΎΠ΄Π°, я ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Ρ‹ΠΊΡ€ΠΎΠΉΠΊΠ°:

    if False:
        # A bunch of code
    

    Π­Ρ‚ΠΎ, вСроятно, восходит ΠΊ основной ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΉ способ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡Ρƒ. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ стили ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Π΅ ослоТнСния ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ.

    28

    Π°Π²Ρ‚ΠΎΡ€: Jarred McCaffrey


    Π½Ρƒ, Ρ‚Ρ€ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² качСствС многострочных ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² Π² docstrings. И # ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² качСствС встроСнных ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π², ΠΈ люди ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ°ΡŽΡ‚ ΠΊ Π½Π΅ΠΌΡƒ.

    Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ языков сцСнариСв Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ многострочных ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π². ΠœΠΎΠΆΠ΅Ρ‚ Π² этом ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°?

    ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ PEP 0008, Ρ€Π°Π·Π΄Π΅Π» ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

    ΠΈ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, Ссли ваш Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Python ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сочСтания клавиш для Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π². Emacs ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π΅Π³ΠΎ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Eclipse, ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½Ρ‹Ρ… IDEs Π΄Π΅Π»Π°Π΅Ρ‚.


    с Π”Π·Π΅Π½ ΠΏΠΈΡ‚ΠΎΠ½Π°:

    Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½-ΠΈ, ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½-ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΉ способ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это.

    7

    Π°Π²Ρ‚ΠΎΡ€: Jeremy Cantrell


    Π»ΠΈΡ‡Π½ΠΎ ΠΌΠΎΠΉ ΡΡ‚ΠΈΠ»ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² Π² say Java ΠΏΠΎΡ…ΠΎΠΆ Π½Π°

    /*
     * My multi-line comment in Java
     */
    

    Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ однострочных ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² Π½Π΅ Ρ‚Π°ΠΊ ΡƒΠΆ ΠΏΠ»ΠΎΡ…ΠΎ, Ссли ваш ΡΡ‚ΠΈΠ»ΡŒ Ρ‚ΠΈΠΏΠΈΡ‡Π΅Π½ для ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π² сравнСнии Ρƒ вас Π±Ρ‹Π»ΠΎ Π±Ρ‹

    #
    # My multi-line comment in Python
    #
    

    VB.NET это Ρ‚Π°ΠΊΠΆΠ΅ язык с однострочным ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅ΠΌ, ΠΈ Π»ΠΈΡ‡Π½ΠΎ я Π½Π°Ρ…ΠΎΠΆΡƒ Π΅Π³ΠΎ Ρ€Π°Π·Π΄Ρ€Π°ΠΆΠ°ΡŽΡ‰ΠΈΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ выглядят ΠΌΠ΅Π½Π΅Π΅ ΠΏΠΎΡ…ΠΎΠΆΠΈΠΌΠΈ Π½Π° ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΈ большС ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ Ρ†ΠΈΡ‚Π°Ρ‚Ρƒ

    '
    ' This is a VB.NET example
    '
    

    однострочныС ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ мСньшС использования символов, Ρ‡Π΅ΠΌ многострочныС ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, мСньшС шансов ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠ·Π²ΠΎΡ€ΠΎΡ‚Π»ΠΈΠ²Ρ‹Ρ… символов Π² инструкции regex? Π₯отя я склонСн ΡΠΎΠ³Π»Π°ΡΠΈΡ‚ΡŒΡΡ с НСдом.


    # This
    # is
    # a 
    # multi-line
    # comment
    

    ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π±Π»ΠΎΠΊ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² ΠΈΠ»ΠΈ Π½Π°ΠΉΠ΄ΠΈΡ‚Π΅ ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ (s/^/#/g) Π² своСм Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ этого.


    Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° Pycharm IDE:

    • ΠΊΠΎΠ΄ / ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ с ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅ΠΌ строки
    • Windows ΠΈΠ»ΠΈ Linux: Ctrl + /
    • Mac OS:ΠΊΠΎΠΌΠ°Π½Π΄Π° + /

    3

    Π°Π²Ρ‚ΠΎΡ€: Craig S. Anderson


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


    ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ # convention являСтся ΠΎΠ±Ρ‰ΠΈΠΌ, ΠΈ Π½Π° самом Π΄Π΅Π»Π΅ Π½Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ с многострочным ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ с ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅ΠΌ #-sign. Π­Ρ‚ΠΎ историчСская ΡΠ»ΡƒΡ‡Π°ΠΉΠ½ΠΎΡΡ‚ΡŒ, ΠΊΠ°ΠΊ ΠΈ происхоТдСниС /* ... */ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠ΅ΡΡ ΠΊ PL/I,

    0

    Π°Π²Ρ‚ΠΎΡ€: Charlie Martin


    ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ просто ΡΡ‡ΠΈΡ‚Π°Π»ΠΈΡΡŒ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹ΠΌΠΈ. Π’Π°ΠΊ ΠΊΠ°ΠΊ это Ρ‚Π°ΠΊ Π»Π΅Π³ΠΊΠΎ просто ввСсти #a comment, многострочныС ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· ΠΌΠ½ΠΎΠ³ΠΈΡ… однострочных ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π².

    Π½Π° HTML-ΠΊΠΎΠ΄, Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Π΅ΡΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ multiliners. Π’Ρ€ΡƒΠ΄Π½Π΅Π΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ <!--comments like this-->.

    0

    Π°Π²Ρ‚ΠΎΡ€: stalepretzel


    Π­Ρ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ .. Π½ΠΎ!—1—>

    ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ строками, ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ сСмантичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (компилятор Π½Π΅ избавляСтся ΠΎΡ‚ Π½ΠΈΡ…), поэтому ΠΈΠΌΠ΅Π΅Ρ‚ смысл ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² качСствС docstrings. Они фактичСски становятся Ρ‡Π°ΡΡ‚ΡŒΡŽ АБВ, поэтому ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ становится ΠΏΡ€ΠΎΡ‰Π΅.


    ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, многострочныС ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ сука. Π˜Π·Π²ΠΈΠ½ΠΈΡ‚Π΅, Π½ΠΎ нСзависимо ΠΎΡ‚ языка, я Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ ΠΈΡ… Π½ΠΈ для Ρ‡Π΅Π³ΠΎ, ΠΊΡ€ΠΎΠΌΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ. Π‘ΠΊΠ°ΠΆΠ΅ΠΌ, Ρƒ вас Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄:

    void someFunction()
    {
        Something
        /*Some comments*/
        Something else
    }
    

    Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Π² вашСм ΠΊΠΎΠ΄Π΅ Π΅ΡΡ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ°, поэтому Π²Ρ‹ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚Π΅ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ, коммСнтируя всС мСньшиС ΠΈ мСньшиС Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΊΠΎΠ΄Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этих многострочных ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π². Π­Ρ‚ΠΎ Π΄Π°Π»ΠΎ Π±Ρ‹ Π·Π°Ρ‚Π΅ΠΌ функция:

    void someFunction()
    { /*
        Something
       /* Comments */
       Something more*/
    }
    

    Π­Ρ‚ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Π΄Ρ€Π°ΠΆΠ°Π΅Ρ‚.


    многострочныС ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ оТидания on:

    • Mac OS X, послС Π²Ρ‹Π±ΠΎΡ€Π° ΠΊΠΎΠ΄Π°, ΠΏΡ€ΠΎΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° с Ctrl+3 ΠΈ Ρ€Π°ΡΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ctrl+4.

    • Windows послС Π²Ρ‹Π±ΠΎΡ€Π° ΠΊΠΎΠ΄Π° ,
      ΠΏΡ€ΠΎΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ctrl+Alt+3 ΠΈ Ρ€Π°ΡΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ctrl+At+4.


    Π― помню, Ρ‡Ρ‚ΠΎ Ρ‡ΠΈΡ‚Π°Π» ΠΎΠ± ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠ°Ρ€Π½Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π» свои многострочныС ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π² Ρ‚Ρ€ΠΎΠΉΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ:

    x = '''
    This is my
    super-long mega-comment.
    Wow there are a lot of lines
    going on here!
    '''
    

    Π­Ρ‚ΠΎ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ памяти, Π½ΠΎ это Π΄Π°Π΅Ρ‚ Π²Π°ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ многострочных ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π², ΠΈ плюс Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ² Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ синтаксис для вас πŸ™‚

    Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π»Π΅Π³ΠΊΠΎ ΠΏΡ€ΠΎΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄, просто ΠΎΠ±Π΅Ρ€Π½ΡƒΠ² Π΅Π³ΠΎ с

    x = '''
    

    ΠΈ

    '''
    

    ПишСм красивый идиоматичСский Python / Π₯Π°Π±Ρ€

    Иногда слоТно Π½Π°ΠΉΡ‚ΠΈ Π² Π‘Π΅Ρ‚ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅, Π° Π³Π»Π°Π²Π½ΠΎΠ΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Β«best practicesΒ» для языка. ДокумСнтация, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, содСрТит всю Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Π½ΠΎ ΠΎΡ‚ΡΠ΅ΡΡ‚ΡŒ Π½ΡƒΠΆΠ½ΡƒΡŽ Π²Π΅Ρ‰ΡŒ Π² Π°Π±Π·Π°Ρ†Π°Ρ… ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ³ΠΎ (Π½Π° Ρ‚ΠΎ ΠΎΠ½Π° ΠΈ докумСнтация) описания довольно слоТно. Но Π½Π΅Π΄Π°Π²Π½ΠΎ ΠΌΠ½Π΅ улыбнулся поиск Google, ΠΈ я наткнулся Π½Π° ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ Β«ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹Β» языка Python ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· core Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² β€” Raymond Hettinger.

    ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: ВсС Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ Π΄Π°Π½Ρ‹ Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°Ρ…: сначала ΠΈΠ΄ΡƒΡ‚ самыС Β«ΠΏΠ»ΠΎΡ…ΠΈΠ΅Β» Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹, Π° дальшС прСдлагаСтся Π»ΡƒΡ‡ΡˆΠ°Ρ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π°. ΠΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ для вСрсии языка 2.7, отличия для вСрсии 3.3 Ρ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ Π² примСчаниях ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ Β«ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΡƒΒ».

    Π¦ΠΈΠΊΠ» ΠΏΠΎ массиву ΠΈΠ· чисСл

    ΠŸΠ»ΠΎΡ…ΠΎ: ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΠΈΡˆΡƒΡ‚ Ρ‚Π°ΠΊ.

    for i in [0, 1, 2, 3, 4, 5]:
        print i**2
    

    Π₯ΠΎΡ€ΠΎΡˆΠΎ: Π»ΡƒΡ‡ΡˆΠΈΠΉ, с Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ. Но Π² 32 Π±ΠΈΡ‚Π½ΠΎΠΉ систСмС список ΠΈΠ· ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π° чисСл Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ ~ 32 mb памяти.

    for i in range(6):
        print i**2
    

    ΠžΡ‚Π»ΠΈΡ‡Π½ΠΎ: самый Π»ΡƒΡ‡ΡˆΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΈ ΠΎΡ‚ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ xrange Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π·Π° Ρ€Π°Π·, ΠΈ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ лишнюю ΠΏΠ°ΠΌΡΡ‚ΡŒ для хранСния всСго массива.

    for i in xrange(6):
        print i**2
    

    ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π’ вСрсии Python 3.3 xrange ΡƒΠΆΠ΅ Π² ядрС ΠΈ Π½Π°Π·Ρ‹Π²Π°Π΅Ρ‚ΡŒΡΡ просто range.

    Π¦ΠΈΠΊΠ» ΠΏΠΎ списку

    ΠŸΠ»ΠΎΡ…ΠΎ: часто Π±Ρ‹Π²ΡˆΠΈΠ΅ Π‘ программисты ΠΏΠΈΡˆΡƒΡ‚ Ρ‚Π°ΠΊ.

    colors = ['red', 'green', 'blue', 'yellow']
    for i in range(len(colors)):
        print colors[i]
    

    Π₯ΠΎΡ€ΠΎΡˆΠΎ: Π»ΡƒΡ‡ΡˆΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚.

    colors = ['red', 'green', 'blue', 'yellow']
    for color in colors:
        print color
    

    Но Ссли Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ ΠΏΠΎ списку Π·Π°Π΄ΠΎΠΌ Π½Π° ΠΏΠ΅Ρ€Π΅Π΄?

    ΠŸΠ»ΠΎΡ…ΠΎ: ΠΎΠΏΡΡ‚ΡŒ, ΠΏΡ€ΠΎΡˆΠ»ΠΎ ΠΈΠ· C Π΄Π°Π΅Ρ‚ ΠΎ сСбС Π·Π½Π°Ρ‚ΡŒ:

    colors = ['red', 'green', 'blue', 'yellow']
    
    for i in range(len(colors)-1, -1, -1):
    print colors[i]
    

    Π₯ΠΎΡ€ΠΎΡˆΠΎ: Π½ΠΎ Π² Python ΠΏΠΈΡˆΡƒΡ‚ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

    colors = ['red', 'green', 'blue', 'yellow']
    for color in reversed(colors):
        print color
    
    Π¦ΠΈΠΊΠ» ΠΏΠΎ списку с индСксами

    ΠŸΠ»ΠΎΡ…ΠΎ Ρ‚ΠΎΠΆΠ΅ Ρ‡Ρ‚ΠΎ ΠΈ Π²Ρ‹ΡˆΠ΅.

    colors = ['red', 'green', 'blue', 'yellow']
    for i in range(len(colors)):
        print i, '-->', colors[i]
    

    Π₯ΠΎΡ€ΠΎΡˆΠΎ: Π±ΠΎΠ»Π΅Π΅ элСгантный Π²Π°Ρ€ΠΈΠ°Π½Ρ‚:

    colors = ['red', 'green', 'blue', 'yellow']
    for i, color in enumerate(colors):
        print i, '-->', color
    
    Π¦ΠΈΠΊΠ» ΠΏΠΎ Π΄Π²ΡƒΠΌ спискам

    ΠŸΠ»ΠΎΡ…ΠΎ Ρ‚ΠΎΠΆΠ΅ Ρ‡Ρ‚ΠΎ ΠΈ Π²Ρ‹ΡˆΠ΅.

    names = ['raymond', 'rachel', 'matthew']
    colors = ['red', 'green', 'blue', 'yellow']
    n = min(len(names), len(colors))
    for i in range(n):
        print names[i], '-->', colors[i]
    

    Π₯ΠΎΡ€ΠΎΡˆΠΎ: с Π΄Π²ΡƒΡ… списков Π΄Π΅Π»Π°Π΅ΠΌ ΠΎΠ΄ΠΈΠ½ список ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ‚ΠΎΠΌ Ρ‡Ρ‚ΠΎ zip ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ большС памяти Ρ‡Π΅ΠΌ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚.

    names = ['raymond', 'rachel', 'matthew']
    colors = ['red', 'green', 'blue', 'yellow']
    for name, color in zip(names, colors):
        print name, '-->', color
    

    ΠžΡ‚Π»ΠΈΡ‡Π½ΠΎ: Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΈ ΠΎΡ‚ zip, izip ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ сущСствСнно ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ.

    names = ['raymond', 'rachel', 'matthew']
    colors = ['red', 'green', 'blue', 'yellow']
    for name, color in izip(names, colors):
        print name, '-->', color
    

    ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π’ вСрсии Python 3.3 izip вписан Π² ядро ΠΈ называСтся просто zip.

    Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° списка ΠΏΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ

    ΠŸΠ»ΠΎΡ…ΠΎ: ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для сравнСния.

    colors = ['red', 'green', 'blue', 'yellow']
    
    def compare_length(c1, c2):
        if len(c1) < len(c2): return -1
        if len(c1) > len(c2): return 1
        return 0
    
    print sorted(colors, cmp=compare_length)
    

    Π₯ΠΎΡ€ΠΎΡˆΠΎ: ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ сортировку ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ мСньшС памяти.

    colors = ['red', 'green', 'blue', 'yellow']
    
    print sorted(colors, key=len)
    

    ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: ΠœΠ΅Ρ‚ΠΎΠ΄ cmp ΡƒΠ±Ρ€Π°Π½ с ядра Python 3.x.

    Π¦ΠΈΠΊΠ» ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Π°ΠΌ словаря

    ΠžΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ способ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΊΠ»ΡŽΡ‡ΠΈ. ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ Ρ†ΠΈΠΊΠ»Π΅ происходит итСрация словаря, поэтому Π² процСссС Π΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ нСльзя.

    for k in d:
        print k
    

    Для измСнСния словаря Π² Ρ†ΠΈΠΊΠ»Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ†ΠΈΠΊΠ» ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Π°ΠΌ (ΠŸΡ€ΠΈΠΌΠ΅Ρ€: ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ всСх ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…ΡΡ с R):

    for k in d.keys():
        if k.startswith('R'):
            del d[k]
    

    Π’ этом случаС d.keys() Π΄Π΅Π»Π°Π΅Ρ‚ копию ΠΊΠ»ΡŽΡ‡Π΅ΠΉ словаря, Ρ‡Ρ‚ΠΎ позволяСт Π½Π°ΠΌ свободно Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΉ структурой.

    Π¦ΠΈΠΊΠ» ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Π°ΠΌ ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ словаря

    ΠŸΠ»ΠΎΡ…ΠΎ: Ρ†ΠΈΠΊΠ» ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Π°ΠΌ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ послСдним. ΠœΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΉ способ:

    for k in d:
        print k, '-->', d[k]
    

    Π₯ΠΎΡ€ΠΎΡˆΠΎ: быстрСС Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» ΠΏΠΎ значСниях:

    for k, v in d.items():
        print k, '-->', v
    

    ΠžΡ‚Π»ΠΈΡ‡Π½ΠΎ: Но самый Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΈ быстрый способ это ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€:

    for k, v in d.iteritems():
        print k, '-->', v
    
    Π‘ΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π΄Π²ΡƒΡ… списков Π² ΠΎΠ΄ΠΈΠ½ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ

    ΠžΡ‡Π΅Π½ΡŒ быстрый ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ словаря.

    names = ['raymond', 'rachel', 'matthew']
    colors = ['red', 'green', 'blue']
    
    d = dict(izip(names, colors))
    # d Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅: 
    # {'matthew': 'blue', 'rachel': 'green', 'raymond': 'red'}
    
    ΠŸΠΎΠ΄ΡΡ‡Π΅Ρ‚ элСмСнтов Π² словарС

    ΠŸΠ»ΠΎΡ…ΠΎ: ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ способ:

    colors = ['red', 'green', 'red', 'blue', 'green', 'red']
    d = {}
    
    for color in colors:
        if color not in d:
            d[color] = 0
        d[color] += 1
    
    #{'blue': 1, 'green': 2, 'red': 3}
    

    Π₯ΠΎΡ€ΠΎΡˆΠΎ: ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ get():

    colors = ['red', 'green', 'red', 'blue', 'green', 'red']
    d = {}
    
    for color in colors:
        d[color] = d.get(color, 0) + 1
    

    ΠžΡ‚Π»ΠΈΡ‡Π½ΠΎ: самый ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹ΠΉ способ это ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ defaultdict(). Но Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π½Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

    d = defaultdict(int)
    for color in colors:
        d[color] += 1
    
    Π“Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ элСмСнтов списка

    ΠŸΠ»ΠΎΡ…ΠΎ: Ссли Π½ΡƒΠΆΠ½ΠΎ ΡΠ³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ элСмСнты списка ΠΏΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΡƒ (Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ β€” Π΄Π»ΠΈΠ½Π° строки) часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ‚Π°ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄:

    names = ['raymond', 'rachel', 'matthew', 'roger', 'betty', 'melissa', 'judith', 'charlie']
    d = {}
    
    for name in names:
        key = len(name)
        if key not in d:
            d[key] = []
        d[key].append(name)
    {5: ['roger', 'betty'], 6: ['rachel', 'judith'], 7: ['raymond', 'matthew', 'melissa', 'charlie']}
    

    Π₯ΠΎΡ€ΠΎΡˆΠΎ: Π½ΠΎ Π΅ΡΡ‚ΡŒ способ Π³ΠΎΡ€Π°Π·Π΄ΠΎ элСгантнСй ΠΈ быстрСС:

    d = defaultdict(list)
    for name in names:
        key = len(name)
        d[key].append(name)
    
    Π˜Ρ‚ΠΎΠ³

    На сСгодня всС. НадСюсь эти Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅, Π½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ свой ΠΊΠΎΠ΄, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΏΠΎΠΌΠΎΠ³Π»ΠΈ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΌΠ½Π΅. Π˜Ρ… Π°Π²Ρ‚ΠΎΡ€ΠΎΠΌ являСтся Raymond Hettinger (@raymondh), Python Core Developer.

    UPD: Π’ΠΈΠ΄Π΅ΠΎ Π΄ΠΎΠΊΠ»Π°Π΄Π° Π½Π° PyCon 2013, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±Ρ‹Π»ΠΈ взяты ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π°: http://youtu.be/OSGv2VnC0go (Π½Π° английском), содСрТит Π΅Ρ‰Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ интСрСсной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π½Π΅ пСрСнСсСнной Π² ΡΡ‚Π°Ρ‚ΡŒΡŽ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡŽΠΌΠΎΡ€ ΠΈ Ρ…Π°Ρ€ΠΈΠ·ΠΌΡƒ Π΄ΠΎΠΊΠ»Π°Π΄Ρ‡ΠΈΠΊΠ°.

    ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ нСдостатки языка Python / Π₯Π°Π±Ρ€

    Π―Π·Ρ‹ΠΊ программирования Python славится своСй простотой ΠΈ Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ. НСмногословный ΠΈ понятный синтаксис, ΠΏΠΎΡ…ΠΎΠΆΠΈΠΉ Π½Π° псСвдокод, Π° Ρ‚Π°ΠΊΠΆΠ΅ сильная динамичСская типизация ΡΠΏΠΎΡΠΎΠ±ΡΡ‚Π²ΡƒΡŽΡ‚ быстрому ΠΈ Π±Π΅Π·Π±ΠΎΠ»Π΅Π·Π½Π΅Π½Π½ΠΎΠΌΡƒ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΡŽ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ².

    Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ языка Π±Π΅Ρ€Ρ‘Ρ‚ Π½Π° сСбя всю Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ, освобоТдая программиста ΠΎΡ‚ нСобходимости Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ управлСния ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ. ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠ°Ρ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ segmentation fault, Π° Ρ‚Π°ΠΊΠΆΠ΅ удобная систСма ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ, снабТённая понятными сообщСниями, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π‘ΠΈΡ‚ΡƒΠ°Ρ†ΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΈΡ… падСния ΠΈΠ·-Π·Π° возникшСй ошибки Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ³ΠΎ Π΄Π΅Π±Π°Π³Π³ΠΈΠ½Π³Π°, достаточно Ρ€Π΅Π΄ΠΊΠΈ.

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

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

    Но Π½Π΅ всё с этим языком Π»Π΅Π³ΠΊΠΎ ΠΈ просто. Помимо спСцифичСского Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½ΠΎΠ³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ GIL, Π²ΠΎΠΏΠ»ΠΎΡ‰Ρ‘Π½Π½ΠΎΠ³ΠΎ Π² основном ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π΅ языка CPython ΠΈ связанных с Π½ΠΈΠΌ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒΡŽ многопоточности, ΠŸΠΈΡ‚ΠΎΠ½Ρƒ присущи ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ нСдостатки, сильно ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ Π΅Π³ΠΎ примСнСния.

    Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ

    ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ срСди Ρ‚Π°ΠΊΠΎΠ²Ρ‹Ρ… принято ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΌΠ΅Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, хотя это с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΉ Π΄ΠΎΠ»Π΅ΠΉ справСдливости парируСтся Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ скриптовому языку ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ особо ΠΈ Π½Π΅ Π½ΡƒΠΆΠ½Π°. Π’ Π·Π°Π΄Π°Ρ‡Π°Ρ…, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΡ… высокой ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΠΎΠ½ выступаСт лишь ΠΊΠ°ΠΊ ΠΎΠ±Ρ‘Ρ€Ρ‚ΠΊΠ° для манипуляций с API Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, написанных Π½Π° языках с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ AOT-компиляции. Π‘Π°ΠΌΡ‹ΠΌΠΈ популярными ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… языков Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΡΠ²Π»ΡΡŽΡ‚ΡΡ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, C ΠΈ C++. На ΠΏΠ΅Ρ€Π²ΠΎΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΡˆΠΈΡ€ΠΎΠΊΠΎΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° NumPy, созданная для матСматичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с массивами ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΉ размСрности. На Π²Ρ‚ΠΎΡ€ΠΎΠΌ β€” Π½Π°Π±ΠΈΡ€Π°ΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ для обучСния нСйросСтСй PyTorch.

    Как Π±Ρ‹ Ρ‚ΠΎ Π½ΠΈ Π±Ρ‹Π»ΠΎ, Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π½Π° чистом ΠŸΠΈΡ‚ΠΎΠ½Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π΅ получится. Для этого трСбуСтся ΠΏΡ€ΠΈΠ±Π΅Π³Π°Ρ‚ΡŒ ΠΊ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… языков ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ статичСски Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Cython, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠΈΡΠ°Ρ‚ΡŒ, мягко говоря, нСприятно.

    Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, нСдостаток Π² скорости ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ примСнСния этого языка Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… врСмя ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ оТидания ΠΎΡ‚Π²Π΅Ρ‚Π° Π½Π° запрос ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ‚Π΅Π»Π° скрипта. Π‘Ρ€Π΅Π΄ΠΈ Π½ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ:

    • ИспользованиС Python Π² качСствС языка ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки ΠΈ управлСния взаимодСйствия ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ. Π—Π΄Π΅ΡΡŒ ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ΅ прСимущСство ΠΏΠ΅Ρ€Π΅Π΄ Bash, Sh ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΠΌΠΈ языками ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, Π»ΠΈΡˆΡ‘Π½Π½Ρ‹ΠΌΠΈ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с массивами ΠΈ строками ΠΈ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌΠΈ ΠΏΠ»ΠΎΡ…ΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΉ синтаксис. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Ρ‹ Π² послСдних Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ скрипты Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° дистрибутивов Linux.
    • ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹: ΠΌΠΎΠ΄ΡƒΠ»ΡŒ sqlite3, Django ΠΈ Ρ‚.Π΄.
    • ΠœΠ°Π½ΠΈΠΏΡƒΠ»ΡΡ†ΠΈΡ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ вычислСний, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… расчёты производятся Π³Π»ΡƒΠ±ΠΎΠΊΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, скомпилированным Π² нСпосрСдствСнныС инструкции процСссора. Python Ρ‚ΡƒΡ‚ выступаСт лишь ΠΊΠ°ΠΊ срСда для взаимодСйствия с API ΠΏΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ описанию структуры взаимодСйствия этих ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ². ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹: NumPy, CuPy, PyTorch ΠΈ Ρ‚.Π΄.

    ΠŸΠΎΡ‡Π΅ΠΌΡƒ Python ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΉ

    Π’ΡƒΡ‚ Π΅ΡΡ‚ΡŒ Π΄Π²Π° основных Ρ„Π°ΠΊΡ‚ΠΎΡ€Π°:

    • Π’ Π½Ρ‘ΠΌ практичСски всё аллоцируСтся Π½Π° ΠΊΡƒΡ‡Π΅.
    • ΠŸΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с Π»ΡŽΠ±Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ провСряСт Π΅Π³ΠΎ Ρ‚ΠΈΠΏ.

    Π”Π°Π²Π°ΠΉΡ‚Π΅ взглянСм Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ структуры Π² ΠΊΠΎΠ΄Π΅ CPython, которая являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ всСх питоновских ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²:

    typedef struct _object {
        Py_ssize_t ob_refcnt;
        PyTypeObject *ob_type;
    } PyObject;

    ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ ob_refcnt ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° подсчёт ссылок, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Если ΠΈΡ… количСство становится Ρ€Π°Π²Π½Ρ‹ΠΌ Π½ΡƒΠ»ΡŽ, это становится сигналом для сборщика ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠ°ΠΌΡΡ‚ΡŒ, Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΡƒΡŽ этим ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡ‚ΡŒ. ob_type ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ‚ΠΈΠΏ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Плюс ΠΊ этому, Ссли ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π²Π»Π°Π΄Π΅Π΅Ρ‚ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒΡŽ нСфиксированного Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ‚ΠΈΠΏ дополняСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ Π½Π° ΠΎΠ±Π»Π°ΡΡ‚ΡŒ памяти, Π³Π΄Π΅ эта ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ хранится, ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰Π΅ΠΉ Π·Π° Π΅Ρ‘ Ρ€Π°Π·ΠΌΠ΅Ρ€.

    Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ процСссоры ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со значСниями, хранящимися Π² памяти ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎ. Π˜ΡΠΊΠΎΡ€Π΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΌΠ°Ρ…ΠΎΠ² кэша, Π° Ρ‚Π°ΠΊΠΆΠ΅ подстраиваниС ΠΏΠΎΠ΄ ΠΏΡ€Π΅Π΄ΡΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² являСтся Π½Π΅ΠΎΡ‚ΡŠΠ΅ΠΌΠ»Π΅ΠΌΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ быстрых ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

    Π§Ρ‚ΠΎ касаСтся языка Python, Ρ‚ΠΎ ΠΎΠ½ компилируСтся Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄, Π° Π½Π΅ Π² инструкции процСссора. Π—Π½Π°Ρ‡ΠΈΡ‚, ΠΏΡ€Π΅Π΄ΡΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² Ρ‚ΡƒΡ‚ становится бСссилСн.

    ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‚ΡƒΡ‚ Ρ‚ΠΎΠΆΠ΅ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚. Как ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ питоновский массив Π²ΠΈΠ΄Π° [100, 200, 300, 400, 500], Π½Π° самом Π΄Π΅Π»Π΅, ΠΊΠ°ΠΊ Π±Ρ‹Π»ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π²Ρ‹ΡˆΠ΅, Ρ…Ρ€Π°Π½ΠΈΡ‚ Π½Π΅ Ρ†Π΅Π»Ρ‹Π΅ числа, Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ‚ΠΈΠΏΠ° int, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ…Ρ€Π°Π½ΠΈΡ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΎΠ±Π»Π°ΡΡ‚ΡŒ памяти, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ записано ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ Π΅ΠΌΡƒ число. Π”Π°ΠΆΠ΅ ΠΎΠ΄ΠΈΠ½ косвСнный ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π»ΠΎΠΌΠ°Π΅Ρ‚ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΡŽ, Π° Ρ‚ΡƒΡ‚ для доступа ΠΊ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ числС Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΉΡ‚ΠΈΡΡŒ, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ, ΠΏΠΎ Π΄Π²ΡƒΠΌ. Π›ΠΈΡ…Π° Π±Π΅Π΄Π° Π½Π°Ρ‡Π°Π»ΠΎ, ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ ΠŸΠΈΡ‚ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² ΠΎΠ±Π»Π°ΡΡ‚ΡŒ памяти с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° для Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Ρ‚ΠΈΠΏΠ°, ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ этот дСлаСтся ΠΎΠΏΡΡ‚ΡŒ ΠΆΠ΅ ΠΏΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ.

    Π”ΠΈΠ½Π°ΠΌΠΈΠΊΠ°

    Как ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ, которая обСспСчиваСтся модСлью памяти языка Python, сводит Π½Π° Π½Π΅Ρ‚ большоС число Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… процСссорных ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π·Π½Π°ΡŽΡ‰ΠΈΠ΅ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Java всС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ², Ρ‚Π°ΠΊ ΠΆΠ΅ Π°Π»Π»ΠΎΡ†ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π½Π° ΠΊΡƒΡ‡Π΅, Π½ΠΎ ΠΊΠΎΠ΄ Π½Π° этом языкС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π³ΠΎΡ€Π°Π·Π΄ΠΎ быстрСС. Π’Π°ΠΊ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π±Ρ‹ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρƒ ΠŸΠΈΡ‚ΠΎΠ½Π° Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, присущиС Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машинС Java, β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠΏΡ†Π΅ΠΏΡ†ΠΈΡŽ JIT-компиляции?

    НСсмотря Π½Π° довольно ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹Π΅ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ Π΅Ρ‘ воплощСния Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π²Ρ‚ΠΎΡ€ΠΈΡ‡Π½Ρ‹Ρ… ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°Ρ… (PyPy ΠΈ Ρ‚.ΠΏ.) ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Numba, ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠ½ΡΡ‚Π°Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° ΠŸΠΈΡ‚ΠΎΠ½Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠ»ΠΎΡ…ΠΎ поддаётся ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ. И ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° этого кроСтся Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… взаимосвязанных особСнностях, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ Python β€” ΠΊΡ€Π°ΠΉΠ½Π΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½Ρ‹ΠΉ язык:

    • Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, это динамичСская типизация

      Π”Π°Π½Π½ΠΎΠ΅ словосочСтаниС ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ пСрСмСнная, объявлСнная Π² этом языкС, Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ привязанного ΠΊ Π½Π΅ΠΉ Ρ‚ΠΈΠΏΠ°. Π’ΠΎ ΠΆΠ΅ самоС касаСтся сигнатур Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΏΠΎΠ»Π΅ΠΉ классов.

      ΠŸΠΈΡΠ°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² динамичСски Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… языках:

      >>> x = 3
      >>> x = '36'
      >>> 
      >>> def foo(a, b):
      >>>     if b:
      >>>         return [a]
      >>>     return a
      >>> 
      >>> foo(x, True)
      ['36']
      
      >>> foo(x, False)
      '36'
      
      >>> class Bar:
      >>>     __slots__ = ('baz',)
      >>> 
      >>> x = Bar()
      >>> x.baz = 332
      >>> x.baz
      332
      
      >>> x.baz = 'Some string'
      >>> x.baz
      'Some string'
      
      >>> foo(x, True)
      [<__main__.Bar at 0x10ff0d700>]

      Π­Ρ‚ΠΈ возмоТности приводят ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈΠΌΠ΅Π΅Ρ‚ мСньшС Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΉ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ систСмы Ρ‚ΠΈΠΏΠΎΠ². ΠžΠ±ΡˆΠΈΡ€Π½Ρ‹ΠΉ класс ошибок, ΠΎΡ‚Π»Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… Π² статичСски Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… языках Π½Π° этапС компиляции, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π² ΠŸΠΈΡ‚ΠΎΠ½Π΅ ΡƒΠΆΠ΅ Π½Π° этапС Ρ€Π°Π½Ρ‚Π°ΠΉΠΌΠ°, Ρ‡Ρ‚ΠΎ ставит Π΅Π³ΠΎ Π² ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹ΡˆΠ½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π½ΠΈΠΌΠΈ, β€” ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, ΠΏΡ€ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ большой ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ‹.

    • Вторая такая ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ β€” это пространство ΠΈΠΌΡ‘Π½.

      Π’ ΠŸΠΈΡ‚ΠΎΠ½Π΅ пСрСмСнная, Π±ΡƒΠ΄ΡƒΡ‡ΠΈ объявлСнной, Π½Π΅ обязана ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π°Ρ‚ΡŒ сущСствованиС послС Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ€ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° отступов. НапримСр, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ являСтся Ρ€Π°Π±ΠΎΡ‡ΠΈΠΌ:

      >>> a = 5
      >>> b = True
      >>> 
      >>> if b:
      >>>     x = 100
      >>> x
      100
      
      >>> for i in range(10):
      >>>     for j in range(5):
      >>>         pass
      >>> print(i, j)
      9 4

    • Π’Ρ€Π΅Ρ‚ΡŒΠΈΠΌ Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ являСтся ΡˆΠΈΡ€ΠΎΠΊΠ°Ρ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ Π² динамичСском ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ процСсса создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π’ ΠŸΠΈΡ‚ΠΎΠ½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΎΠ΅:

      >>> class Meta(type):
      >>>     def __new__(cls, name, bases, attrs):
      >>>         if list in bases:
      >>>             return super().__new__(cls, name, (tuple,), attrs)
      >>>         return super().__new__(cls, name, (list,), attrs)
      >>> 
      >>> class Foo(list, metaclass=Meta):
      >>>     pass
      >>> 
      >>> class Bar(tuple, metaclass=Meta):
      >>>     pass
      >>> 
      >>> issubclass(Foo, list)
      False
      >>> issubclass(Foo, tuple)
      True
      >>> issubclass(Bar, tuple)
      False
      >>> issubclass(Bar, list)
      True

      Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ пояснСния. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² ΠŸΠΈΡ‚ΠΎΠ½Π΅ всС сущности, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π² Ρ€Π°Π½Ρ‚Π°ΠΉΠΌΠ΅, ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΡΠ²Π»ΡΡŽΡ‚ΡΡ рСализациями, ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ ΠΈΡ… Π΅Ρ‰Ρ‘ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ — инстансами, классов. Но классы ΠΆΠ΅ вСдь Ρ‚ΠΎΠΆΠ΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ.

      Как Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ³Π°Π΄Π°Ρ‚ΡŒΡΡ, Ρ‚Π΅ сущности, инстансами ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡΠ²Π»ΡΡŽΡ‚ΡΡ классы, Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ мСтаклассами.

      Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ классы Foo ΠΈ Bar ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ±Ρ‰ΠΈΠΉ мСтакласс Meta, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ подмСняСт Ρ‚ΠΈΠΏ, ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ пытаСтся Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒΡΡ класс. Π’Π°ΠΊ, ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ ΠΎΡ‚Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° list, класс, Π½Π° самом Π΄Π΅Π»Π΅, станСт наслСдником Ρ‚ΠΈΠΏΠ° tuple, Π° Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС β€”Β Ρ‚ΠΈΠΏΠ° list.

      ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎ мСтаклассах Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ‚ΡƒΡ‚.

    • Ну ΠΈ Π½Π°ΠΊΠΎΠ½Π΅Ρ†, Ρ‡Π΅Ρ‚Π²Ρ‘Ρ€Ρ‚ΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ являСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ классы динамичСски.

      >>> from collections.abc import Iterable
      >>> 
      >>> def wrap_class(cls):
      >>>     if issubclass(cls, Iterable):
      >>>         class FooCounter(cls):
      >>>             def count_foo(self):
      >>>                 return sum(1 for item in self if item == 'foo')
      >>> 
      >>>         return FooCounter
      >>>     raise TypeError(f'Class {cls} is not an iterable type')
      >>> 
      >>> wrap_class(list)([2, 3, 'foo', 'bar', 'baz', 'foo']).count_foo()
      2

    ВсС эти особСнности Π½Π΅Π³Π°Ρ‚ΠΈΠ²Π½ΠΎ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ прСдоставлСния статичСских Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΉ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ повСдСния ΠΊΠΎΠ΄Π° Π½Π° языкС Python. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρ‹, основным ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… являСтся MyPy, нСльзя Π½Π°Π·Π²Π°Ρ‚ΡŒ Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½Π½Ρ‹ΠΌΠΈ. ОсобСнной ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΊΡ€Π°ΠΉΠ½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ Π°Π½Π°Π»ΠΈΠ·Π΅ случаСв, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… взятым ΠΈΠ· послСдних Π΄Π²ΡƒΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ². Битуация ослоТняСтся Ρ‚Π΅ΠΌ Ρ„Π°ΠΊΡ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ, нСсмотря Π½Π° всС Ρ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Ρ‚ΠΈΠ²Ρ‹, связанныС с Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ΠΌ модуля typing Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… Ρ€Π΅Π»ΠΈΠ·Π°Ρ…, систСма Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ Ρ‚ΠΈΠΏΠΎΠ² Π² ΠŸΠΈΡ‚ΠΎΠ½Π΅ остаётся Π½Π΅Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ. НапримСр, для указания интСрфСйса Ρ‚ΠΈΠΏΠ° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ wrap_class ΠΈΠ· послСднСго ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° трСбуСтся ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ‚ΠΈΠΏΠΎΠ²-пСрСсСчСний, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π΅Ρ‚.

    Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, появлСниС ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ², Π²Π²Π΅Π΄Ρ‘Π½Π½ΠΎΠΉ Π² Python 3.8, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ вносят Ρ€Π°Π½Ρ‚Π°ΠΉΠΌΠΎΠ²Ρ‹ΠΉ ΠΎΠ²Π΅Ρ€Ρ…Π΅Π΄ наслСдования, ΠΈΡΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ для ублаТСния статичСских Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΊΠΎΠ΄Π°, Π½Π° ΠΌΠΎΠΉ взягляд, ΡΠ²ΠΈΠ΄Π΅Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΡƒΠ΅Ρ‚ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ языка зашли ΠΊΡƒΠ΄Π°-Ρ‚ΠΎ Π½Π΅ Ρ‚ΡƒΠ΄Π°.

    Как Π±Ρ‹ Ρ‚ΠΎ Π½ΠΈ Π±Ρ‹Π»ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ статичСской ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ коррСктности Ρ‚ΠΈΠΏΠΎΠ² являСтся Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΉ ΠΊΠ°ΠΊ для провСдСния ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ ΠΊΠΎΠ΄Π°, Ρ‚Π°ΠΊ ΠΈ для получСния Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΉ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‡Ρ‚ΠΎ сильно ΡƒΠ΄Π΅ΡˆΠ΅Π²Π»ΡΠ΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². К соТалСнию, нСдостаточный инструмСнтарий Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ вСрсии языка, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹Π΅ возмоТности ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ² Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ ΠΊΠΎΠ΄Π° Python Π±Π΅Π· Π΅Π³ΠΎ Π°Π΄Π°ΠΏΡ‚Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ΄ использованиС сторонних Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ Ρ‚ΠΈΠΏΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Numba.

    Π’ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π±Ρ‹Π»ΠΈ рассмотрСны Π΄Π²Π° основных нСдостатка языка Python, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ: Π΅Π³ΠΎ ΠΌΠ°Π»ΠΎΠ΅ быстродСйствиС ΠΈ нСдостаточныС возмоТности статичСского Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ взаимосвязаны, ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ послСднСй автоматичСски ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ Π΄ΠΎΡ€ΠΎΠ³Ρƒ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΠ΅Ρ€Π²ΠΎΠΉ.

    Π£ΠΆΠ΅ сСйчас Π² ΠΌΠΈΡ€Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ динамичСски Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ языки с ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ компиляциСй, основанной Π½Π° ΡƒΡ‚ΠΎΡ‡Π½Π΅Π½ΠΈΠΈ Ρ‚ΠΈΠΏΠΎΠ². Π‘Π°ΠΌΡ‹ΠΌ интСрСсным ΠΈΠ· Π½ΠΈΡ…, Π½Π° ΠΌΠΎΠΉ взгляд, являСтся Julia. Π’ΠΎΠ·ΡŒΠΌΡƒΡ‚ Π»ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ CPython Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π° Π²ΠΎΠΎΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ β€”Β ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ врСмя.

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

    Python-нСизвСстный / Π₯Π°Π±Ρ€

    На Π₯Π°Π±Ρ€Π΅ ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ нСсколько статСй\ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΎΠ², Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… рассказываСтся ΠΎ нСизвСстных Ρ„ΠΈΡ‡Π°Ρ…\тонкостях\возмоТностях ΠŸΠ°ΠΉΡ‚ΠΎΠ½Π°. Π― Π±ΡƒΠ΄Ρƒ ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ Π½Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ ΠΈΡ…, Π° Π΄ΠΎΠΏΠΎΠ»Π½ΡΡ‚ΡŒ, Π½ΠΎ Ссли ΡƒΠΆ Ρ‚Π°ΠΊ ΡΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ это ΡƒΠΆΠ΅ Π³Π΄Π΅-Ρ‚ΠΎ Π²ΠΈΠ΄Π΅Π»ΠΈ β€” Π½Π΅ ΠΎΠ³ΠΎΡ€Ρ‡Π°ΠΉΡ‚Π΅ΡΡŒ. Π― ΡƒΠ²Π΅Ρ€Π΅Π½, Ρ‡Ρ‚ΠΎ найдСтся Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ интСрСсноС ΠΈ для вас.

    Π˜Ρ‚Π°ΠΊ, ΠΏΠΎΠ΅Ρ…Π°Π»ΠΈ.

    Π¦Π΅ΠΏΠΎΡ‡ΠΊΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² сравнСния (chaining comparison):
    >>> 1 < 5 < 10
    True
    >>> 1 < 11 < 10
    False
    >>> 1 < 11 > 10
    True
    

    ΠŸΡ€Π°Π²Π΄Π° ΠΈ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ вся магия поломаСтся Ссли Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ скобки:

    >>> (1 < 11) > 10
    False
    

    Π”ΠΎΠΊΠ°

    iter ΠΈ Π΄Π²Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°

    Built-in функция iter Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ для ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Но, Ссли ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π΄Π²Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ callable-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ, Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ β€” Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π° ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ. НапримСр, Ρ‡ΠΈΡ‚Π°Π΅ΠΌ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° Π΄ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠΉ пустой строки:

    with open('mydata.txt') as fp:
        for line in iter(fp.readline, ''):
            process_line(line)
    

    Π”ΠΎΠΊΠ°

    contextlib

    ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ Π»Π΅Π³ΠΊΠΎ ΠΈ красиво ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ синтаксисом with EXPR as VAR для своих собствСнных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ Ρ‚.Π΄. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ· Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ:

    from contextlib import contextmanager
    
    @contextmanager
    def tag(name):
        print "[%s]" % name
        yield
        print "[/%s]" % name
    
    >>> with tag("h2"):
    ...    print "foo"
    ...
    [h2]
    foo
    [/h2]
    

    Π”ΠΎΠΊΠ°, PEP 343

    АргумСнты ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ

    Π—Π΄Π΅ΡΡŒ нСсколько Β«Ρ…Π°ΠΊΠΎΠ²Β». Π’ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, использованиС измСняСмых (mutable) ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ β€” ΠΏΠΎΡ‡Ρ‚ΠΈ всСгда плохая идСя:

    >>> def foo(a=list()):
    ...     a.append(1)
    ...     print a
    ...
    >>> foo()
    [1]
    >>> foo()
    [1, 1]
    >>> foo()
    [1, 1, 1]
    

    ΠŸΠΎΡ‡Π΅ΠΌΡƒ Ρ‚Π°ΠΊ? ЗначСния Π°Π³Ρ€ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π· ΠΏΡ€ΠΈ создании Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π² свойствС func_defaults:

    >>> foo.func_defaults
    ([1, 1, 1],)
    

    Но Π΅ΡΡ‚ΡŒ Π² довСсок ΠΈ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ Ρ€Π΅Ρ†Π΅ΠΏΡ‚. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π΅ совсСм Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ оТидаСтся:

    >>> l = []
    >>> for i in range(3):
    ...     l.append(lambda: i * 2)
    ...
    >>> for x in l:
    ...     x()
    ...
    4
    4
    4
    

    ΠŸΠΎΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ просто ΠΈ элСгантно β€” достаточно Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ lambda: i * 2 Π½Π° lambda i=i: i * 2:

    >>> l = []
    >>> for i in range(3):
    ...     l.append(lambda i=i: i * 2)
    ...
    >>> for x in l:
    ...     x()
    ...
    0
    2
    4
    

    О ΠΈΠΌΠ΅Π½Π°Ρ… ΠΈ привязкС ΠΊ Π½ΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π² Execution Model.

    Ellipsis

    Π’ зависимости ΠΎΡ‚ контСкста (Ρ‚Ρ€ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ) ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ допустимым синтаксисом. Π’Π°ΠΊ, list[…] ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ __getitem__ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° Ellipsis β€” СдинствСнный ΠΈ Π½Π΅ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΠΌΡ‹ΠΉ Π² своСм Ρ€ΠΎΠ΄Π΅. ДСмонстрация:

    >>> class L(list):
    ...     def __getitem__(self, *args):
    ...             print args
    ...             return list.__getitem__(self, *args)
    ...
    >>> l[...]
    (Ellipsis,)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "<stdin>", line 4, in __getitem__
    TypeError: list indices must be integers, not ellipsis
    

    Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ эта ΠΏΡ€Π΅Π»Π΅ΡΡ‚ΡŒ Π² Numpy.

    ОбмСн значСниями ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…

    Π’ 10-ΠΎΠΌ классС Π½Π°ΠΌ Π½Π° ΡƒΡ€ΠΎΠΊΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π»ΠΈ Π·Π°Π΄Π°Ρ‡ΠΊΡƒ β€” ΠΎΠ±ΠΌΠ΅Π½ΡΡ‚ΡŒ мСстами значСния Π΄Π²ΠΎΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚Ρ€Π΅Ρ‚ΡŒΡŽ. Π’ ΠŸΠ°ΠΉΡ‚ΠΎΠ½Π΅ это Π΄Π°ΠΆΠ΅ Π½Π΅ вопрос:

    >>> a = 10
    >>> b = 5
    >>> a, b
    (10, 5)
    >>> a, b = b, a
    >>> a, b
    (5, 10)
    
    Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ list comprehensions

    Π’ list comprehensions ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСсколько for:

    >>> l = [[1,2,3], [4,5,6]]
    >>> [lll * 2 for ll in l for lll in ll]
    [2, 4, 6, 8, 10, 12]
    
    Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… измСняСмых ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²

    НапримСр, Π½Π°Π΄ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ список ΠΈΠ· 5 списков. Π₯очСтся ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

    >>> l = [[]] * 5
    >>> l
    [[], [], [], [], []]
    

    Но нСльзя:

    >>> l[0].append(1)
    >>> l
    [[1], [1], [1], [1], [1]]
    

    Π›ΡƒΡ‡ΡˆΠ΅ Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

    >>> l = [[] for _ in range(5)]
    
    rot13, string_escape, unicode_escape ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ

    Π‘ΡƒΠΏΠ΅Ρ€ сСкрСтный ΠΌΠ΅Ρ‚ΠΎΠ΄ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ Rot13:

    >>> 'Hello world!'.encode('rot13')
    'Uryyb jbeyq!'
    >>> 'Uryyb jbeyq!'.decode('rot13')
    u'Hello world!'
    

    Π”Π°Π»Π΅Π΅. НапримСр, Π΅ΡΡ‚ΡŒ строка ΠΈΠ· внСшнСго источника, ΠΏΡ€ΠΈ этом Π² строкС Π΅ΡΡ‚ΡŒ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹ \n, \t, \r ΠΈ Ρ‚.ΠΏ. Как ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΡ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ строку (ΠΏΠΎ сути, ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ бСзопасный eval)?

    >>> s = 'Hello\\n\\rworld!'
    >>> s
    'Hello\\n\\rworld!'
    >>> repr(s)
    "'Hello\\\\n\\\\rworld!'"
    >>> print s.decode('string_escape')
    Hello
    world!
    

    unicode_escape Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с юникодом, Π° Π½Π΅ со строками. Π’Π°ΠΊ ΠΆΠ΅ ΠΎΠ½ ΡƒΠΌΠ΅Π΅Ρ‚ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ строку ‘\u0457’ Π² Π±ΡƒΠΊΠ²Ρƒ «Ρ—»:

    >>> print '\u0457'.decode('unicode_escape')
    Ρ—
    

    ΠŸΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΎΠΊ β€” standard-encodings.

    textwrap

    ΠžΡ‡Π΅Π½ΡŒ полСзная Π»ΠΈΠ±Π° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с тСкстами. Π”Π΅Π»Π°Π΅ΠΌ с Π΄Π»ΠΈΠ½Π½ΠΎΠΉ строки ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Π»ΠΊΠΈΡ…:

    >>> s = "Python is a programming language that lets you work more quickly and integrate your systems more effectively. You can learn to use Python and see almost immediate gains in productivity and lower maintenance costs."
    >>> print textwrap.fill(s, 25)
    Python is a programming
    language that lets you
    work more quickly and
    integrate your systems
    more effectively. You can
    learn to use Python and
    see almost immediate
    gains in productivity and
    lower maintenance costs.
    

    Π”ΠΎΠΊΠ° β€” Ρ‚Π°ΠΌ Π΅Ρ‰Ρ‘ ΠΌΠ½ΠΎΠ³ΠΎ вкусного.

    itertools

    БплошноС умилСния. Π§ΠΈΡ‚Π°Ρ‚ΡŒ-Π½Π΅ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ, особСнно Ρ€Π°Π·Π΄Π΅Π» с Ρ€Π΅Ρ†Π΅ΠΏΡ‚Π°ΠΌΠΈ. Π—Π΄Π΅ΡΡŒ вспомню grouper:

    >>> def grouper(n, iterable, fillvalue=None):
    ...     "grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx"
    ...     args = [iter(iterable)] * n
    ...     return izip_longest(fillvalue=fillvalue, *args)
    ...
    >>> list(grouper(2, [1,2,3,4,5,6]))
    [(1, 2), (3, 4), (5, 6)]
    >>> list(grouper(3, [1,2,3,4,5,6]))
    [(1, 2, 3), (4, 5, 6)]
    >>> list(grouper(4, [1,2,3,4,5,6], fillvalue=0))
    [(1, 2, 3, 4), (5, 6, 0, 0)]
    

    Ρ„ΠΈΡˆΠΊΠ° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ с ΠΎΠ΄Π½ΠΈΠΌ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ

    Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ

    Π‘ΠΎΠ»ΡŒΡˆΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈΠ· Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ‚ΠΎΠΏΠΈΠΊΠ° Π½Π° StackOverFlow, ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ β€” собствСнныС наблюдСния. На эту Ρ‚Π΅ΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ, поэтому старался подСлится Ρ‚ΠΎΠ»ΡŒΠΊΠΎ самым интСрСсным ΠΈ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ.
    Бпасибо за вниманиС!
    Π”Π° ΠΏΡ€ΠΈΠ±ΡƒΠ΄Π΅Ρ‚ с Π²Π°ΠΌΠΈ сила Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ!

    P.S. Если Π΅ΡΡ‚ΡŒ замСчания β€” Π±ΡƒΠ΄Ρƒ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΡ€ΠΈΠ·Π½Π°Ρ‚Π΅Π»Π΅Π½ Π·Π° сообщСния Π² Π»ΠΈΡ‡ΠΊΡƒ.

    ΠœΠ½ΠΎΠ³ΠΎΡΡ‚Ρ€ΠΎΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π² Python

    ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ стСка

    1. Около
    2. ΠŸΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹

    3. Для ΠΊΠΎΠΌΠ°Π½Π΄
    1. ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ стСка
      ΠžΠ±Ρ‰Π΅ΡΡ‚Π²Π΅Π½Π½Ρ‹Π΅ вопросы ΠΈ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹

    2. ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ стСка для ΠΊΠΎΠΌΠ°Π½Π΄
      Π“Π΄Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈ дСлятся частными знаниями с ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌΠΈ

    3. Вакансии
      ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ связанныС с Π½ΠΈΠΌ тСхничСскиС возмоТности ΠΊΠ°Ρ€ΡŒΠ΅Ρ€Π½ΠΎΠ³ΠΎ роста

    4. Π’Π°Π»Π°Π½Ρ‚
      НанимайтС тСхничСских спСциалистов ΠΈ создавайтС свой Π±Ρ€Π΅Π½Π΄ работодатСля

    5. Π Π΅ΠΊΠ»Π°ΠΌΠ°
      ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³Π°ΠΌ со всСго ΠΌΠΈΡ€Π°

    6. О компании

    .

    ΠžΠ±Ρ‰ΠΈΠ΅ свСдСния ΠΎ коммСнтариях Python, многострочных коммСнтариях ΠΈ строках Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²

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

    НаписаниС ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² — Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования. Они ΡΠ²Π»ΡΡŽΡ‚ΡΡ нСисполняСмой Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΊΠΎΠ΄Π°, Π½ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½Ρ‹ для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.Они Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠΌ программистам, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΌ Π½Π°Π΄ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ, Π½ΠΎ ΠΈ тСстировщики ΠΌΠΎΠ³ΡƒΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… для ясности ΠΏΡ€ΠΈ тСстировании ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Π±Π΅Π»ΠΎΠ³ΠΎ ящика.

    Π›ΡƒΡ‡ΡˆΠ΅ всСго Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΏΡ€ΠΈ создании ΠΈΠ»ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΈΠ½Π°Ρ‡Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒ контСкст. А ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, написанныС ΠΏΠΎΠ·ΠΆΠ΅, ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π½Π΅ ΡΡ‚ΠΎΠ»ΡŒ эффСктивными, ΠΊΠ°ΠΊ слСдовало Π±Ρ‹.

    Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π² Python?

    ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ — это искусство выраТСния Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° собираСтся Π΄Π΅Π»Π°Ρ‚ΡŒ Π½Π° ΠΎΡ‡Π΅Π½ΡŒ высоком ΡƒΡ€ΠΎΠ²Π½Π΅. Π­Ρ‚ΠΎ строки тСкста с Ρ‚Π΅Π³Π°ΠΌΠΈ для аннотирования Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΊΠΎΠ΄Π°.Π’ Python ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π΄Π²Π° стиля ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π²: однострочныС ΠΈ многострочныС.

    ΠžΠ΄Π½ΠΎΡΡ‚Ρ€ΠΎΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Python

    Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Π΅ΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ однострочный ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Python, ΠΊΠΎΠ³Π΄Π° Π΅ΡΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π² ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΡ… быстрых коммСнтариях для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ. ΠžΠ΄Π½ΠΎΡΡ‚Ρ€ΠΎΡ‡Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с символа Ρ€Π΅ΡˆΠ΅Ρ‚ΠΊΠΈ (#) ΠΈ автоматичСски Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ EOL (ΠΊΠΎΠ½Ρ†ΠΎΠΌ строки).

     # Π₯ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΊΠΎΠ΄ самодокумСнтируСтся.
    
    print (Β«Π£Ρ‡ΠΈΡ‚Π΅ Python шаг Π·Π° шагом!Β») 

    ΠŸΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ коммСнтария ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ваш ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ находится Π½Π° Ρ‚ΠΎΠΌ ΠΆΠ΅ ΡƒΡ€ΠΎΠ²Π½Π΅ отступа, Ρ‡Ρ‚ΠΎ ΠΈ ΠΊΠΎΠ΄ ΠΏΠΎΠ΄ Π½ΠΈΠΌ.НапримСр, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π½Π΅Ρ‚ отступов. Но функция ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π±Π»ΠΎΠΊΠΈ ΠΊΠΎΠ΄Π° с нСсколькими уровнями отступа. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ·Π°Π±ΠΎΡ‚ΡŒΡ‚Π΅ΡΡŒ ΠΎ Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π±Π»ΠΎΠΊΠΎΠ² Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ ΠΊΠΎΠ΄Π°.

     # ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ список мСсяцСв
    мСсяцы = ['Π―Π½Π²', 'Π€Π΅Π²', 'ΠœΠ°Ρ€', 'ΠΠΏΡ€Π΅Π»ΡŒ', 'Май', 'Июнь', 'Июль', 'Август', 'Π‘Π΅Π½', 'ΠžΠΊΡ‚ΡΠ±Ρ€ΡŒ', 'ΠΠΎΡΠ±Ρ€ΡŒ', 'Π”Π΅ΠΊ' ]
    
    # Ѐункция для ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ ΠΊΠ°Π»Π΅Π½Π΄Π°Ρ€Π½Ρ‹Ρ… мСсяцСв
    def showCalender (мСсяцы):
        # Π¦ΠΈΠΊΠ» For, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ просматриваСт список ΠΈ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ мСсяца
        Π·Π° мСсяц Π² мСсяцах:
            ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (мСсяц)
    
    showCalender (мСсяцы)
     

    НавСрх

    ΠœΠ½ΠΎΠ³ΠΎΡΡ‚Ρ€ΠΎΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Python

    Python позволяСт Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… строках.Π’Π°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ извСстны ΠΊΠ°ΠΊ многострочныС ΠΈΠ»ΠΈ Π±Π»ΠΎΡ‡Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот ΡΡ‚ΠΈΠ»ΡŒ коммСнтирования, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅ слоТноС.

    Π­Ρ‚Π° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Π°Ρ Ρ„ΠΎΡ€ΠΌΠ° ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² примСняСтся ΠΊ части ΠΈΠ»ΠΈ ΠΊΠΎ всСму ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΊΠΎΠ΄Ρƒ. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования многострочного коммСнтария Python.

    ИспользованиС Ρ€Π΅ΡˆΠ΅Ρ‚ΠΊΠΈ (#)

    Π§Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ многострочныС ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ строку с символа Ρ€Π΅ΡˆΠ΅Ρ‚ΠΊΠΈ (#), Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ слСдуСт ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΎΠ±Π΅Π». Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π½Π° Π°Π±Π·Π°Ρ†Ρ‹. ΠŸΡ€ΠΎΡΡ‚ΠΎ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΏΡƒΡΡ‚ΡƒΡŽ строку с Ρ€Π΅ΡˆΠ΅Ρ‚ΠΊΠΎΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ ΠΏΠ°Ρ€Π°Π³Ρ€Π°Ρ„ΠΎΠΌ.

    ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π‘ΠΈΠΌΠ²ΠΎΠ» (#) Ρ‚Π°ΠΊΠΆΠ΅ извСстСн ΠΊΠ°ΠΊ ΠΎΠΊΡ‚ΠΎΡ€ΠΏ. Π­Ρ‚ΠΎΡ‚ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ Π±Ρ‹Π» использован Π³Ρ€ΡƒΠΏΠΏΠΎΠΉ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΎΠ² Bell Labs, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Π½Π°Π΄ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ Ρ‚ΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€.

     # Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΡƒΡ‡ΠΈΡ‚ΡŒ любой язык, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°.
    # 1. Π—Π½Π°Ρ‚ΡŒ основной синтаксис, Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ структуры ΠΈ условныС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹.
    # 2. Π˜Π·ΡƒΡ‡ΠΈΡ‚Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ошибок ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ Π²Π²ΠΎΠ΄-Π²Ρ‹Π²ΠΎΠ΄.
    # 3. ΠŸΡ€ΠΎΡ‡Ρ‚ΠΈΡ‚Π΅ ΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Ρ… структурах Π΄Π°Π½Π½Ρ‹Ρ….
    # 4. ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ слСдуйтС концСпциям ООП.def main ():
        print (Β«Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Ρ‡Π½Π΅ΠΌ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ Python.Β»)
    ... 

    НавСрх

    Π‘Ρ‚Ρ€ΠΎΠΊΠ° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π² Python

    Python ΠΈΠΌΠ΅Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ строк Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ (ΠΈΠ»ΠΈ строк Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ). Π­Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ программистам простой способ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ быстрыС Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, классу ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ Python.

    Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ строку Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π΅Π΅ ΠΊΠ°ΠΊ ΡΡ‚Ρ€ΠΎΠΊΠΎΠ²ΡƒΡŽ константу. Π­Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° (модуля, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, класса ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°).

    Π‘Ρ‚Ρ€ΠΎΠΊΠ° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ дСйствия, Ρ‡Π΅ΠΌ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Python. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ функция Π΄Π΅Π»Π°Π΅Ρ‚, Π° Π½Π΅ ΠΊΠ°ΠΊ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, рСкомСндуСтся, Ρ‡Ρ‚ΠΎΠ±Ρ‹ всС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠΌΠ΅Π»ΠΈ строку Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

    Как ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ строку Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π² Python?

    Π‘Ρ‚Ρ€ΠΎΠΊΡƒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Ρ€ΠΎΠΉΠ½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΎΠ΄ΠΈΠ½ Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΈ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π² ΠΊΠΎΠ½Ρ†Π΅ строки. Как ΠΈ многострочныС ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, строка Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒΡΡ нСсколькими строками.

    ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π‘Ρ‚Ρ€ΠΎΠΊΠΈ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Ρ€ΠΎΠΉΠ½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ, ΡΠ²Π»ΡΡŽΡ‚ΡΡ строками Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π² Python.Однако ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π²Π°ΠΌ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅ΠΌ.

    Π’ Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅ΠΌ ΠΈ строкой Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°?

    Π‘Ρ‚Ρ€ΠΎΠΊΠΈ, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ΡΡ с Ρ‚Ρ€ΠΎΠΉΠ½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ, ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ строками, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ Ρ„Π°ΠΊΡ‚Π°, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°ΡΡ‚ΡΠ³ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π½Π° нСсколько строк. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ это исполняСмыС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹. А Ссли ΠΎΠ½ΠΈ Π½Π΅ ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹, ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½.

    Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Python Π½Π΅ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΡ…, ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ. Однако, Ссли такая строка помСщаСтся сразу послС опрСдСлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ класса ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅Ρ€Ρ… модуля, ΠΎΠ½ΠΈ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ Π² строки Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊ Π½ΠΈΠΌ доступ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

     myobj .__ doc__ 

    ΠŸΡ€ΠΈΠΌΠ΅Ρ€

     def theFunction ():
        '' '
    Π­Ρ‚Π° функция дСмонстрируСт использованиС строки Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π² Python.
        '' '
        print ("Π‘Ρ‚Ρ€ΠΎΠΊΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Python Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ коммСнтариями.")
    
    print ("\ nΠŸΡ€ΠΎΡΡ‚ΠΎ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°ΠΉΡ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ строки Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ...")
    print (theFunction .__ doc__)
     

    НавСрх

    Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ — ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΈ строка Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Python

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

    ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 10% Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ, Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ 90% Π½Π° обслуТиваниС.

    Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, всСгда добавляйтС Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½Ρ‹Π΅ ΠΈ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΈΠ»ΠΈ строки Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ Π²Π΅Π΄ΡƒΡ‚ ΠΊ Π±ΠΎΠ»ΡŒΡˆΠ΅ΠΌΡƒ сотрудничСству ΠΈ ΡƒΡΠΊΠΎΡ€ΡΡŽΡ‚ Π΄Π΅ΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Ρƒ ΠΊΠΎΠ΄Π°.

    Если Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠ΅, Ρ‡Π΅ΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ сСгодня, ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚Π΅ΡΡŒ этим с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ.И ΠΏΠΎΠ΄ΠΏΠΈΡˆΠΈΡ‚Π΅ΡΡŒ Π½Π° нас Π² Π½Π°ΡˆΠΈΡ… ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… сСтях ( Facebook / Twitter ), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΎΠ± этом большС.

    Best,

    TechBeamers

    .

    ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² Python (с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ)

    Они ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ Python.


    ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° использования ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π²

    ИспользованиС ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… Π΄Π΅Π»Π°Π΅Ρ‚ наш ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ понятным. Π­Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π±ΠΎΠ»Π΅Π΅ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠΉ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π½Π°ΠΌ Π²ΡΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π±Ρ‹Π»ΠΈ написаны ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ ΠΊΠΎΠ΄Π°.

    Помимо этого, ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для игнорирования Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΈ тСстировании Π΄Ρ€ΡƒΠ³ΠΈΡ… Π±Π»ΠΎΠΊΠΎΠ² ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΎ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ простой способ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… строк ΠΈΠ»ΠΈ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ быстрый псСвдокод для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.


    ΠžΠ΄Π½ΠΎΡΡ‚Ρ€ΠΎΡ‡Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π² Python

    Π’ Python ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ…ΡΡˆ-символ # для записи однострочного коммСнтария.

    ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1: НаписаниС однострочных ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π²

      # ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ строки
    print ('ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ΠΌΠΈΡ€')
      

    Π’Ρ‹Ρ…ΠΎΠ΄

      ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ΠΌΠΈΡ€
      

    Π’ΠΎΡ‚ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ:

      # ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ строки
      

    Π­Ρ‚Π° строка игнорируСтся ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ Python.

    ВсС, Ρ‡Ρ‚ΠΎ ΠΈΠ΄Π΅Ρ‚ послС # , игнорируСтся. Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π² ΠΎΠ΄Π½ΠΎΠΉ строкС ΠΊΠ°ΠΊ:

      print ('Hello world') # ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ строки
      

    Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π² , ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ 1 . Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ вСсь тСкст послС # .


    ΠœΠ½ΠΎΠ³ΠΎΡΡ‚Ρ€ΠΎΡ‡Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π² Python

    Python Π½Π΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ способа написания многострочных ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π². Однако Π΅ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ способы ΠΎΠ±ΠΎΠΉΡ‚ΠΈ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ.

    ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ # Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки коммСнтария Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… строках.

    ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2: ИспользованиС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… #

      # это
    # многострочный
    # ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ
      

    Π—Π΄Π΅ΡΡŒ каТдая строка рассматриваСтся ΠΊΠ°ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ, ΠΈ всС ΠΎΠ½ΠΈ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ.


    НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ сущСствуСт ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ способа написания многострочных ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² Π² Python, ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Python ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ строковыС Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ присвоСны ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

    Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π°ΠΆΠ΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ однострочный ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΊΠ°ΠΊ:

      # это ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ
    'это нСназначСнная строка Π² качСствС коммСнтария'
      

    Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ вторая строка ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ являСтся строкой, Π½ΠΎ Π½Π΅ присвоСна ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.Π˜Ρ‚Π°ΠΊ, ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ строку.

    Аналогичным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ многострочныС строки (Ρ‚Ρ€ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ) для написания многострочных ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π².

    Π‘ΠΈΠΌΠ²ΠΎΠ» ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ' ΠΈΠ»ΠΈ ".

    ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 3: ИспользованиС строковых Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ² для написания многострочных ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π²

      ''
    
    Π―
    многострочный ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ!
    
    '' '
    print ("ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ΠΌΠΈΡ€")
      

    Π—Π΄Π΅ΡΡŒ многострочная строка Π½Π΅ присвоСна ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, поэтому ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π΅Π΅.Π₯отя тСхничСски это Π½Π΅ многострочный ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½.


    Π‘Ρ‚Ρ€ΠΎΠΊΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Python

    По соглашСнию Ρ‚Ρ€ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ сразу послС опрСдСлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈΠ»ΠΈ класса, ΡΠ²Π»ΡΡŽΡ‚ΡΡ строками Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ (строками Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ).

    Π‘Ρ‚Ρ€ΠΎΠΊΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² связаны с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, ΠΈ ΠΊ Π½ΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° __doc__ .

    Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС, посСтитС строки Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Python.


    • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ функция, Π° Π½Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ Π΄Π΅Ρ‚Π°Π»ΠΈ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ функция это Π΄Π΅Π»Π°Π΅Ρ‚.
    • ΠŸΠΎΡΡ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ большС ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π². ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ сСбя, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π»ΡƒΡ‡ΡˆΠΈΠΉ Π²Ρ‹Π±ΠΎΡ€ ΠΈΠΌΠ΅Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ / ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.
    • ΠŸΠΎΡΡ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΡ€ΠΎΡ‡Π΅ ΠΈ Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π½Π΅Π΅.

    .

    Python ΠœΠ½ΠΎΠ³ΠΎΡΡ‚Ρ€ΠΎΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ | Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ многострочный ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Python?

    Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Python ΠœΠ½ΠΎΠ³ΠΎΡΡ‚Ρ€ΠΎΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

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

    Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ многострочный ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Python?

    ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ — это Π½Π°Π±ΠΎΡ€ слов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ·Π²Π°Π½Ρ‹ ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° английском языкС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π»Π΅Π³ΠΊΠΎ читаСтся. Π’ python символ Ρ€Π΅ΡˆΠ΅Ρ‚ΠΊΠΈ (#) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Π½Π°Ρ‡Π°Π»Π΅ строки, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅ΠΌ. Π’ Python Π½Π΅Ρ‚ многострочного коммСнтария, Π½ΠΎ, Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, сущСствуСт ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° использования Ρ‚Ρ€ΠΎΠΉΠ½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ для объявлСния многострочного коммСнтария.

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

    Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ однострочныС ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π² Python Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

    Код:

    # ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ выписки
    print "Hello Educba"

    Π’Ρ‹Ρ…ΠΎΠ΄:

    Π‘Π»ΠΎΠ²Π° синСго Ρ†Π²Π΅Ρ‚Π°, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ΡΡ с символа #, ΡΠ²Π»ΡΡŽΡ‚ΡΡ строкой коммСнтария Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅.А Π½ΠΈΠΆΠ΅ — ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ для ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ инструкции. Π­Ρ‚ΠΎ однострочный ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ начинаСтся с символа Ρ€Π΅ΡˆΠ΅Ρ‚ΠΊΠΈ (#) ΠΈ заканчиваСтся ΠΊΠΎΠ½Ρ†ΠΎΠΌ строки. Π­Ρ‚ΠΈ однострочныС ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для ΠΊΡ€Π°Ρ‚ΠΊΠΈΡ… ΠΈ q

    .

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

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