Python описаниС – ΠžΡΠ½ΠΎΠ²Ρ‹ языка программирования Python Π·Π° 10 ΠΌΠΈΠ½ΡƒΡ‚ / Habr

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

ΠžΡΠ½ΠΎΠ²Ρ‹ языка программирования Python Π·Π° 10 ΠΌΠΈΠ½ΡƒΡ‚ / Habr

На сайтС Poromenos’ Stuff Π±Ρ‹Π»Π°
ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π° ΡΡ‚Π°Ρ‚ΡŒΡ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ, Π² сТатой Ρ„ΠΎΡ€ΠΌΠ΅,
Ρ€Π°ΡΡΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΎΠ± основах языка Python. Π― ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽ Π²Π°ΠΌ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ этой ΡΡ‚Π°Ρ‚ΡŒΠΈ. ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ Π½Π΅ дословный. Π― постарался ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ нСпонятны.

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



ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ свойства

Python Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ явного объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, являСтся рСгистро-зависим (пСрСмСнная var Π½Π΅ эквивалСнтна ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Var ΠΈΠ»ΠΈ VAR β€” это Ρ‚Ρ€ΠΈ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅) ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ языком.

Бинтаксис

Π’ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… стоит ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠ½ΡƒΡŽ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ Python. Он Π½Π΅ содСрТит ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π½Ρ‹Ρ… скобок (begin..end Π² pascal ΠΈΠ»ΠΈ {..}Π² Π‘ΠΈ), вмСсто этого

Π±Π»ΠΎΠΊΠΈ Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ΡΡ отступами: ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ ΠΈΠ»ΠΈ табуляциСй, Π° Π²Ρ…ΠΎΠ΄ Π² Π±Π»ΠΎΠΊ ΠΈΠ· ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² осущСствляСтся Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅ΠΌ. ΠžΠ΄Π½ΠΎΡΡ‚Ρ€ΠΎΡ‡Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ со Π·Π½Π°ΠΊΠ° Ρ„ΡƒΠ½Ρ‚Π° Β«#Β», многострочныС β€” Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ ΠΈ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ трСмя Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌΠΈ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ Β«»»»Β».
Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π·Π½Π°ΠΊ Β«=Β», Π° для сравнСния β€”
Β«==Β». Для увСличСния значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΈΠ»ΠΈ добавлСния ΠΊ строкС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Β«+=Β», Π° для ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ β€” Β«-=Β». ВсС эти ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎΠΌ Ρ‚ΠΈΠΏΠΎΠ², Π² Ρ‚ΠΎΠΌ числС со строками. НапримСр


>>> myvar = 3
>>> myvar += 2
>>> myvar -= 1
«»Β«Π­Ρ‚ΠΎ многострочный ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ
Π‘Ρ‚Ρ€ΠΎΠΊΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ Π² Ρ‚Ρ€ΠΈ Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡΒ»»»
>>> mystring = Β«HelloΒ»
>>> mystring += » world.»
>>> print mystring
Hello world.
# Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ строка мСняСт
значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… мСстами. (ВсСго ΠΎΠ΄Π½Π° строка!)
>>> myvar, mystring = mystring, myvar

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…

Python содСрТит Ρ‚Π°ΠΊΠΈΠ΅ структуры Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠ°ΠΊ списки (lists), ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ (tuples) ΠΈ словари (dictionaries). Бписки β€” ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы (Π½ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Бписок Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ списки β€” ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив), ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ β€” нСизмСняСмыС списки, словари β€” Ρ‚ΠΎΠΆΠ΅ списки, Π½ΠΎ индСксы ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ любого Ρ‚ΠΈΠΏΠ°, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ числовыми. «ΠœΠ°ΡΡΠΈΠ²Ρ‹» Π² Python ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ любого Ρ‚ΠΈΠΏΠ°, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π² ΠΎΠ΄Π½ΠΎΠΌ массивС ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ числовыС, строковыС ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…. ΠœΠ°ΡΡΠΈΠ²Ρ‹ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с индСкса 0, Π° послСдний элСмСнт ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎ индСксу -1 Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… соотвСтствСнно.


>>> sample = [1, [Β«anotherΒ», Β«listΒ»], (Β«aΒ», Β«tupleΒ»)] #Бписок состоит ΠΈΠ· Ρ†Π΅Π»ΠΎΠ³ΠΎ числа, Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ списка ΠΈ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°
>>> mylist = [Β«List item 1Β», 2, 3.14] #Π­Ρ‚ΠΎΡ‚ список содСрТит строку, Ρ†Π΅Π»ΠΎΠ΅ ΠΈ Π΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ число
>>> mylist[0] = Β«List item 1 againΒ» #ИзмСняСм ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ (Π½ΡƒΠ»Π΅Π²ΠΎΠΉ) элСмСнт листа mylist
>>> mylist[-1] = 3.14 #ИзмСняСм послСдний элСмСнт листа
>>> mydict = {Β«Key 1Β»: Β«Value 1Β», 2: 3, Β«piΒ»: 3.14} #Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ, с числовыми ΠΈ цСлочислСнным индСксами
>>> mydict[Β«piΒ»] = 3.15 #ИзмСняСм элСмСнт словаря ΠΏΠΎΠ΄ индСксом Β«piΒ».
>>> mytuple = (1, 2, 3) #Π—Π°Π΄Π°Π΅ΠΌ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ
>>> myfunction = len #Python позволяСт Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ синонимы Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
>>> print myfunction(list)
3

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ массива, задавая ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈ послСдний индСкс Ρ‡Π΅Ρ€Π΅Π· Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅ Β«:Β». Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Ρ‡Π°ΡΡ‚ΡŒ массива, ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ индСкса Π΄ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ. Если Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт, Ρ‚ΠΎ отсчСт начинаСтся с Π½Π°Ρ‡Π°Π»Π° массива, Π° Ссли Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ послСдний β€” Ρ‚ΠΎ масив считываСтся Π΄ΠΎ послСднСго элСмСнта. ΠžΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ значСния ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ элСмСнта с ΠΊΠΎΠ½Ρ†Π°. НапримСр:


>>> mylist = [Β«List item 1Β», 2, 3.14]
>>> print mylist[:] #Π‘Ρ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ всС элСмСнты массива
[‘List item 1’, 2, 3.1400000000000001]
>>> print mylist[0:2] #Π‘Ρ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π½ΡƒΠ»Π΅Π²ΠΎΠΉ ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт массива.
[‘List item 1’, 2]
>>> print mylist[-3:-1] #Π‘Ρ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ элСмСнты ΠΎΡ‚ Π½ΡƒΠ»Π΅Π²ΠΎΠ³ΠΎ (-3) Π΄ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ (-1) (Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ)
[‘List item 1’, 2]
>>> print mylist[1:] #Π‘Ρ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ элСмСнты ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ, Π΄ΠΎ послСднСго
[2, 3.14]

Π‘Ρ‚Ρ€ΠΎΠΊΠΈ

Π‘Ρ‚Ρ€ΠΎΠΊΠΈ Π² Python ΠΎΠ±ΠΎΡΠΎΠ±Π»ΡΡŽΡ‚ΡΡ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌΠΈ Β«»Β» ΠΈΠ»ΠΈ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΌΠΈ Β«’Β». Π’Π½ΡƒΡ‚Ρ€ΠΈ Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… ΠΊΠΎΠ²Ρ‹Ρ‡Π΅ΠΊ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΈΠ»ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ строка «Он сказал ‘ΠΏΡ€ΠΈΠ²Π΅Ρ‚’!Β» Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½Π° Π½Π° экран ΠΊΠ°ΠΊ «Он сказал ‘ΠΏΡ€ΠΈΠ²Π΅Ρ‚’!Β». Если Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ строку ΠΈΠ· нСсколько строчСк, Ρ‚ΠΎ эту строку Π½Π°Π΄ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ ΠΈ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ трСмя Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌΠΈ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ Β«»»»Β». Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² шаблон строки элСмСнты ΠΈΠ· ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° ΠΈΠ»ΠΈ словаря. Π—Π½Π°ΠΊ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π° Β«%Β» ΠΌΠ΅ΠΆΠ΄Ρƒ строкой ΠΈ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΌ, замСняСт Π² строкС символы Β«%sΒ» Π½Π° элСмСнт ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°. Π‘Π»ΠΎΠ²Π°Ρ€ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π² строку элСмСнт ΠΏΠΎΠ΄ Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ индСксом. Для этого Π½Π°Π΄ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² строкС ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ Β«%(индСкс)sΒ». Π’ этом случаС вмСсто Β«%(индСкс)sΒ» Π±ΡƒΠ΄Π΅Ρ‚ подставлСно Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ словаря ΠΏΠΎΠ΄ Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ индСксом.


>>>print Β«Name: %s\nNumber: %s\nString: %sΒ» % (myclass.name, 3, 3 * «-«)
Name: Poromenos
Number: 3
String: β€” Β 
strString = «»Β«Π­Ρ‚ΠΎΡ‚ тСкст располоТСн
Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… строках»»»
Β 
>>> print Β«This %(verb)s a %(noun)s.Β» % {Β«nounΒ»: Β«testΒ», Β«verbΒ»: Β«isΒ»}
This is a test.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ while, if, for ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ пСрСмСщСния. Π—Π΄Π΅ΡΡŒ Π½Π΅Ρ‚ Π°Π½Π°Π»ΠΎΠ³Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° select, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ придСтся ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ

if. Π’ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ for происходит сравнСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ списка. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ список Ρ†ΠΈΡ„Ρ€ Π΄ΠΎ числа <number> β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ range(<number>). Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²


rangelist = range(10) #ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ список ΠΈΠ· дСсяти Ρ†ΠΈΡ„Ρ€ (ΠΎΡ‚ 0 Π΄ΠΎ 9)
>>> print rangelist
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
for number in rangelist: #Пока пСрСмСнная number (которая ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· увСличиваСтся Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ) Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² список…
# ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π»ΠΈ пСрСмСнная
# numbers Π² ΠΊΠΎΡ€Ρ‚Π΅ΠΆ чисСл (3, 4, 7, 9)
if number in (3, 4, 7, 9): #Если пСрСмСнная number Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² ΠΊΠΎΡ€Ρ‚Π΅ΠΆ (3, 4, 7, 9)…
# ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ Β«breakΒ» обСспСчиваСт
# Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚
break
else:
# Β«continueΒ» осущСствляСт Β«ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΡƒΒ»
# Ρ†ΠΈΠΊΠ»Π°. Π—Π΄Π΅ΡΡŒ это Π½Π΅ трСбуСтся, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ послС этой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ
# Π² любом случаС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΎΠΏΡΡ‚ΡŒ ΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Ρ†ΠΈΠΊΠ»Π°
continue

else:
# Β«elseΒ» ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ. УсловиС выполняСтся
# Ссли Ρ†ΠΈΠΊΠ» Π½Π΅ Π±Ρ‹Π» ΠΏΡ€Π΅Ρ€Π²Π°Π½ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Β«breakΒ».
pass # НичСго Π½Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ
Β 
if rangelist[1] == 2:
print Β«The second item (lists are 0-based) is 2Β»
elif rangelist[1] == 3:
print Β«The second item (lists are 0-based) is 3Β»
else:
print Β«DunnoΒ»
Β 
while rangelist[1] == 1:
pass

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Для объявлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ слуТит ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово Β«defΒ». АргумСнты Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π°Π΄Π°ΡŽΡ‚ΡΡ Π² скобках послС названия Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. МоТно Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, присваивая ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ, Π² Ρ‚Π°ΠΊΠΎΠΌ случаС Π½Π°Π΄ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ значСния Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ. ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово Β«lambdaΒ» слуТит для объявлСния элСмСнтарных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ .


# arg2 ΠΈ arg3 β€” Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΡ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ объявлСнноС ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π½ΠΈ,
# Ссли Π½Π΅ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΈΠΌ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈ.
def myfunction(arg1, arg2 = 100, arg3 = Β«testΒ»):
return arg3, arg2, arg1
#Ѐункция вызываСтся со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° β€” «Argument 1», Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ β€” ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ β€” «Named argument».
>>>ret1, ret2, ret3 = myfunction(Β«Argument 1Β», arg3 = Β«Named argumentΒ»)
# ret1, ret2 ΠΈ ret3 ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ значСния «Named argument», 100, «Argument 1» соотвСтствСнно
>>> print ret1, ret2, ret3
Named argument 100 Argument 1
Β 
# Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ запись эквивалСнтна def f(x): return x + 1
functionvar = lambda x: x + 1
>>> print functionvar(1)
2

ΠšΠ»Π°ΡΡΡ‹

Π―Π·Ρ‹ΠΊ Python ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ Π² мноТСствСнном наслСдовании Π² классах. Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ классов Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с Π΄Π²ΡƒΡ… Π·Π½Π°ΠΊΠΎΠ² Π½ΠΈΠΆΠ½Π΅Π³ΠΎ подчСркивания Β«__Β» (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Β«__myprivatevarΒ»). ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ класса ΠΈΠ·Π²Π½Π΅. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:


class Myclass:
common = 10
def __init__(self):
self.myvariable = 3
def myfunction(self, arg1, arg2):
return self.myvariable
Β 
# Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ объявили класс Myclass. Ѐункция __init__ вызываСтся автоматичСски ΠΏΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ классов.
>>> classinstance = Myclass() # ΠœΡ‹ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ класс ΠΈ пСрСмСнная myvariable ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Π»Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 3 ΠΊΠ°ΠΊ заявлСно Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ
>>> classinstance.myfunction(1, 2) #ΠœΠ΅Ρ‚ΠΎΠ΄ myfunction класса Myclass Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ myvariable
3
# ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ common объявлСна Π²ΠΎ всСх классах
>>> classinstance2 = Myclass()
>>> classinstance.common
10
>>> classinstance2.common
10
# ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Ссли ΠΌΡ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² классС Myclass измСнятся
# ΠΈ Π΅Π΅ значСния Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ…, ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… классом Myclass
>>> Myclass.common = 30
>>> classinstance.common
30
>>> classinstance2.common
30
# А здСсь ΠΌΡ‹ Π½Π΅ измСняСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ класса. ВмСсто этого
# ΠΌΡ‹ объявляСм ΠΎΠ½ΡƒΡŽ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ ΠΈ присваиваСм Π΅ΠΉ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
>>> classinstance.common = 10
>>> classinstance.common
10
>>> classinstance2.common
30
>>> Myclass.common = 50
# Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ класса Π½Π΅ коснСтся
# ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² этого класса
>>> classinstance.common
10
>>> classinstance2.common
50
Β 
# Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ класс являСтся наслСдником класса Myclass
# наслСдуя Π΅Π³ΠΎ свойства ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΡ‚ΠΎΠΌΡƒ ΠΆΠ΅ класс ΠΌΠΎΠΆΠ΅Ρ‚
# Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… классов, Π² этом случаС запись
# такая: class Otherclass(Myclass1, Myclass2, MyclassN)
class Otherclass(Myclass):
def __init__(self, arg1):
self.myvariable = 3
print arg1
Β 
>>> classinstance = Otherclass(Β«helloΒ»)
hello
>>> classinstance.myfunction(1, 2)
3
# Π­Ρ‚ΠΎΡ‚ класс Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ совйтсва test, Π½ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ
# ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ
# tэта пСрСмСнная Π±ΡƒΠ΄Π΅Ρ‚ Ρ‡Π»Π΅Π½ΠΎΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ classinstance.
>>> classinstance.test = 10
>>> classinstance.test
10

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² Python ΠΈΠΌΠ΅ΡŽΡ‚ структуру tryexcept [exceptionname]:


def somefunction():
try:
# Π”Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ноль Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ
10 / 0
except ZeroDivisionError:
# Но ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π΅ «Π’ыполняСт Π½Π΅Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΠΌΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ»
# А ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π±Π»ΠΎΠΊ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ошибкС Β«ZeroDivisionErrorΒ»
print Β«Oops, invalid.Β»
Β 
>>> fnexcept()
Oops, invalid.

Π˜ΠΌΠΏΠΎΡ€Ρ‚

Π’Π½Π΅ΡˆΠ½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΎΠΉ Β«import [libname]Β», Π³Π΄Π΅ [libname] β€” Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Π’Ρ‹ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Β«from [libname] import [funcname]Β», Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ [funcname] ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ [libname]


import random #Π˜ΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Β«randomΒ»
from time import clock #И Π·Π°ΠΎΠ΄Π½ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Β«clockΒ» ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Β«timeΒ»
Β 
randomint = random.randint(1, 100)
>>> print randomint
64

Π Π°Π±ΠΎΡ‚Π° с Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмой

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


import pickle
mylist = [Β«ThisΒ», Β«isΒ», 4, 13327]
# ΠžΡ‚ΠΊΡ€ΠΎΠ΅ΠΌ Ρ„Π°ΠΉΠ» C:\binary.dat для записи. Π‘ΠΈΠΌΠ²ΠΎΠ» Β«rΒ»
# ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π°ΠΌΠ΅Π½Ρƒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… сиволов (Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ \n, \t, \b ΠΈ Π΄Ρ€.).
myfile = file(rΒ«C:\binary.datΒ», Β«wΒ»)
pickle.dump(mylist, myfile)
myfile.close()
Β 
myfile = file(rΒ«C:\text.txtΒ», Β«wΒ»)
myfile.write(Β«This is a sample stringΒ»)
myfile.close()
Β 
myfile = file(rΒ«C:\text.txtΒ»)
>>> print myfile.read()
‘This is a sample string’
myfile.close()
Β 
# ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Ρ„Π°ΠΉΠ» для чтСния
myfile = file(rΒ«C:\binary.datΒ»)
loadedlist = pickle.load(myfile)
myfile.close()
>>> print loadedlist
[‘This’, ‘is’, 4, 13327]

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ

  • Условия ΠΌΠΎΠ³ΡƒΡ‚ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ. 1 < a < 3 выполняСтся Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π° большС 1, Π½ΠΎ мСньшС 3.
  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ Β«delΒ» Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‡ΠΈΡ‰Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈΠ»ΠΈ элСмСнты массива.
  • Python ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ большиС возмоТности для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со списками. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ объявлСнии структуры списка. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ for позволяСт Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ элСмСнты списка Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π° if β€” позволяСт Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ элСмСнты ΠΏΠΎ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ.

>>> lst1 = [1, 2, 3]
>>> lst2 = [3, 4, 5]
>>> print [x * y for x in lst1 for y in lst2]
[3, 4, 5, 6, 8, 10, 9, 12, 15]
>>> print [x for x in lst1 if 4 > x > 1]
[2, 3]
# ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Β«anyΒ» Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ true, Ссли хотя
# Π±Ρ‹ ΠΎΠ΄Π½ΠΎ ΠΈΠ· условий, входящих Π² Π½Π΅Π³ΠΎ, выполняСтся.
>>> any(i % 3 for i in [3, 3, 4, 4, 3])
True
# Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° подсчитываСт количСство
# подходящих элСмСнтов Π² спискС
>>> sum(1 for i in [3, 3, 4, 4, 3] if i == 3)
3
>>> del lst1[0]
>>> print lst1
[2, 3]
>>> del lst1

  • Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ Π²Π½Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Π½Ρ‹ Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ… Π»ΠΈΠ±ΠΎ объявлСний. Но Ссли Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ глобальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚ΠΎ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Π΅Π΅ Π² Π½Π°Ρ‡Π°Π»Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом Β«globalΒ», Ссли Π²Ρ‹ этого Π½Π΅ сдСлаСтС, Ρ‚ΠΎ Python ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΡƒΡŽ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

number = 5
Β 
def myfunc():
# Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ 5
print number
Β 
def anotherfunc():
# Π­Ρ‚ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ глобальная апСрСмСнная
# Π½Π΅ Π±Ρ‹Π»Π° Π²Ρ‹Π·Π²Π°Π½Π½Π° ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Python Π² этом случаС создаСт
# ΠΎΠ΄Π½ΠΎΠΈΠΌΠ΅Π½Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π²Π½ΡƒΡ‚Ρ€ΠΈ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΡƒΡŽ
# Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.
print number
number = 3
Β 
def yetanotherfunc():
global number
# И Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ измСняСтся.
number = 3

Π­ΠΏΠΈΠ»ΠΎΠ³

РазумССтся Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π½Π΅ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ всС возмоТности Python. Π― надСюсь Ρ‡Ρ‚ΠΎ эта ΡΡ‚Π°Ρ‚ΡŒΡ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ, Ссли Π²Ρ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈ Π² дальнСйшСм ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ этот язык программирования.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° Python

  • Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ написанных Π½Π° Python ΠΎΡ‡Π΅Π½ΡŒ высока. Π­Ρ‚ΠΎ связанно с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ основныС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Python
    написаны Π½Π° C++ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ мСньшС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‡Π΅ΠΌ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… языках высокого уровня.
  • Π’ связи с этим Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ свои собствСнныС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ для Python Π½Π° C ΠΈΠ»ΠΈ C++
  • Π’ стандартныx Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ… Python Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ срСдства для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с элСктронной ΠΏΠΎΡ‡Ρ‚ΠΎΠΉ, ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°ΠΌΠΈ
    Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π°, FTP, HTTP, Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈ ΠΏΡ€.
  • Π‘ΠΊΡ€ΠΈΠΏΡ‚Ρ‹, написанныС ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Python Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ соврСмСнных ОБ. Вакая ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒ обСспСчиваСт Python ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² самых Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… областях.
  • Python ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Π»ΡŽΠ±Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ Π² области программирования, Π±ΡƒΠ΄ΡŒ Ρ‚ΠΎ офисныС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, вэб-прилоТСния, GUI-прилоТСния ΠΈ Ρ‚.Π΄.
  • Над Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ Python Ρ‚Ρ€ΡƒΠ΄ΠΈΠ»ΠΈΡΡŒ тысячи энтузиастов со всСго ΠΌΠΈΡ€Π°. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ соврСмСнных Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ Π² стандартных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ… ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π±Ρ‹Ρ‚ΡŒ обязаны ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Python Π±Ρ‹Π» ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ для всСх ΠΆΠ΅Π»Π°ΡŽΡ‰ΠΈΡ….

habr.com

ΠžΡΠ½ΠΎΠ²Ρ‹ Python Π² ΠΊΡ€Π°Ρ‚ΠΊΠΎΠΌ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ / Habr

Когда-Ρ‚ΠΎ Π΄Π°Π²Π½Ρ‹ΠΌ Π΄Π°Π²Π½ΠΎ, Π½Π° ΠΎΠ΄Π½ΠΎΠΌ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎΠΌ Ρ„ΠΎΡ€ΡƒΠΌΠ΅ я пытался ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠŸΠ°ΠΉΡ‚ΠΎΠ½Ρƒ. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ Π΄Π΅Π»ΠΎ Ρ‚Π°ΠΌ Π·Π°Π³Π»ΠΎΡ…Π»ΠΎ. МнС стало ΠΆΠ°Π»ΠΊΠΎ написанных ΡƒΡ€ΠΎΠΊΠΎΠ², ΠΈ я Ρ€Π΅ΡˆΠΈΠ» ΠΈΡ… Π²Ρ‹Π»ΠΎΠΆΠΈΡ‚ΡŒ для ΡˆΠΈΡ€ΠΎΠΊΠΎΠΉ общСствСнности. Пока самый ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ, самый простой. Π”Π°Π»ΡŒΡˆΠ΅ ΠΈΠ΄Π΅Ρ‚ интСрСснСС, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ это Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ интСрСсно. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, этот пост Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π½Ρ‹ΠΌ ΡˆΠ°Ρ€ΠΎΠΌ, Ссли понравится, Π±ΡƒΠ΄Ρƒ Π²Ρ‹ΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ дальшС.

Python для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…. Π“Π»Π°Π²Π° пСрвая. «О Ρ‡Π΅ΠΌ это ΠΌΡ‹Β»

На всякий случай, Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ скучного Β«evangelismΒ». ΠšΠΎΠΌΡƒ ΠΎΠ½ Π½Π°Π΄ΠΎΠ΅Π», ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ нСсколько Π°Π±Π·Π°Ρ†Π΅Π².
Python (читаСтся ΠΊΠ°ΠΊ Β«ΠŸΠ°ΠΉΡ‚ΠΎΠ½Β» Π° Π½Π΅ Β«ΠΏΠΈΡ‚ΠΎΠ½Β») β€” скриптовый язык, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ Π“Π²ΠΈΠ΄ΠΎ Π²Π°Π½ Россумом Π² качСствС простого языка, Π»Π΅Π³ΠΊΠΎΠ³ΠΎ Π² ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ Π½ΠΎΠ²ΠΈΡ‡ΠΊΡƒ.
Π’ нашС врСмя ΠŸΠ°ΠΉΡ‚ΠΎΠ½ – ΡˆΠΈΡ€ΠΎΠΊΠΎ распространСнный язык, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… областях:
β€” Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ³ΠΎ ПО (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ linux-ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ yum, pirut, system-config-*, IM-ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Gajim ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅)
β€” Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° web-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (ΠΌΠΎΡ‰Π½Π΅ΠΉΡˆΠΈΠΉ Application-сСрвСр Zope ΠΈ разработанная Π½Π° Π΅Π³ΠΎ основС CMS Plone, Π½Π° основС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ сайт Π¦Π Π£, ΠΈ масса Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² для быстрой Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Plones, Django, TurboGears ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅)
β€” ИспользованиС Π² качСствС встраиваСмого скриптового языка Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΈΠ³Ρ€Π°Ρ…, ΠΈ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ (Π² офисном ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ OpenOffice.org, 3d Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ Blender, Π‘Π£Π‘Π” Postgre)
β€” ИспользованиС Π² Π½Π°ΡƒΡ‡Π½Ρ‹Ρ… рассчСтах (с ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ SciPy ΠΈ numPy для расчСтов ΠΈ PyPlot для рисования Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ² ΠŸΠ°ΠΉΡ‚ΠΎΠ½ становится практичСски сравним с ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ Ρ‚ΠΈΠΏΠ° MatLab)

И это ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ ΠΏΠΎΠ»Π½Ρ‹ΠΉ список ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… этот Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ язык.

1. Π‘Π°ΠΌ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²Π·ΡΡ‚ΡŒ Ρ‚ΡƒΡ‚ (http://python.org/download/).
2. Π‘Ρ€Π΅Π΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Она для Π½Π°Ρ‡Π°Π»Π° Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Π°, Π΄Π° ΠΈ ΠΈΠ΄ΡƒΡ‰ΠΈΠΉ Π² дистрибутивС IDLE ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚ Π½ΠΎΠ²ΠΈΡ‡ΠΊΡƒ, Π½ΠΎ для ΡΠ΅Ρ€ΡŠΠ΅Π·Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π½ΡƒΠΆΠ½ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΡΠ΅Ρ€ΡŒΠ΅Π·Π½Π΅ΠΉ.
Для Windows я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ лСгковСсный PyScripter (http://tinyurl.com/5jc63t), для Linux – Komodo IDE.

Π₯отя для ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΡƒΡ€ΠΎΠΊΠ° достаточно Π±ΡƒΠ΄Π΅Ρ‚ просто ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ самого ΠŸΠ°ΠΉΡ‚ΠΎΠ½Π°.

ΠŸΡ€ΠΎΡΡ‚ΠΎ запуститС python.exe. ΠŸΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄Π° Π½Π΅ заставит сСбя Π΄ΠΎΠ»Π³ΠΎ ΠΆΠ΄Π°Ρ‚ΡŒ, ΠΎΠ½ΠΎ выглядит Ρ‚Π°ΠΊ:

>>>

Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Ρ„Π°ΠΉΠ»Ρ‹ с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ py, Π² вашСм любимом тСкстовом Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ добавляСт ΠΊ тСксту своих символов Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ (Π½Π΅Ρ‚ Word Π½Π΅ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚). Π’Π°ΠΊΠΆΠ΅ ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ этот Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΡƒΠΌΠ΅Π» Π΄Π΅Π»Π°Ρ‚ΡŒ Β«ΡƒΠΌΠ½Ρ‹Π΅ табуляторы» ΠΈ Π½Π΅ замСнял ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ Π·Π½Π°ΠΊΠΎΠΌ табуляции.
Для запуска Ρ„Π°ΠΉΠ»ΠΎΠ² Π½Π° исполнСниС ΠΏΠΎ Π½ΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ Ρ‰Π΅Π»ΠΊΠ°Ρ‚ΡŒ 2 Ρ€Π°Π·Π°. Если консольноС ΠΎΠΊΠ½ΠΎ закрываСтся слишком быстро, Π²ΡΡ‚Π°Π²ΡŒΡ‚Π΅ Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ строку:

raw_input()

Π’ΠΎΠ³Π΄Π° ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π±ΡƒΠ΄Π΅Ρ‚ Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΆΠ΄Π°Ρ‚ΡŒ наТатия enter.

Или ассоциируйтС py-Ρ„Π°ΠΉΠ»Ρ‹ Π² Far с ΠŸΠ°ΠΉΡ‚ΠΎΠ½ΠΎΠΌ ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΠΉΡ‚Π΅ наТимая enter.

НаконСц ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΌΠ½ΠΎΠ³ΠΈΡ… ΡƒΠ΄ΠΎΠ±Π½Ρ‹Ρ… IDE для ΠŸΠ°ΠΉΡ‚ΠΎΠ½Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΈ возмоТности ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈ подсвСтку синтаксиса ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ «удобства».

НСмного Ρ‚Π΅ΠΎΡ€ΠΈΠΈ.

Для Π½Π°Ρ‡Π°Π»Π°, ΠŸΠ°ΠΉΡ‚ΠΎΠ½ – язык со строгой динамичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ. Π§Ρ‚ΠΎ это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚?

Π•ΡΡ‚ΡŒ языки со строгой Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ (pascal, java, c ΠΈ Ρ‚.ΠΏ.), Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ опрСдСляСтся Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½, ΠΈ Π΅ΡΡ‚ΡŒ языки с динамичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ (python, ruby, vb), Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ трактуСтся Π² зависимости ΠΎΡ‚ присвоСнного значСния.
Π―Π·Ρ‹ΠΊΠΈ с динамичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΅Ρ‰Π΅ Π½Π° 2 Π²ΠΈΠ΄Π°. Π‘Ρ‚Ρ€ΠΎΠ³ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ нСявного прСобразования Ρ‚ΠΈΠΏΠ° (ΠŸΠ°ΠΉΡ‚ΠΎΠ½) ΠΈ нСстрогиС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ нСявныС прСобразования Ρ‚ΠΈΠΏΠ° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ VB, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΡΠ»ΠΎΠΆΠΈΡ‚ΡŒ строку ‘123’ ΠΈ число 456).
Π Π°Π·ΠΎΠ±Ρ€Π°Π²ΡˆΠΈΡΡŒ с классификациСй ΠŸΠ°ΠΉΡ‚ΠΎΠ½Π°, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Β«ΠΏΠΎΠΈΠ³Ρ€Π°Ρ‚ΡŒΒ» с ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ.

>>> a = b = 1
>>> a, b
(1, 1)
>>> b = 2
>>> a, b
(1, 2)
>>> a, b = b, a
>>> a, b
(2, 1)

Π’Π°ΠΊΠΈΠΌ, ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ Ρ‡Ρ‚ΠΎ присваиваниС осущСствляСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π·Π½Π°ΠΊΠ° =. ΠŸΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ сразу нСскольким ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ. ΠŸΡ€ΠΈ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρƒ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅, ΠΎΠ½ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

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

УсловиС задаСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° if, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ заканчиваСтся Β«:Β». ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ условия ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Ссли пСрвая ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Β«Π½Π΅ ΠΏΡ€ΠΎΡˆΠ»Π°Β» Π·Π°Π΄Π°ΡŽΡ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ elif. НаконСц else Π·Π°Π΄Π°Π΅Ρ‚ Π²Π΅Ρ‚ΠΊΡƒ, которая Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° Ссли Π½ΠΈ ΠΎΠ΄Π½ΠΎ ΠΈΠ· условий Π½Π΅ подошло.
ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ послС Π²Π²ΠΎΠ΄Π° if ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΡ Β«…Β» ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ продолТСния Π²Π²ΠΎΠ΄Π°. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ Π΅ΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ»ΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ввСсти ΠΏΡƒΡΡ‚ΡƒΡŽ строку.

(ΠŸΡ€ΠΈΠΌΠ΅Ρ€ с вСтвлСниями ΠΏΠΎΡ‡Π΅ΠΌΡƒ-Ρ‚ΠΎ Ρ€Π²Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΡƒ Π½Π° Ρ…Π°Π±Ρ€Π΅, Π½Π΅ смотря Π½Π° Ρ‚Π°Π½Ρ†Ρ‹ с Ρ‚Π΅Π³Π°ΠΌΠΈ pre ΠΈ code. ΠŸΡ€ΠΎΡΡ‚ΠΈΡ‚Π΅ Π·Π° нСудобство, я Π΅Π³ΠΎ ΠΊΠΈΠ½ΡƒΠ» сюда pastebin.com/f66af97ba, Ссли ΠΊΡ‚ΠΎ-Ρ‚ΠΎ подскаТСт Ρ‡Ρ‚ΠΎ Π½Π΅ Ρ‚Π°ΠΊ β€” Π±ΡƒΠ΄Ρƒ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΡ€ΠΈΠ·Π½Π°Ρ‚Π΅Π»Π΅Π½)

Π¦ΠΈΠΊΠ»Ρ‹.

ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΌ случаСм Ρ†ΠΈΠΊΠ»Π° являСтся Ρ†ΠΈΠΊΠ» while. Π’ качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΎΠ½ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ условиС ΠΈ выполняСтся Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΎΠ½ΠΎ истино.
Π’ΠΎΡ‚ малСнький ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

>>> x = 0
>>> while x<=10:
...     print x
...     x += 1
...
0
1
2
...........
10

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Ρ‡Ρ‚ΠΎ ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΈ print x ΠΈ x+=1 написаны с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ отступом, ΠΎΠ½ΠΈ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ Ρ‚Π΅Π»ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π° (ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅ Ρ‡Ρ‚ΠΎ я Π³ΠΎΠ²ΠΎΡ€ΠΈΠ» ΠΏΡ€ΠΎ Π±Π»ΠΎΠΊΠΈ? πŸ˜‰ ).

Π’Ρ‚ΠΎΡ€ΠΎΠΉ Π²ΠΈΠ΄ Ρ†ΠΈΠΊΠ»ΠΎΠ² Π² ΠŸΠ°ΠΉΡ‚ΠΎΠ½ – Ρ†ΠΈΠΊΠ» for. Он Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½ Ρ†ΠΈΠΊΠ»Ρƒ foreach Π΄Ρ€ΡƒΠ³ΠΈΡ… языков. Π•Π³ΠΎ синтаксис условно Ρ‚Π°ΠΊΠΎΠ².

for пСрСмСнная in список:
ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ всС значСния ΠΈΠ· списка (Π½Π° самом Π΄Π΅Π»Π΅ Ρ‚Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ список, Π½ΠΎ ΠΈ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€, Π½ΠΎ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠΊΠ° этим Π·Π°Π±ΠΈΠ²Π°Ρ‚ΡŒ Π³ΠΎΠ»ΠΎΠ²Ρƒ).

Π’ΠΎΡ‚ простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π’ Ρ€ΠΎΠ»ΠΈ списка Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ строка, которая являСтся Π½ΠΈΡ‡Π΅ΠΌ ΠΈΠ½Ρ‹ΠΌ ΠΊΠ°ΠΊ списком символов.

>>> x = "Hello, Python!"

>>> for char in x:
...     print char
...
H
e
l
...........
!

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π°Π·Π»ΠΎΠΆΠΈΡ‚ΡŒ строку ΠΏΠΎ символам.
Π§Ρ‚ΠΎ ΠΆΠ΅ Π΄Π΅Π»Π°Ρ‚ΡŒ Ссли Π½Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ Ρ†ΠΈΠΊΠ», ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠΉΡΡ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ число Ρ€Π°Π·? ΠžΡ‡Π΅Π½ΡŒ просто, Π½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ ΠΏΡ€ΠΈΠ΄Π΅Ρ‚ функция range.

На Π²Ρ…ΠΎΠ΄Π΅ ΠΎΠ½Π° ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π΄ΠΎ Ρ‚Ρ€Π΅Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ список чисСл, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Β«ΠΏΡ€ΠΎΠΉΡ‚ΠΈΡΡŒΒ» ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ for.

Π’ΠΎΡ‚ нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² использования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ range, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±ΡŠΡΡΠ½ΡΡŽΡ‚ Ρ€ΠΎΠ»ΡŒ Π΅Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².

>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(2, 12)
[2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
>>> range(2, 12, 3)
[2, 5, 8, 11]
>>> range(12, 2, -2)
[12, 10, 8, 6, 4]

И малСнький ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с Ρ†ΠΈΠΊΠ»ΠΎΠΌ.

>>> for x in range(10):
...     print x
...
0
1
2
.....
9

Π’Π²ΠΎΠ΄-Π²Ρ‹Π²ΠΎΠ΄

ПослСднСС, Ρ‡Ρ‚ΠΎ слСдуСт Π·Π½Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠŸΠ°ΠΉΡ‚ΠΎΠ½ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎ – это ΠΊΠ°ΠΊ осущСствляСтся Π² Π½Π΅ΠΌ Π²Π²ΠΎΠ΄-Π²Ρ‹Π²ΠΎΠ΄.

Для Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° print, которая Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π½Π° ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ всС свои Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π² ΡƒΠ΄ΠΎΠ±ΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠΌ Π²ΠΈΠ΄Π΅.

Для Π²Π²ΠΎΠ΄Π° с консоли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция raw_input(ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΠ΅), которая Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π½Π° экран ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ Π²Π²ΠΎΠ΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, возвращая Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ Π²Π²Π΅Π» ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π² Π²ΠΈΠ΄Π΅ своСго значСния.

x = int(raw_input ("Π’Π²Π΅Π΄ΠΈ число:"))
print "ΠšΠ²Π°Π΄Ρ€Π°Ρ‚ этого числа составляСт ", x * x

Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅! НСсмотря Π½Π° сущСствованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ input() схоТСго дСйствия, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… Π½Π΅ рСкомСндуСтся, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ пытаСтся Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π²Π²ΠΎΠ΄ΠΈΠΌΡ‹Π΅ с Π΅Π΅ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ синтаксичСскиС выраТСния, Ρ‡Ρ‚ΠΎ являСтся ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎΠΉ Π΄Ρ‹Ρ€ΠΎΠΉ Π² бСзопасности ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π’ΠΎΡ‚ ΠΈ всС для ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΡƒΡ€ΠΎΠΊΠ°.

Π”ΠΎΠΌΠ°ΡˆΠ½Π΅Π΅ Π·Π°Π΄Π°Π½ΠΈΠ΅.

1. Π‘ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ расчСта Π³ΠΈΠΏΠΎΡ‚Π΅Π½ΡƒΠ·Ρ‹ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°. Π”Π»ΠΈΠ½Π° ΠΊΠ°Ρ‚Π΅Ρ‚ΠΎΠ² Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ΡΡ Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.
2. Π‘ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ нахоТдСния ΠΊΠΎΡ€Π½Π΅ΠΉ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ уравнСния Π² ΠΎΠ±Ρ‰Π΅ΠΌ Π²ΠΈΠ΄Π΅. ΠšΠΎΡΡ„Ρ„ΠΈΡ†ΠΈΠ΅Π½Ρ‚Ρ‹ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.
3. Π‘ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π²Ρ‹Π²ΠΎΠ΄Π° Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ умноТСния Π½Π° число M. Π’Π°Π±Π»ΠΈΡ†Π° составляСтся ΠΎΡ‚ M * a, Π΄ΠΎ M * b, Π³Π΄Π΅ M, a, b Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π’Ρ‹Π²ΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ осущСствляСтся Π² столбик, ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ Π½Π° строку Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Π²ΠΈΠ΄Π΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€):
5 Ρ… 4 = 20
5 Ρ… 5 = 25
И Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

habr.com

Python | Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Π―Π·Ρ‹ΠΊ программирования Python

ПослСднСС обновлСниС: 24.01.2018

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

Π’ΠΏΠ΅Ρ€Π²Ρ‹Π΅ язык Python Π±Ρ‹Π» анонсирован Π² 1991 Π³ΠΎΠ΄Ρƒ голландским Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ Π“Π²ΠΈΠ΄ΠΎ Π’Π°Π½ Россумом. Π‘ Ρ‚Π΅Ρ… ΠΏΠΎΡ€ Π΄Π°Π½Π½Ρ‹ΠΉ язык ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Π» большой ΠΏΡƒΡ‚ΡŒ развития. Π’ 2000 Π³ΠΎΠ΄Ρƒ Π±Ρ‹Π»Π° ΠΈΠ·Π΄Π°Π½Π° вСрсия 2.0, Π° Π² 2008 Π³ΠΎΠ΄Ρƒ — вСрсия 3.0. НСсмотря Π½Π° Π²Ρ€ΠΎΠ΄Π΅ Ρ‚Π°ΠΊΠΈΠ΅ большиС ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΊΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ вСрсиями постоянно выходят подвСрсии. Π’Π°ΠΊ, Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ вСрсиСй Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ написания Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° являСтся 3.7. Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ всСх Ρ€Π΅Π»ΠΈΠ·Π°Ρ…, вСрсиях ΠΈ измСнСния языка, Π° Ρ‚Π°ΠΊΠΆΠ΅ собствСнно ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ ΠΏΡ€ΠΎΡ‡ΡƒΡŽ ΠΏΠΎΠ»Π΅Π·Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π° ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ сайтС https://www.python.org/.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ особСнности языка программирования Python:

  • Π‘ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ²Ρ‹ΠΉ язык. Код ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ опрСдСляСтся Π² Π²ΠΈΠ΄Π΅ скриптов.

  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° самых Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌ программирования, Π² Ρ‚ΠΎΠΌ числС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌ.

  • Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со скриптами Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ запускаСт ΠΈ выполняСт скрипт.

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

    Π—Π΄Π΅ΡΡŒ стоит ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ хотя Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ трансляция ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ исходного ΠΊΠΎΠ΄Π° Π² Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ ΠΈ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машиной Π² Π½Π°Π±ΠΎΡ€ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π΄Π²Π° Ρ€Π°Π·Π½Ρ‹Ρ… процСсса, Π½ΠΎ фактичСски ΠΎΠ½ΠΈ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Ρ‹ Π² самом ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π΅.

  • ΠŸΠΎΡ€Ρ‚Π°Ρ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠ½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ. НС ΠΈΠΌΠ΅Π΅Ρ‚ значСния, какая Ρƒ нас опСрационная систСма — Windows, Mac OS, Linux, Π½Π°ΠΌ достаточно Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ скрипт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ Π½Π° всСх этих ОБ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°

  • АвтоматичСскоС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ памяти

  • ДинамичСская типизация

Python — ΠΎΡ‡Π΅Π½ΡŒ простой язык программирования, ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ‚ Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π½Ρ‹ΠΉ ΠΈ Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя довольно простой ΠΈ понятный синтаксис. БоотвСтствСнно Π΅Π³ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ, ΠΈ собствСнно это ΠΎΠ΄Π½Π° ΠΈΠ· ΠΏΡ€ΠΈΡ‡ΠΈΠ½, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· самых популярных языков программирования ΠΈΠΌΠ΅Π½Π½ΠΎ для обучСния. Π’ частности, Π² 2014 Π³ΠΎΠ΄Ρƒ ΠΎΠ½ Π±Ρ‹Π» ΠΏΡ€ΠΈΠ·Π½Π°Π½ самым популярным языком программирования для обучСния Π² БША.

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

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρƒ Π΄Π°Π½Π½ΠΎΠ³ΠΎ языка программирования ΠΎΡ‡Π΅Π½ΡŒ большоС ΠΊΠΎΠΌΠΌΡŒΡŽΠ½ΠΈΡ‚ΠΈ, Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΏΠΎ Π΄Π°Π½Π½ΠΎΠΌΡƒ языку мноТСство ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ², ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΏΠΎΠΌΠΎΡ‰ΡŒ спСциалистов.

Установка Python

Для создания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° Python Π½Π°ΠΌ потрСбуСтся ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€. Для Π΅Π³ΠΎ установки ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ Π½Π° сайт https://www.python.org/ ΠΈ Π½Π° Π³Π»Π°Π²Π½ΠΎΠΉ станицС Π² сСкции Downloads Π½Π°ΠΉΠ΄Π΅ΠΌ ссылку Π½Π° Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ послСднСй вСрсии языка (Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ это 3.7.2):

ΠŸΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΏΠΎ ссылкС ΠΊ страницС с описаниСм послСднСй вСрсии языка. Π‘Π»ΠΈΠΆΠ΅ ΠΊ Π½ΠΈΠ·Ρƒ Π½Π° Π½Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ список дистрибутивов для Ρ€Π°Π·Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм. Π’Ρ‹Π±Π΅Ρ€Π΅ΠΌ Π½ΡƒΠΆΠ½Ρ‹ΠΉ Π½Π°ΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠΌ Π΅Π³ΠΎ. НапримСр, Π² ΠΌΠΎΠ΅ΠΌ случаС это ОБ Windows 64-Ρ… разрядная, поэтому я Π²Ρ‹Π±ΠΈΡ€Π°ΡŽ ссылку Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ Windows x86-64 executable installer. ПослС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ дистрибутива установим Π΅Π³ΠΎ.

БоотвСтствСнно для MacOS ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΏΡƒΠ½ΠΊΡ‚ macOS 64-bit installer.

На ОБ Windows ΠΏΡ€ΠΈ запускС инсталлятора запускаСт ΠΎΠΊΠ½ΠΎ мастСра установки:

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΏΡƒΡ‚ΡŒ, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€. ΠžΡΡ‚Π°Π²ΠΈΠΌ Π΅Π³ΠΎ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ C:\Users\[имя_ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ]\AppData\Local\Programs\Python\Python36\.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² самом Π½ΠΈΠ·Ρƒ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ Ρ„Π»Π°ΠΆΠΎΠΊ «Add Python 3.6 to PATH», Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΡƒΡ‚ΡŒ ΠΊ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρƒ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ срСды.

ПослС установки Π² мСню ΠŸΡƒΡΠΊ Π½Π° ОБ Windows ΠΌΡ‹ смоТСм Π½Π°ΠΉΡ‚ΠΈ ΠΈΠΊΠΎΠ½ΠΊΠΈ для доступа ΠΊ Ρ€Π°Π·Π½Ρ‹ΠΌ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°ΠΌ ΠΏΠΈΡ‚ΠΎΠ½Π°:

Π—Π΄Π΅ΡΡŒ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° Python 3.7 (64-bit) прСдставляСт ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ скрипт. Π’ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС сам Ρ„Π°ΠΉΠ» ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΏΠΎ ΠΏΡƒΡ‚ΠΈ, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠ»Π°ΡΡŒ установка. На Windows ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ это ΠΏΡƒΡ‚ΡŒ C:\Users\[имя_ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ]\AppData\Local\Programs\Python\Python37, Π° сам ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ прСдставляСт Ρ„Π°ΠΉΠ» python.exe. На ОБ Linux установка производится ΠΏΠΎ ΠΏΡƒΡ‚ΠΈ /usr/local/bin/python3.7.

metanit.com

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Python / Habr

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

Π—Π°Π±Π΅ΠΉΡ‚Π΅. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ отличаСтся ΠΎΠ΄Π½ΠΈΠΌ свойством: отсутствиСм ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹Ρ… эффСктов. Он Π½Π΅ полагаСтся Π½Π° Π΄Π°Π½Π½Ρ‹Π΅ Π²Π½Π΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΈ Π½Π΅ мСняСт Π΄Π°Π½Π½Ρ‹Π΅, находящиСся Π²Π½Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ВсС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ «свойства» ΠΌΠΎΠΆΠ½ΠΎ вывСсти ΠΈΠ· этого.

ΠΠ΅Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ функция:

a = 0
def increment1():
    global a
    a += 1

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ функция:

def increment2(a):
    return a + 1

ВмСсто ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΎΠ² ΠΏΠΎ списку ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ map ΠΈ reduce

Map

ΠŸΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ…. Π‘ΠΎΠ·Π΄Π°Ρ‘Ρ‚ Π½ΠΎΠ²ΡƒΡŽ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ, выполняСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ добавляСт Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² Π½ΠΎΠ²ΡƒΡŽ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ. Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠ²ΡƒΡŽ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ.

ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ map, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠΉ список ΠΈΠΌΡ‘Π½ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠΉ список Π΄Π»ΠΈΠ½:

name_lengths = map(len, ['Маша', 'ΠŸΠ΅Ρ‚Ρ', 'Вася'])

print name_lengths
# => [4, 4, 3]

Π­Ρ‚ΠΎΡ‚ map Π²ΠΎΠ·Π²ΠΎΠ΄ΠΈΡ‚ Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт:

squares = map(lambda x: x * x, [0, 1, 2, 3, 4])

print squares
# => [0, 1, 4, 9, 16]

Он Π½Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π° Π±Π΅Ρ€Ρ‘Ρ‚ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡƒΡŽ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΡƒΡŽ Ρ‡Π΅Ρ€Π΅Π· lambda. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ lambda ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ слСва ΠΎΡ‚ двоСточия. Π’Π΅Π»ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ – справа. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ возвращаСтся нСявным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

ΠΠ΅Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ список ΠΈΠΌΡ‘Π½ ΠΈ замСняСт ΠΈΡ… случайными ΠΏΡ€ΠΎΠ·Π²ΠΈΡ‰Π°ΠΌΠΈ.

import random

names = ['Маша', 'ΠŸΠ΅Ρ‚Ρ', 'Вася']
code_names = ['Π¨ΠΏΡƒΠ½Ρ‚ΠΈΠΊ', 'Π’ΠΈΠ½Ρ‚ΠΈΠΊ', 'Π€ΡƒΠ½Ρ‚ΠΈΠΊ']

for i in range(len(names)):
    names[i] = random.choice(code_names)

print names
# => ['Π¨ΠΏΡƒΠ½Ρ‚ΠΈΠΊ', 'Π’ΠΈΠ½Ρ‚ΠΈΠΊ', 'Π¨ΠΏΡƒΠ½Ρ‚ΠΈΠΊ']

Алгоритм ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΎΠ·Π²ΠΈΡ‰Π° Ρ€Π°Π·Π½Ρ‹ΠΌ сСкрСтным Π°Π³Π΅Π½Ρ‚Π°ΠΌ. Π‘ΡƒΠ΄Π΅ΠΌ Π½Π°Π΄Π΅ΡΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ это Π½Π΅ послуТит источником ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π²ΠΎ врСмя сСкрСтной миссии.

ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡˆΠ΅ΠΌ это Ρ‡Π΅Ρ€Π΅Π· map:

import random

names = ['Маша', 'ΠŸΠ΅Ρ‚Ρ', 'Вася']

secret_names = map(lambda x: random.choice(['Π¨ΠΏΡƒΠ½Ρ‚ΠΈΠΊ', 'Π’ΠΈΠ½Ρ‚ΠΈΠΊ', 'Π€ΡƒΠ½Ρ‚ΠΈΠΊ']), names)

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 1. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· map. Он ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ список Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠΌΡ‘Π½ ΠΈ замСняСт ΠΈΡ… ΠΏΡ€ΠΎΠ·Π²ΠΈΡ‰Π°ΠΌΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π±ΠΎΠ»Π΅Π΅ Π½Π°Π΄Ρ‘ΠΆΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄.

names = ['Маша', 'ΠŸΠ΅Ρ‚Ρ', 'Вася']

for i in range(len(names)):
    names[i] = hash(names[i])

print names
# => [6306819796133686941, 8135353348168144921, -1228887169324443034]
ΠœΠΎΡ‘ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅:
names = ['Маша', 'ΠŸΠ΅Ρ‚Ρ', 'Вася']

secret_names = map(hash, names)

Reduce

Reduce ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ Π½Π°Π±ΠΎΡ€ ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ². Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΠΎΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ всСх ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ².

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ простого reduce. Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ сумму всСх ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ² Π² Π½Π°Π±ΠΎΡ€Π΅:

sum = reduce(lambda a, x: a + x, [0, 1, 2, 3, 4])

print sum
# => 10

x – Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΏΡƒΠ½ΠΊΡ‚, Π° – аккумулятор. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ lambda Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡƒΠ½ΠΊΡ‚Π΅. reduce() ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅Ρ‚ всС значСния, ΠΈ запускаСт для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ lambda Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΡ… значСниях Π° ΠΈ Ρ…, ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² Π° для ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ.

А Ρ‡Π΅ΠΌΡƒ Ρ€Π°Π²Π½ΠΎ Π° Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ? Оно Ρ€Π°Π²Π½ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ элСмСнту ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, ΠΈ reduce() Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ со Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ элСмСнта. Π’ΠΎ Π΅ΡΡ‚ΡŒ, ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ… Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π΅Π½ Π²Ρ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Ρƒ Π½Π°Π±ΠΎΡ€Π°.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ считаСт, ΠΊΠ°ΠΊ часто слово Β«ΠΊΠ°ΠΏΠΈΡ‚Π°Π½Β» встрСчаСтся Π² спискС строк:

sentences = ['ΠΊΠ°ΠΏΠΈΡ‚Π°Π½ Π΄ΠΆΠ΅ΠΊ Π²ΠΎΡ€ΠΎΠ±Π΅ΠΉ',
             'ΠΊΠ°ΠΏΠΈΡ‚Π°Π½ дальнСго плавания',
             'ваша Π»ΠΎΠ΄ΠΊΠ° Π³ΠΎΡ‚ΠΎΠ²Π°, ΠΊΠ°ΠΏΠΈΡ‚Π°Π½']

cap_count = 0
for sentence in sentences:
    cap_count += sentence.count('ΠΊΠ°ΠΏΠΈΡ‚Π°Π½')

print cap_count
# => 3

Π’ΠΎΡ‚ ΠΆΠ΅ ΠΊΠΎΠ΄ с использованиСм reduce:

sentences = ['ΠΊΠ°ΠΏΠΈΡ‚Π°Π½ Π΄ΠΆΠ΅ΠΊ Π²ΠΎΡ€ΠΎΠ±Π΅ΠΉ',
             'ΠΊΠ°ΠΏΠΈΡ‚Π°Π½ дальнСго плавания',
             'ваша Π»ΠΎΠ΄ΠΊΠ° Π³ΠΎΡ‚ΠΎΠ²Π°, ΠΊΠ°ΠΏΠΈΡ‚Π°Π½']

cap_count = reduce(lambda a, x: a + x.count('ΠΊΠ°ΠΏΠΈΡ‚Π°Π½'),
                   sentences,
                   0)

А ΠΎΡ‚ΠΊΡƒΠ΄Π° здСсь бСрётся Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°? Оно Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ вычислСно ΠΈΠ· количСства ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΉ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ строкС. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΎΠ½ΠΎ задаётся ΠΊΠ°ΠΊ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ reduce().

ΠŸΠΎΡ‡Π΅ΠΌΡƒ map ΠΈ reduce Π»ΡƒΡ‡ΡˆΠ΅?

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΎΠ½ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡƒΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² ΠΎΠ΄Π½Ρƒ строку.

Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, Π²Π°ΠΆΠ½Ρ‹Π΅ части ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ,– коллСкция, опСрация ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅,– всСгда находятся Π² ΠΎΠ΄Π½ΠΎΠΌ мСстС map ΠΈ reduce.

Π’-Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΡ…, ΠΊΠΎΠ΄ Π² Ρ†ΠΈΠΊΠ»Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π½Π΅Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΈΠ»ΠΈ Π²Π»ΠΈΡΡ‚ΡŒ Π½Π° ΠΊΠΎΠ΄, находящийся послС Π½Π΅Π³ΠΎ. По соглашСнию, map ΠΈ reduce – Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹.

Π’-Ρ‡Π΅Ρ‚Π²Ρ‘Ρ€Ρ‚Ρ‹Ρ…, map ΠΈ reduce – элСмСнтарныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. ВмСсто построчного чтСния Ρ†ΠΈΠΊΠ»ΠΎΠ² Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŽ ΠΏΡ€ΠΎΡ‰Π΅ Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ map ΠΈ reduce, встроСнныС Π² слоТныС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹.

Π’-пятых, Ρƒ Π½ΠΈΡ… Π΅ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ·Π΅ΠΉ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅, слСгка ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ этих Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. НапримСр, filter, all, any ΠΈ find.

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 2: ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡˆΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ map, reduce ΠΈ filter. Filter ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ. Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ Ρ‚Π΅Ρ… Π²Π΅Ρ‰Π΅ΠΉ, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ True.

people = [{'имя': 'Маша', 'рост': 160},
    {' рост ': 'Баша', ' рост ': 80},
    {'name': 'Паша'}]

height_total = 0
height_count = 0
for person in people:
    if 'рост' in person:
        height_total += person[' рост ']
        height_count += 1

if height_count > 0:
    average_height = height_total / height_count

    print average_height
    # => 120
ΠœΠΎΡ‘ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅:
people = [{'имя': 'Маша', 'рост': 160},
    {' рост ': 'Баша', ' рост ': 80},
    {'name': 'Паша'}]

heights = map(lambda x: x['рост'],
              filter(lambda x: 'рост' in x, people))

if len(heights) > 0:
    from operator import add
    average_height = reduce(add, heights) / len(heights)

ΠŸΠΈΡˆΠΈΡ‚Π΅ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎ, Π° Π½Π΅ ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎ

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π²Ρ‹Π²ΠΎΠ΄Π°:

 -
 - -
 - -

 - -
 - -
 - - -

 - - -
 - -
 - - -

 - - - -
 - - -
 - - - -

 - - - -
 - - - -
 - - - - -

ВСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

from random import random

time = 5
car_positions = [1, 1, 1]

while time:
    # decrease time
    time -= 1

    print ''
    for i in range(len(car_positions)):
        # move car
        if random() > 0.3:
            car_positions[i] += 1

        # draw car
        print '-' * car_positions[i]

Код ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π΅Π½. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ вСрсия Π±Ρ‹Π»Π° Π±Ρ‹ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ – ΠΎΠ½Π° Π±Ρ‹ описывала, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Π° Π½Π΅ Ρ‚ΠΎ, ΠΊΠ°ΠΊ это Π½Π°Π΄ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

ДСкларативности ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ, вставляя ΠΊΠΎΠ΄ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:
from random import random

def move_cars():
    for i, _ in enumerate(car_positions):
        if random() > 0.3:
            car_positions[i] += 1

def draw_car(car_position):
    print '-' * car_position

def run_step_of_race():
    global time
    time -= 1
    move_cars()

def draw():
    print ''
    for car_position in car_positions:
        draw_car(car_position)

time = 5
car_positions = [1, 1, 1]

while time:
    run_step_of_race()
    draw()

Для понимания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŒ просматриваСт основной Ρ†ΠΈΠΊΠ». «Если ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ врСмя, ΠΏΡ€ΠΎΠΉΠ΄Ρ‘ΠΌ ΠΎΠ΄ΠΈΠ½ шаг Π³ΠΎΠ½ΠΊΠΈ ΠΈ Π²Ρ‹Π²Π΅Π΄Π΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. Π‘Π½ΠΎΠ²Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ врСмя». Если Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŽ Π½Π°Π΄ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ шаг Π³ΠΎΠ½ΠΊΠΈ, ΠΎΠ½ смоТСт ΠΏΡ€ΠΎΡ‡Π΅ΡΡ‚ΡŒ Π΅Π³ΠΎ ΠΊΠΎΠ΄ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ.

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹, ΠΊΠΎΠ΄ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ сам сСбя.

Π Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ. Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΡ‘ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½ΠΎ лишь ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Они ΡƒΠΏΠ°ΠΊΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚ ΠΊΠΎΠ΄, Π½ΠΎ Π½Π΅ Π΄Π΅Π»Π°ΡŽΡ‚ Π΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° ΠΎΠΊΡ€ΡƒΠΆΠ°ΡŽΡ‰ΠΈΠΉ ΠΈΡ… ΠΊΠΎΠ΄ ΠΈ ΠΌΠ΅Π½ΡΡŽΡ‚ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Π° Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ значСния. Если Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŒ встрСчаСт ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, Π΅ΠΌΡƒ потрСбуСтся Π½Π°ΠΉΡ‚ΠΈ, ΠΎΡ‚ΠΊΡƒΠ΄Π° ΠΎΠ½Π° взялась.

Π’ΠΎΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ вСрсия этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

from random import random

def move_cars(car_positions):
    return map(lambda x: x + 1 if random() > 0.3 else x,
               car_positions)

def output_car(car_position):
    return '-' * car_position

def run_step_of_race(state):
    return {'time': state['time'] - 1,
            'car_positions': move_cars(state['car_positions'])}

def draw(state):
    print ''
    print '\n'.join(map(output_car, state['car_positions']))

def race(state):
    draw(state)
    if state['time']:
        race(run_step_of_race(state))

race({'time': 5,
      'car_positions': [1, 1, 1]})

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊΠΎΠ΄ Ρ€Π°Π·Π±ΠΈΡ‚ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’ΠΎΠΌΡƒ Π΅ΡΡ‚ΡŒ Ρ‚Ρ€ΠΈ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠ°. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ – Π½Π΅Ρ‚ Ρ€Π°ΡΡˆΠ°Ρ€Π΅Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. time ΠΈ car_positions ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ прямиком Π² race(). Π’Ρ‚ΠΎΡ€ΠΎΠ΅ – Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹. Π’Ρ€Π΅Ρ‚ΡŒΠ΅ – ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π½Π΅ ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, всС значСния Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° run_step_of_race() ΠΏΡ€ΠΎΠ΄Π΅Π»Ρ‹Π²Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ шаг, ΠΎΠ½ пСрСдаётся ΠΎΠΏΡΡ‚ΡŒ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ.

Π’ΠΎΡ‚ Π²Π°ΠΌ Π΄Π²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ zero() ΠΈ one():

def zero(s):
    if s[0] == "0":
        return s[1:]

def one(s):
    if s[0] == "1":
        return s[1:]

zero() ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ строку s. Если ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ символ – 0, Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ остаток строки. Если Π½Π΅Ρ‚ – Ρ‚ΠΎΠ³Π΄Π° None. one() Π΄Π΅Π»Π°Π΅Ρ‚ Ρ‚ΠΎ ΠΆΠ΅ самоС, Ссли ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ символ – 1.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ rule_sequence(). Она ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ строку ΠΈ список ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ-ΠΏΡ€Π°Π²ΠΈΠ», состоящий ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ zero ΠΈ one. Она Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, пСрСдавая Π΅ΠΌΡƒ строку. Если Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΎ None, Ρ‚ΠΎ Π±Π΅Ρ€Ρ‘Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Ρ‘Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ. И Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Если возвращаСтся None, rule_sequence() останавливаСтся ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ None. Π˜Π½Π°Ρ‡Π΅ – Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ послСднСго ΠΏΡ€Π°Π²ΠΈΠ»Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…:

print rule_sequence('0101', [zero, one, zero])
# => 1

print rule_sequence('0101', [zero, zero])
# => None

Π˜ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Π°Ρ вСрсия rule_sequence():

def rule_sequence(s, rules):
    for rule in rules:
        s = rule(s)
        if s == None:
            break

    return s

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 3. Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ†ΠΈΠΊΠ». ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡˆΠΈΡ‚Π΅ Π΅Π³ΠΎ Π² Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ с использованиСм рСкурсии.

ΠœΠΎΡ‘ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅:
def rule_sequence(s, rules):
    if s == None or not rules:
        return s
    else:
        return rule_sequence(rules[0](s), rules[1:])

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Ρ‹ (pipelines)

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡˆΠ΅ΠΌ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²ΠΈΠ΄ Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΏΡ€ΠΈΡ‘ΠΌΠ° ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ†ΠΈΠΊΠ» измСняСт словари, содСрТащиС имя, Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΡƒΡŽ страну происхоТдСния ΠΈ статус Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π³Ρ€ΡƒΠΏΠΏ.

bands = [{'name': 'sunset rubdown', 'country': 'UK', 'active': False},
         {'name': 'women', 'country': 'Germany', 'active': False},
         {'name': 'a silver mt. zion', 'country': 'Spain', 'active': True}]

def format_bands(bands):
    for band in bands:
        band['country'] = 'Canada'
        band['name'] = band['name'].replace('.', '')
        band['name'] = band['name'].title()

format_bands(bands)

print bands
# => [{'name': 'Sunset Rubdown', 'active': False, 'country': 'Canada'},
#     {'name': 'Women', 'active': False, 'country': 'Canada' },
#     {'name': 'A Silver Mt Zion', 'active': True, 'country': 'Canada'}]

НазваниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Β«formatΒ» слишком ΠΎΠ±Ρ‰Π΅Π΅. И Π²ΠΎΠΎΠ±Ρ‰Π΅, ΠΊΠΎΠ΄ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ бСспокойство. Π’ ΠΎΠ΄Π½ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π΅ происходят Ρ‚Ρ€ΠΈ Ρ€Π°Π·Π½Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π° ‘country’ мСняСтся Π½Π° ‘Canada’. Π£Π±ΠΈΡ€Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΈ пСрвая Π±ΡƒΠΊΠ²Π° ΠΈΠΌΠ΅Π½ΠΈ мСняСтся Π½Π° Π·Π°Π³Π»Π°Π²Π½ΡƒΡŽ. Π‘Π»ΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΄Π΅Π»Π°Ρ‚ΡŒ, ΠΈ слоТно ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Π΄Π΅Π»Π°Π΅Ρ‚ Π»ΠΈ ΠΎΠ½ это. Π•Π³ΠΎ тяТСло ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Ρ€Π°ΡΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ²Π°Ρ‚ΡŒ.

Π‘Ρ€Π°Π²Π½ΠΈΡ‚Π΅:

print pipeline_each(bands, [set_canada_as_country,
                            strip_punctuation_from_name,
                            capitalize_names])

Всё просто. Π’ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ выглядят Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ связаны Π² Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ. Π’Ρ‹Ρ…ΠΎΠ΄ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ – Π²Ρ…ΠΎΠ΄ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ. Π˜Ρ… просто ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ ΠΈ Ρ€Π°ΡΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ²Π°Ρ‚ΡŒ.

pipeline_each() ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅Ρ‚ Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ, ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘Ρ‚ ΠΈΡ… функциям прСобразования, Π²Ρ€ΠΎΠ΄Π΅ set_canada_as_country(). ПослС примСнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊΠΎ всСм Π³Ρ€ΡƒΠΏΠΏΠ°ΠΌ, pipeline_each() Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈΠ· Π½ΠΈΡ… список ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ.

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ прСобразования.

def assoc(_d, key, value):
    from copy import deepcopy
    d = deepcopy(_d)
    d[key] = value
    return d

def set_canada_as_country(band):
    return assoc(band, 'country', "Canada")

def strip_punctuation_from_name(band):
    return assoc(band, 'name', band['name'].replace('.', ''))

def capitalize_names(band):
    return assoc(band, 'name', band['name'].title())

КаТдая связываСт ΠΊΠ»ΡŽΡ‡ Π³Ρ€ΡƒΠΏΠΏΡ‹ с Π½ΠΎΠ²Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ. Π‘Π΅Π· измСнСния ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… это тяТСло ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, поэтому ΠΌΡ‹ Ρ€Π΅ΡˆΠ°Π΅ΠΌ это с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ assoc(). Она ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ deepcopy() для создания ΠΊΠΎΠΏΠΈΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠ³ΠΎ словаря. КаТдая функция ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ копию ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ эту копию.

Всё Π²Ρ€ΠΎΠ΄Π΅ ΠΊΠ°ΠΊ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ. ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π»Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Ρ‹ ΠΎΡ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Но Π² ΠΊΠΎΠ΄Π΅ Π΅ΡΡ‚ΡŒ Π΄Π²Π° ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… мСста для ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π΄Π°Π½Π½Ρ‹Ρ…. Π’ strip_punctuation_from_name() создаётся имя Π±Π΅Π· Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ‡Π΅Ρ€Π΅Π· Π²Ρ‹Π·ΠΎΠ² calling replace() с ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ. Π’ capitalize_names() создаётся имя с ΠΏΠ΅Ρ€Π²ΠΎΠΉ прописной Π±ΡƒΠΊΠ²ΠΎΠΉ Π½Π° основС title() ΠΈ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ. Если replace ΠΈ time Π½Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹, Ρ‚ΠΎ ΠΈ strip_punctuation_from_name() с capitalize_names() Π½Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹.

К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, ΠΎΠ½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹. Π’ Python строки нСизмСняСмы. Π­Ρ‚ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с копиями строк. Π£Ρ„Ρ„, слава Π±ΠΎΠ³Ρƒ.

Π’Π°ΠΊΠΎΠΉ контраст ΠΌΠ΅ΠΆΠ΄Ρƒ строками ΠΈ словарями (ΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΡΡ‚ΡŒΡŽ) Π² Python дСмонстрируСт прСимущСства языков Ρ‚ΠΈΠΏΠ° Clojure. Π’Π°ΠΌ программисту Π½Π΅ Π½Π°Π΄ΠΎ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ, Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ Π»ΠΈ ΠΎΠ½ Π΄Π°Π½Π½Ρ‹Π΅. НС ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚.

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 4. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ pipeline_each. Π—Π°Π΄ΡƒΠΌΠ°ΠΉΡ‚Π΅ΡΡŒ Π½Π°Π΄ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. Π“Ρ€ΡƒΠΏΠΏΡ‹ – Π² массивС, ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ для ΠΏΠ΅Ρ€Π²ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ прСобразования. Π—Π°Ρ‚Π΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ массив пСрСдаётся ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΡˆΡ‚ΡƒΡ‡ΠΊΠ΅ для Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

ΠœΠΎΡ‘ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅:
def pipeline_each(data, fns):
    return reduce(lambda a, x: map(x, a),
                  fns,
                  data)

ВсС Ρ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ прСобразования Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΌΠ΅Π½ΡΡŽΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ ΠΏΠΎΠ»Π΅ Ρƒ Π³Ρ€ΡƒΠΏΠΏΡ‹. call() ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π°Π±ΡΡ‚Ρ€Π°ΠΊΡ†ΠΈΡŽ для этого. Она ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ ΠΊΠ»ΡŽΡ‡, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Π°.

set_canada_as_country = call(lambda x: 'Canada', 'country')
strip_punctuation_from_name = call(lambda x: x.replace('.', ''), 'name')
capitalize_names = call(str.title, 'name')

print pipeline_each(bands, [set_canada_as_country,
                            strip_punctuation_from_name,
                            capitalize_names])

Или, ТСртвуя Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒΡŽ:

print pipeline_each(bands, [call(lambda x: 'Canada', 'country'),
                            call(lambda x: x.replace('.', ''), 'name'),
                            call(str.title, 'name')])

Код для call():

def assoc(_d, key, value):
    from copy import deepcopy
    d = deepcopy(_d)
    d[key] = value
    return d

def call(fn, key):
    def apply_fn(record):
        return assoc(record, key, fn(record.get(key)))
    return apply_fn

Π§Ρ‚ΠΎ Ρ‚ΡƒΡ‚ Ρƒ нас происходит.

Один. call – функция Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ порядка, Ρ‚.ΠΊ. ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΊΠ°ΠΊ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.

Π”Π²Π°. apply_fn() ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ прСобразования. ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ запись (Π³Ρ€ΡƒΠΏΠΏΡƒ). Π˜Ρ‰Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ record[key]. Π’Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ fn. ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² копию записи ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΅Ρ‘.

Π’Ρ€ΠΈ. call сам Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚. Π’ΡΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π΄Π΅Π»Π°Π΅Ρ‚ apply_fn(). Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ использования pipeline_each(), ΠΎΠ΄ΠΈΠ½ экзСмпляр apply_fn() Π·Π°Π΄Π°Ρ‘Ρ‚ ‘country’ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ‘Canada’. Π”Ρ€ΡƒΠ³ΠΎΠΉ – Π΄Π΅Π»Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π²ΡƒΡŽ Π±ΡƒΠΊΠ²Ρƒ прописной.

Π§Π΅Ρ‚Ρ‹Ρ€Π΅. ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ экзСмпляра apply_fn() Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ fn ΠΈ key Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ доступны Π² области видимости. Π­Ρ‚ΠΎ Π½Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ apply_fn() ΠΈ Π½Π΅ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅. Но доступ ΠΊ Π½ΠΈΠΌ Π±ΡƒΠ΄Π΅Ρ‚. ΠŸΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ½Π° сохраняСт ссылки Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½Π° Π·Π°ΠΌΡ‹ΠΊΠ°Π΅Ρ‚ – Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ снаруТи Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ. ΠŸΡ€ΠΈ запускС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ищутся срСди Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ…, Π·Π°Ρ‚Π΅ΠΌ срСди Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Π° Π·Π°Ρ‚Π΅ΠΌ срСди ссылок Π½Π° Π·Π°ΠΌΠΊΠ½ΡƒΡ‚Ρ‹Π΅. Π’Π°ΠΌ ΠΈ найдутся fn ΠΈ key.

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

ΠœΠΎΠ»ΠΎΠ΄Ρ†ΠΎΠΌ. Замыкания, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ порядка ΠΈ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости – всё Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠ°Ρ€Π°Π³Ρ€Π°Ρ„Π°Ρ…. МоТно ΠΈ Ρ‡Π°ΠΉΠΊΡƒ с ΠΏΠ΅Ρ‡Π΅Π½ΡŒΠΊΠ°ΠΌΠΈ Π²Ρ‹ΠΏΠΈΡ‚ΡŒ.

ΠžΡΡ‚Π°Ρ‘Ρ‚ΡΡ Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π³Ρ€ΡƒΠΏΠΏ. Π£Π±Ρ€Π°Ρ‚ΡŒ всё, ΠΊΡ€ΠΎΠΌΠ΅ ΠΈΠΌΠ΅Π½ΠΈ ΠΈ страны. Ѐункция extract_name_and_country():

def extract_name_and_country(band):
    plucked_band = {}
    plucked_band['name'] = band['name']
    plucked_band['country'] = band['country']
    return plucked_band

print pipeline_each(bands, [call(lambda x: 'Canada', 'country'),
                            call(lambda x: x.replace('.', ''), 'name'),
                            call(str.title, 'name'),
                            extract_name_and_country])

# => [{'name': 'Sunset Rubdown', 'country': 'Canada'},
#     {'name': 'Women', 'country': 'Canada'},
#     {'name': 'A Silver Mt Zion', 'country': 'Canada'}]

extract_name_and_country() ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² ΠΎΠ±ΠΎΠ±Ρ‰Ρ‘Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ pluck(). Использовалась Π±Ρ‹ ΠΎΠ½Π° Ρ‚Π°ΠΊ:

print pipeline_each(bands, [call(lambda x: 'Canada', 'country'),
                            call(lambda x: x.replace('.', ''), 'name'),
                            call(str.title, 'name'),
                            pluck(['name', 'country'])])

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 5. pluck ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ список ΠΊΠ»ΡŽΡ‡Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°Π΄ΠΎ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ ΠΈΠ· записСй. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π΅Ρ‘ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ. Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅ функция Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ порядка.

ΠœΠΎΡ‘ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅:
def pluck(keys):
    def pluck_fn(record):
        return reduce(lambda a, x: assoc(a, x, record[x]),
                      keys,
                      {})
    return pluck_fn

И Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ?

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ Ρ…ΠΎΡ€ΠΎΡˆΠΎ сочСтаСтся с Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΌ. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ· этой ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² любом языкС. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΈ Π²Ρ‹ для своСго ΠΊΠΎΠ΄Π°.

ВспомнитС ΠΏΡ€ΠΎ ΠœΠ°ΡˆΡƒ, ΠŸΠ΅Ρ‚ΡŽ ΠΈ Π’Π°ΡΡŽ. ΠŸΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚Π΅ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ спискам Π² map ΠΈ reduces.

ВспомнитС Π³ΠΎΠ½ΠΊΠΈ. Π Π°Π·Π±Π΅ΠΉΡ‚Π΅ ΠΊΠΎΠ΄ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΈ сдСлайтС ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ. ΠŸΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Ρ†ΠΈΠΊΠ» Π² Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΡŽ.

ВспомнитС ΠΏΡ€ΠΎ Π³Ρ€ΡƒΠΏΠΏΡ‹. ΠŸΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€.

habr.com

Знакомство с Python. Π£Ρ€ΠΎΠΊ 2

ΠšΡ€Π°Ρ‚ΠΊΠ°Ρ историчСская справка

Π―Π·Ρ‹ΠΊ программирования Python Π±Ρ‹Π» создан ΠΊ 1991 Π³ΠΎΠ΄Ρƒ Π³ΠΎΠ»Π»Π°Π½Π΄Ρ†Π΅ΠΌ Π“Π²ΠΈΠ΄ΠΎ Π²Π°Π½ Россумом.

Π‘Π²ΠΎΠ΅ имя – ΠŸΠ°ΠΉΡ‚ΠΎΠ½ (ΠΈΠ»ΠΈ ΠŸΠΈΡ‚ΠΎΠ½) – ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» ΠΎΡ‚ названия тСлСсСриала, Π° Π½Π΅ ΠΏΡ€Π΅ΡΠΌΡ‹ΠΊΠ°ΡŽΡ‰Π΅Π³ΠΎΡΡ.

ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Россум Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π» язык, ΠΎΠ½ Π²Ρ‹Π»ΠΎΠΆΠΈΠ» Π΅Π³ΠΎ Π² Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚, Π³Π΄Π΅ сообщСство программистов ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΠ»ΠΎΡΡŒ ΠΊ Π΅Π³ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡŽ.

Python Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ развиваСтся Π² настоящСС врСмя. Часто выходят Π½ΠΎΠ²Ρ‹Π΅ вСрсии. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π΄Π²Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ Π²Π΅Ρ‚ΠΊΠΈ: Python 2.x ΠΈ Python 3.x. Π—Π΄Π΅ΡΡŒ английской Π±ΡƒΠΊΠ²ΠΎΠΉ «x» обозначаСтся ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ Ρ€Π΅Π»ΠΈΠ·. ΠœΠ΅ΠΆΠ΄Ρƒ Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΠΌ ΠŸΠΈΡ‚ΠΎΠ½ΠΎΠΌ Π΅ΡΡ‚ΡŒ нСбольшая Ρ€Π°Π·Π½ΠΈΡ†Π°. Π’ Π΄Π°Π½Π½ΠΎΠΌ курсС Π·Π° основу бСрСтся Python 3.x.

ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ сайт ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ языка – https://www.python.org.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ особСнности языка

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

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

Python – это ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹ΠΉ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ язык программирования, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… сфСрах. Основная, Π½ΠΎ Π½Π΅ СдинствСнная, поддСрТиваСмая ΠΈΠΌ ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ°, – ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. Однако Π² Π΄Π°Π½Π½ΠΎΠΌ курсС ΠΌΡ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ упомянСм ΠΎΠ± ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ…, Π° Π±ΡƒΠ΄Π΅ΠΌ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ структурноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΎ являСтся Π±Π°Π·ΠΎΠΉ. Π‘Π΅Π· знания основных Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠΉ, Ρ†ΠΈΠΊΠ»ΠΎΠ², Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π½Π΅Ρ‚ смысла ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ слоТныС ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΡ‹, Ρ‚. ΠΊ. Π² Π½ΠΈΡ… всС это ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ.

Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹ Python распространяСтся свободно Π½Π° основании Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ GNU General Public License.

Π”Π·Π΅Π½ ΠŸΠΈΡ‚ΠΎΠ½Π°

Если ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρƒ ΠŸΠΈΡ‚ΠΎΠ½Π° Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ import this («ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠΉ это» здСсь Π²ΠΈΠ΄ΠΈΠΌΠΎ слСдуСт ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ «ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠΉ самого сСбя»), Ρ‚ΠΎ вывСдСтся Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ «Π”Π·Π΅Π½ ΠŸΠΈΡ‚ΠΎΠ½Π°», ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ идСологию ΠΈ особСнности Π΄Π°Π½Π½ΠΎΠ³ΠΎ языка. ПониманиС смысла этих постулатов Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΏΡ€ΠΈΠ΄Π΅Ρ‚ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ освоитС язык Π² ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΌΠ΅Ρ€Π΅ ΠΈ ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Ρ‚Π΅Ρ‚Π΅ ΠΎΠΏΡ‹Ρ‚ практичСского программирования.

  • Beautiful is better than ugly. ΠšΡ€Π°ΡΠΈΠ²ΠΎΠ΅ Π»ΡƒΡ‡ΡˆΠ΅ ΡƒΡ€ΠΎΠ΄Π»ΠΈΠ²ΠΎΠ³ΠΎ.
  • Explicit is better than implicit. Π―Π²Π½ΠΎΠ΅ Π»ΡƒΡ‡ΡˆΠ΅ нСявного.
  • Simple is better than complex. ΠŸΡ€ΠΎΡΡ‚ΠΎΠ΅ Π»ΡƒΡ‡ΡˆΠ΅ слоТного.
  • Complex is better than complicated. Π‘Π»ΠΎΠΆΠ½ΠΎΠ΅ Π»ΡƒΡ‡ΡˆΠ΅ услоТнённого.
  • Flat is better than nested. ПлоскоС Π»ΡƒΡ‡ΡˆΠ΅ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ.
  • Sparse is better than dense. Π Π°Π·Ρ€Π΅ΠΆΡ‘Π½Π½ΠΎΠ΅ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠ»ΠΎΡ‚Π½ΠΎΠ³ΠΎ.
  • Readability counts. Π£Π΄ΠΎΠ±ΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ Π²Π°ΠΆΠ½Π°.
  • Special cases aren’t special enough to break the rules. ЧастныС случаи Π½Π΅ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ сущСствСнны, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ€ΡƒΡˆΠ°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»Π°.
  • Although practicality beats purity. Однако ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ Π²Π°ΠΆΠ½Π΅Π΅ чистоты.
  • Errors should never pass silently. Ошибки Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°ΠΌΠ°Π»Ρ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ.
  • Unless explicitly silenced. Π—Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ замалчивания, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΎ явно.
  • In the face of ambiguity, refuse the temptation to guess. ΠŸΠ΅Ρ€Π΅Π΄ Π»ΠΈΡ†ΠΎΠΌ нСоднозначности ΡΠΎΠΏΡ€ΠΎΡ‚ΠΈΠ²Π»ΡΠΉΡ‚Π΅ΡΡŒ ΠΈΡΠΊΡƒΡˆΠ΅Π½ΠΈΡŽ ΡƒΠ³Π°Π΄Π°Ρ‚ΡŒ.
  • There should be one β€” and preferably only one β€” obvious way to do it. Π”ΠΎΠ»ΠΆΠ΅Π½ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ β€” ΠΈ, ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ β€” ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΉ способ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это.
  • Although that way may not be obvious at first unless you’re Dutch. Π₯отя ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ с ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ взгляда Π½Π΅ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π΅Π½, Ссли Ρ‚Ρ‹ Π½Π΅ Π³ΠΎΠ»Π»Π°Π½Π΄Π΅Ρ†.
  • Now is better than never. БСйчас Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ Π½ΠΈΠΊΠΎΠ³Π΄Π°.
  • Although never is often better than *right* now. Однако, Π½ΠΈΠΊΠΎΠ³Π΄Π° Ρ‡Π°Ρ‰Π΅ Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ прямо сСйчас.
  • If the implementation is hard to explain, it’s a bad idea. Если Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ слоТно ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ β€” это плохая идСя.
  • If the implementation is easy to explain, it may be a good idea. Если Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π»Π΅Π³ΠΊΠΎ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ β€” это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ идСя.
  • Namespaces are one honking great idea β€” let’s do more of those! ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²Π° ΠΈΠΌΡ‘Π½ β€” прСкрасная идСя, Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΡ… большС!

Как ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Python

Π˜Π½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ

Π“Ρ€ΡƒΠ±ΠΎ говоря, ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ выполняСт ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ построчно. ПишСшь строку, наТимаСшь Enter, ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ выполняСт Π΅Π΅, наблюдаСшь Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

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

Π’ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах Π½Π° Π±Π°Π·Π΅ ядра Linux ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Python Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ прилоТСния Β«Π’Π΅Ρ€ΠΌΠΈΠ½Π°Π»Β», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ командная ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° Bash. Π—Π΄Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€, Π½Π°Π΄ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ python.

Π‘ΠΊΠΎΡ€Π΅Π΅ всСго запустится ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ ΠŸΠΈΡ‚ΠΎΠ½Π°, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ строкС. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Π·Π°ΠΏΡƒΡΡ‚ΠΈΠ»Π°ΡΡŒ вСрсия 2.7.12. ΠŸΠ΅Ρ€Π²ΠΎΠ΅ число Β«2Β» ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ это ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ для языка программирования Python 2. ПослСдняя строка с трСмя ΡƒΠ³Π»ΠΎΠ²Ρ‹ΠΌΠΈ скобками (>>>) – это ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΠ΅ для Π²Π²ΠΎΠ΄Π° ΠΊΠΎΠΌΠ°Π½Π΄. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² Π΄Π°Π½Π½ΠΎΠΌ курсС Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ язык Python 3, Π²Ρ‹ΠΉΠ΄Π΅ΠΌ ΠΈΠ· ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ exit() (exit – Π²Ρ‹Ρ…ΠΎΠ΄). ПослС Ρ‡Π΅Π³ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ python3.

Π•ΡΡ‚ΡŒ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚ python3 ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ установлСн. Π’Π°ΠΌ придСтся ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ.

Для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм сСмСйства Windows Π½Π°Π΄ΠΎ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ с ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ сайта языка (https://www.python.org/downloads/windows/). ПослС установки ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ ΠΏΠΎ ярлыку. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ здСсь Π½Π΅ трСбуСтся.

ВозмоТности Python ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΊΠ°ΠΊ ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ языка ΠΌΡ‹ Π½Π΅ ΠΈΠ·ΡƒΡ‡Π°Π»ΠΈ, это Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ способ ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Π²Π²ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄.

Π‘Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π² процСссС Π²Π²ΠΎΠ΄Π° Π±Ρ‹Π»Π° Π΄ΠΎΠΏΡƒΡ‰Π΅Π½Π° ошибка ΠΈΠ»ΠΈ трСбуСтся ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ Ρ€Π°Π½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ. Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π½ΠΎΠ²ΠΎ Π½Π΅ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ строку, Π² консоли ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ для этого стрСлки Π²Π²Π΅Ρ€Ρ… ΠΈ Π²Π½ΠΈΡ… Π½Π° ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π΅. Π’ срСдС IDLE (Π² Windows) для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ сочСтания клавиш (скорСС всСго Alt+N ΠΈ Alt+P).

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ скриптов

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

БущСствуСт Ρ†Π΅Π»Ρ‹ΠΉ ряд срСд Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ для Python, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, PyCharm. Однако Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠ΅ врСмя ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚ тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ с подсвСткой синтаксиса, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Geany.

Π—Π΄Π΅ΡΡŒ создаСтся ΠΈ сохраняСтся Ρ„Π°ΠΉΠ» ΠΊΠΎΠ΄ΠΎΠΌ. Π”Π°Π»Π΅Π΅ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ‡Π΅Ρ€Π΅Π· Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π». ΠŸΡ€ΠΈ этом сначала указываСтся ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ (Π² Π΄Π°Π½Π½ΠΎΠΌ случаС python3), ΠΏΠΎΡ‚ΠΎΠΌ имя Ρ„Π°ΠΉΠ»Π° (Ссли Ρ„Π°ΠΉΠ» находится Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, Ρ‚ΠΎ указываСтся с адрСсом, ΠΈΠ»ΠΈ Π½Π°Π΄ΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² этот ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ cd ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ Bash).

Однако Π² Geany ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ встроСнный Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» (sudo apt-get install libvte9), Ρ‡Ρ‚ΠΎ упростит Ρ€Π°Π±ΠΎΡ‚Ρƒ.

НаконСц, Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ ΠΌΠΎΠΆΠ½ΠΎ просто Π½Π°ΠΆΠ°Ρ‚ΡŒ F5, Ρ‡Ρ‚ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ Ρ„Π°ΠΉΠ» Π½Π° исполнСниС (Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» откроСтся сам, послС выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ наТатия Enter закроСтся).

Π’ Windows ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ срСдС IDLE. Для этого Π² мСню слСдуСт Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ File β†’ New Window (Crtl + N), откроСтся чистоС (Π±Π΅Π· ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΡ >>>) Π½ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ. Π–Π΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ сразу ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ .py, Ρ‡Ρ‚ΠΎΠ±Ρ‹ появилась подсвСтка синтаксиса. ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½, снова сохранитС Ρ„Π°ΠΉΠ». Запуск скрипта выполняСтся ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Run β†’ Run Module (F5). ПослС этого Π² ΠΎΠΊΠ½Π΅ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ Ρ€Π΅ΠΆΠΈΠΌΠ° появится Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΊΠΎΠ΄Π°.

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠ°Ρ Ρ€Π°Π±ΠΎΡ‚Π°

  1. ЗапуститС ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ ΠŸΠΈΡ‚ΠΎΠ½Π° Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ нСсколько ΠΊΠΎΠΌΠ°Π½Π΄, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, арифмСтичСскиС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹.

  2. ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΡŒΡ‚Π΅ Ρ„Π°ΠΉΠ» с ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°ΠΉΡ‚Π΅ Π΅Π³ΠΎ Π½Π° исполнСниС ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρƒ. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Ссли просто Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΡƒ, Ρ‚ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ Π²Ρ‹Π²ΠΎΠ΄Π° Π½Π΅ послСдуСт. Π’Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ пустоту. Π­Ρ‚ΠΎ отличаСтся ΠΎΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ Ρ€Π΅ΠΆΠΈΠΌΠ°. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, Π½Π°Π΄ΠΎ Β«ΠΎΠ±Π΅Ρ€Π½ΡƒΡ‚ΡŒΒ» ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ print().

younglinux.info

Pythonicway — Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Python

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ называСтся Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ процСссу программирования, Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° рассматриваСтся ΠΊΠ°ΠΊ вычислСниС матСматичСских Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΏΡ€ΠΈ этом Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ состояния ΠΈ измСняСмыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΊΠΎΠ³Π΄Π° говорят ΠΎ элСмСнтах Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π² Python, Ρ‚ΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°ΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: lambda, map, filter, reduce, zip.

  1. Lambda Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² Python.
  2. Ѐункция map() Π² Python.
  3. Ѐункция filter() Π² Python.
  4. Ѐункция reduce() Π² Python.
  5. Ѐункция zip() Π² Python.

lambda ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΈΠ»ΠΈ lambda функция Π² Python это способ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π±Π΅Π· ΠΈΠΌΠ΅Π½ΠΈ. Π’Π°ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΡ€Π°Π·ΠΎΠ²Ρ‹ΠΌΠΈ, ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ создании. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, lambda Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ с функциями filter, map, reduce.

Бинтаксис lambda выраТСния Π² Python

lambda arguments: expression

Π’ качСствС arguments пСрСдаСтся список Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… запятой, послС Ρ‡Π΅Π³ΠΎ Π½Π°Π΄ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ выполняСтся expression. Если ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ lambda-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ Π² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Π΄Π΅Π»Π°Π΅ΠΌ ΠΌΡ‹ это ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π² цСлях дСмонстрации)

>>> multiply = lambda x,y: x * y
>>> multiply(21, 2)
42

 Но, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, всС прСимущСства lambda-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ lambda Π² связкС с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ функциями

Π’ Python функция map ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π΄Π²Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°: Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ составного Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, список. map примСняСт ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту списка ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. НапримСр, Π²Ρ‹ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π»ΠΈ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° список чисСл, ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ всС эти числа ΠΈΠΌΠ΅ΡŽΡ‚ строковый Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π½ΠΈΠΌΠΈ — Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΈΡ… Π² Ρ†Π΅Π»ΠΎΠ΅ число:

old_list = ['1', '2', '3', '4', '5', '6', '7']

new_list = []
for item in old_list:
    new_list.append(int(item))

print (new_list)

[1, 2, 3, 4, 5, 6, 7]

Π’ΠΎΡ‚ ΠΆΠ΅ эффСкт ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ, ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ map:

old_list = ['1', '2', '3', '4', '5', '6', '7']
new_list = list(map(int, old_list))
print (new_list)

[1, 2, 3, 4, 5, 6, 7]

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΎΠΉ способ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ мСньшС строк, Π±ΠΎΠ»Π΅Π΅ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»Π΅Π½ ΠΈ выполняСтся быстрСС. map Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈ с функциями созданными ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ:

def miles_to_kilometers(num_miles):
    """ Converts miles to the kilometers """
    return num_miles * 1.6

mile_distances = [1.0, 6.5, 17.4, 2.4, 9]
kilometer_distances = list(map(miles_to_kilometers, mile_distances))
print (kilometer_distances)

[1.6, 10.4, 27.84, 3.84, 14.4]

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ‚ΠΎ ΠΆΠ΅ самоС, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ lambda Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅:

mile_distances = [1.0, 6.5, 17.4, 2.4, 9]
kilometer_distances = list(map(lambda x: x * 1.6, mile_distances))

print (kilometer_distances)

[1.6, 10.4, 27.84, 3.84, 14.4]

Ѐункция map ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Π° для Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… списков, Π² Ρ‚Π°ΠΊΠΎΠΌ случаС функция-Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ количСство Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ количСству списков:

l1 = [1,2,3]
l2 = [4,5,6]

new_list = list(map(lambda x,y: x + y, l1, l2))
print (new_list)

[5, 7, 9]

Если ΠΆΠ΅ количСство элСмСнтов Π² списках ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚, Ρ‚ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ закончится Π½Π° минимальном спискС:

l1 = [1,2,3]
l2 = [4,5]

new_list = list(map(lambda x,y:  + y, l1, l2))

print (new_list)
[5,7]

Ѐункция filter ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ элСгантный Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ элСмСнтов ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. ΠŸΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ:

mixed = ['ΠΌΠ°ΠΊ', 'просо', 'ΠΌΠ°ΠΊ', 'ΠΌΠ°ΠΊ', 'просо', 'ΠΌΠ°ΠΊ', 'просо', 'просо', 'просо', 'ΠΌΠ°ΠΊ']
zolushka = list(filter(lambda x: x == 'ΠΌΠ°ΠΊ', mixed))

print (zolushka)
['ΠΌΠ°ΠΊ', 'ΠΌΠ°ΠΊ', 'ΠΌΠ°ΠΊ', 'ΠΌΠ°ΠΊ', 'ΠΌΠ°ΠΊ']

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ функция, пСрСдаваСмая Π² filter Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ True / False, Ρ‡Ρ‚ΠΎΠ±Ρ‹ элСмСнты ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Π»ΠΈΡΡŒ.

Ѐункция reduce ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ 2 Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°: Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. reduce() ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ примСняСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ-Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΊ элСмСнтам списка, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π² Python 2.x функция reduce доступна ΠΊΠ°ΠΊ встроСнная, Π² Ρ‚ΠΎ врСмя, ΠΊΠ°ΠΊ Π² Python 3 ΠΎΠ½Π° Π±Ρ‹Π»Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½Π° Π² ΠΌΠΎΠ΄ΡƒΠ»ΡŒ functools.

ВычислСниС суммы всСх элСмСнтов списка ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ reduce:

from functools import reduce
items = [1,2,3,4,5]
sum_all = reduce(lambda x,y: x + y, items)

print (sum_all)

15

ВычислСниС наибольшСго элСмСнта Π² спискС ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ reduce:

from functools import reduce
items = [1, 24, 17, 14, 9, 32, 2]
all_max = reduce(lambda a,b: a if (a > b) else b, items)

print (all_max)
32

Ѐункция zip ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ Π² ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ элСмСнты ΠΈΠ· ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Ρ… Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

a = [1,2,3]
b = "xyz"
c = (None, True)

res = list(zip(a, b, c))
print (res)

[(1, 'x', None), (2, 'y', True)]

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ zip ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ достигнут ΠΊΠΎΠ½Π΅Ρ† самого ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ³ΠΎ списка.

pythonicway.com

Pythonicway — Python — ΠžΠ±Π·ΠΎΡ€

Details
Hits: 29260

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

  • Python являСтся ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ: исходный ΠΊΠΎΠ΄ Π½Π° Python Π½Π΅ компилируСтся Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, Π° выполняСтся нСпосрСдствСнно с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹-ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°.
  • Python это ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ язык: Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ прямо Π² ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° ΠΈ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ выполнСния ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ….
  • Python являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ΠΌ языком программирования. Python ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ООП, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°ΡŽΡ‚ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡŽ ΠΊΠΎΠ΄Π° Π² особыС структуры, ΠΈΠΌΠ΅Π½ΡƒΠ΅ΠΌΡ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ.

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ языка программирования Python

Python Π½Π°Ρ‡Π°Π» Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π² ΠΊΠΎΠ½Ρ†Π΅ Π²ΠΎΡΡŒΠΌΠΈΠ΄Π΅ΡΡΡ‚Ρ‹Ρ… Π³ΠΎΠ΄ΠΎΠ² сотрудником Голландского ΠΠ°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π˜ΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ Π˜Π½ΡΡ‚ΠΈΡ‚ΡƒΡ‚Π° ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ ΠΈ Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠΈ Π“Π²ΠΈΠ΄ΠΎ Π²Π°Π½ Россумом.

Python Π²ΠΎΠ±Ρ€Π°Π» Π² сСбя Ρ‡Π΅Ρ€Ρ‚Ρ‹ ΠΌΠ½ΠΎΠ³ΠΈΡ… популярных Π² Ρ‚ΠΎ врСмя языков программирования: Algol-68,Β C, C++, Modula-3Β ABC, SmallTalk, ΠΈ это Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ.

ВСрсия 1.0 появилась Π² 1994 Π³ΠΎΠ΄Ρƒ, 2.0 Π² 2000-ΠΌ, Π° 3.0 Π² 2008-ΠΌ Π³ΠΎΠ΄Ρƒ. На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‚ΡΡ вторая ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΡ вСрсии этого языка. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Python’a осущСствляСтся ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² всС Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ института, ΠΏΡ€ΠΈ этом Π·Π° Π²Π°Π½ Россумом ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ ΠΏΡ€Π°Π²ΠΎ Ρ€Π΅ΡˆΠ°ΡŽΡ‰Π΅Π³ΠΎ голоса Π² вопросах развития языка.

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ Python:

  • Π›Π΅Π³ΠΊΠΈΠΉ для обучСния: Π£ Python’a ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠ°Π»ΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов, простая структура ΠΈ Ρ‡Π΅Ρ‚ΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… синтаксис. Благодаря этому Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ основам языка ΠΌΠΎΠΆΠ½ΠΎ Π·Π° достаточно ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ΅ врСмя.
  • Π›Π΅Π³ΠΊΠΎ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΉ: Π‘Π»ΠΎΠΊΠΈ ΠΊΠΎΠ΄Π° Π² Python Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ отступов, Ρ‡Ρ‚ΠΎ совмСстно с ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌΠΈ словами, взятыми ΠΈΠ· английского языка Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±Π»Π΅Π³Ρ‡Π°ΡŽΡ‚ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°.
  • Π›Π΅Π³ΠΊΠΈΠΉ Π² обслуТивании: Одной ΠΈΠ· ΠΏΡ€ΠΈΡ‡ΠΈΠ½ ΡˆΠΈΡ€ΠΎΠΊΠΎΠΉ популярности Python’a являСтся простота обслуТивания ΠΊΠΎΠ΄Π° написанного Π½Π° этом языкС.
  • Широкая стандартная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°: НаличиС ΡˆΠΈΡ€ΠΎΠΊΠΎΠΉ кросс-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ являСтся Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎΠΉ сильной стороной этого языка программирования.
  • НаличиС ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ Ρ€Π΅ΠΆΠΈΠΌΠ°: позволяСт «Π½Π° Π»Π΅Ρ‚Ρƒ» Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹Π΅ участки ΠΊΠΎΠ΄Π°
  • ΠŸΠΎΡ€Ρ‚Π°Ρ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ:Β Python Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ запускаСтся Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ…, ΠΏΡ€ΠΈ этом сохраняСт ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ интСрфСйс, нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅.
  • Π Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΠΎΡΡ‚ΡŒ: ΠΏΡ€ΠΈ нСобходимости Π²Β PythonΒ ΠΌΠΎΠΆΠ½ΠΎ Π²Π½Π΅Π΄Ρ€ΡΡ‚ΡŒ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ написанныС Π½Π° ΠΈΠ½Ρ‹Ρ… языках программирования для Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΎΠ³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ поставлСнных Π·Π°Π΄Π°Ρ‡.
  • Π Π°Π±ΠΎΡ‚Π° с Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…: Π² стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Python ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎΠΌ коммСрчСских Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ….
  • Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ GUI (ГрафичСского интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ): Π½Π° Python Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ созданиС GUIΒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ нСзависимо ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° вашСй ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы.

pythonicway.com

ΠžΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

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

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