Ѐункция def python: def (функция/ΠΌΠ΅Ρ‚ΠΎΠ΄) Π² Python

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

def (функция/ΠΌΠ΅Ρ‚ΠΎΠ΄) Π² Python

ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ инструкций, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰Π°Ρ Π½Π΅ΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Π’ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Ρ‹ ноль ΠΈ Π±ΠΎΠ»Π΅Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² Ρ‚Π΅Π»Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Для Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° значСния ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ инструкция return. ДопускаСтся использованиС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… return, Π² Ρ‚ΠΎΠΌ числС для Ρ€Π°Π½Π½Π΅Π³ΠΎ Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±Π΅Π· инструкции return (Ρ€Π°Π²Π½ΠΎ ΠΊΠ°ΠΊ ΠΈ с нСю, Π½ΠΎ Π±Π΅Π· указания Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°) всё Ρ€Π°Π²Π½ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ β€” None.

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Π€ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова def, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ список Π΅Ρ‘ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Ρ… скобках. На ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… строках, Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ отступом слСва, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Ρ‚Π΅Π»ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ΠŸΠ΅Ρ€Π²ΠΎΠΉ инструкциСй Π² Ρ‚Π΅Π»Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΠΈΡ‚Π΅Ρ€Π°Π» строки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ²Π»ΡΡ‚ΡŒΡΡ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ для Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (строка Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ β€” Β«docstringΒ»). НСкоторыС ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ ΠΈ срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ‚Π°ΠΊΠΈΠ΅ строки для формирования ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ справки. Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ считаСтся Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ Ρ‚ΠΎΠ½ΠΎΠΌ.

def do_work(work, reverse=False):
"""ВыполняСт Ρ€Π°Π±ΠΎΡ‚Ρƒ.

Π’ случаС ΡƒΠ΄Π°Ρ‡Π½ΠΎΠ³ΠΎ выполнСния, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ True,
ΠΈΠ½Π°Ρ‡Π΅ - False.

:param list work: Бписок для Ρ€Π°Π±ΠΎΡ‚Ρ‹.
:param bool reverse: Π€Π»Π°Π³. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ Π»ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ
Ρ€Π°Π±ΠΎΡ‚Ρƒ Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС
:rtype: bool
"""

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΡˆΠ΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ функция do_work, с Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ work ΠΈ reverse. Ѐункция Π·Π°Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π° (ΠΈΡΠΏΠΎΠ»ΡŒΡƒΠ·Π΅Ρ‚ΡΡ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ описания сигнатуры reStructuredText). ΠšΡ€ΠΎΠΌΠ΅ строки Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Ρ‚Π΅Π»ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ содСрТит инструкций, Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ None.

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

Π‘Π°ΠΌΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ исполнСния ΠΊΠΎΠ΄Π° ΠΈΠ· Ρ‚Π΅Π»Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Код исполняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

    def print_yes():
print('yes')

print_yes() # yes

print_yes_alias = print_yes

print_yes_alias() # yes

Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Π½ΠΈΡ‡Ρ‚ΠΎ Π½Π΅ ΠΌΠ΅ΡˆΠ°Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Β«ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΒ» ΠΊΠ°ΠΊ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² качСствС значСния Π² словарС ΠΈ Ρ‚.ΠΏ.).

    def print_yes():
print('yes')

def print_no():
print('no')

my_functions = [print_yes, print_no]

for function in my_functions:
# ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ function Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚
# Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π•Π³ΠΎ-Ρ‚ΠΎ ΠΌΡ‹ ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ строкС.
function()

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

Π’Π²ΠΈΠ΄Ρƒ Π²Ρ‹ΡˆΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ, Π° ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (Π±Π΅Π· использования инструкции global) нСльзя.

    MY_GLOBAL = 1

def set_global_1():
MY_GLOBAL = 2

def set_global_2():
global MY_GLOBAL
MY_GLOBAL = 2

print(MY_GLOBAL) # 1

set_global_1()
print(MY_GLOBAL) # 1

set_global_2()
print(MY_GLOBAL) # 2

АргумСнты, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π±Ρ‹Π»Π° Π²Ρ‹Π·Π²Π°Π½Π° функция, Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² Π΅Ρ‘ локальной символьной Ρ‚Π°Π±Π»ΠΈΡ†Π΅.

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

    def mutate_list(a_list):
a_list.append(0)
return True

my_list = [1]
print(my_list) # [1]

mutate_list(my_list) # True
print(my_list) # [1, 0]

Когда функция Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, для Π²Ρ‹Π·ΠΎΠ²Π° создаётся новая локальная символьная Ρ‚Π°Π±Π»ΠΈΡ†Π°.

Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ опрСдСлСния

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

    def outer_func():

# ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ
# Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.
def inner_func():
return 'some'

return inner_func()

print(outer_func()) # some

def get_my_class():

# ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ класса Π²Π½ΡƒΡ‚Ρ€ΠΈ опрСдСлСния
# Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.
class MyClass:

my_attr = 1

return MyClass

my_class = get_my_class()
print(my_class.my_attr) # 1

Π‘ΠΈΠ½ΠΎΠ½ΠΈΠΌΡ‹ поиска: def (функция/ΠΌΠ΅Ρ‚ΠΎΠ΄), function, define, return, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, procedure, Π²ΡƒΠ°

#12 – Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ (def, lambda)

Π’ ΠŸΠΈΡ‚ΠΎΠ½Π΅ Π΅ΡΡ‚ΡŒ мноТСство встроСнных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. ΠœΡ‹ со ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ ΠΈΠ· Π½ΠΈΡ… ΡƒΠΆΠ΅ знакомились ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ настало врСмя ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ своих собствСнных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² Python. Π—Π° ΡƒΡ€ΠΎΠΊ ΠΌΡ‹ научимся ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ познакомимся с lambda выраТСниями.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π²Π°Ρ‚ΡŒ нСбольшими ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ, ΠΊΡƒΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ вынСсти ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠΉΡΡ ΠΊΠΎΠ΄ ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Π½Π΅ΠΌΡƒ, ΠΊΠΎΠ³Π΄Π° это Π±ΡƒΠ΄Π΅Ρ‚ Π½ΡƒΠΆΠ½ΠΎ. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±Π»Π΅Π³Ρ‡Π°ΡŽΡ‚ построСниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π°ΠΌ Π½Π΅ Π½Π°Π΄ΠΎ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΡ‚ΠΈΠΏΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ мноТСство Ρ€Π°Π·, Π° ΠΌΠΎΠΆΠ½ΠΎ просто Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΎΠ±Ρ‰Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ.

МногиС ΠΏΡƒΡ‚Π°ΡŽΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ. На самом Π΄Π΅Π»Π΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΉ Π½Π΅Ρ‚, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Ρ‡Ρ‚ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‡Ρ‚ΠΎ записаны Π²Π½Π΅ классов Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ функциями, Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‡Ρ‚ΠΎ записаны Π²Π½ΡƒΡ‚Ρ€ΠΈ классов Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ.

Π’ΠΎΡ‡Π½ΠΎ такая ΠΆΠ΅ ситуация обстоит с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ. Π’ классах ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ полями, Π° Π²Π½Π΅ классов — ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ.

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

def some_test(): # Ѐункция Π±Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²
	x = 23
	return x # Ѐункция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‡Ρ‚ΠΎ-Π»ΠΈΠ±ΠΎ

def some_test_2(a, b, c): # Ѐункция с 3 ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ
	return a * b * c # Ѐункция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ чисСл

def print_something(word, prefix): # Ѐункция с 2 ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ
	print (prefix, "-", word)
	pass # Ѐункция Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚

Когда функция Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚, Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово pass.Β 

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚Π΅ΠΌ самым вызывая ΠΈΡ…. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Π΅Ρ‘ Π½Π°Π·Π²Π°Π½ΠΈ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, Ссли Ρ‚Π°ΠΊΠΎΠ²Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ:

res = some_test_2 (2, 67, 12)

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΡˆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ res. Π”Π°Π»Π΅Π΅ с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ с ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅.

АнонимныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Если функция Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ большой объСм ΠΊΠΎΠ΄Π°, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ. Для этого потрСбуСтся функция lambda.Β 

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ создания Β«lambdaΒ» Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

multiple = lambda a, b: a * b
multiple(7, 12)

Подобная функция Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ названия, Π½ΠΎ Π΅Ρ‘ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π² дальнСйшСм Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.

Python def function: ΠΊΠ°ΠΊ Π²Ρ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ ΠΊΠΎΠ½Π΅Ρ† Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ?

Π― просто ΠΈΠ·ΡƒΡ‡Π°ΡŽ python ΠΈ Π·Π°ΠΏΡƒΡ‚Ρ‹Π²Π°ΡŽΡΡŒ, ΠΊΠΎΠ³Π΄Π° «def» Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ заканчиваСтся?

Π― Π²ΠΈΠΆΡƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π°, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ:

def myfunc(a=4,b=6):
    sum = a + b
    return sum

myfunc()

Π― знаю, Ρ‡Ρ‚ΠΎ это Π½Π΅ заканчиваСтся ΠΈΠ·-Π·Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° (ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ я Π²ΠΈΠ΄Π΅Π» ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ if… if FOO than return BAR, else return FOOBAR). ΠžΡ‚ΠΊΡƒΠ΄Π° Python Π·Π½Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ это Π½Π΅ рСкурсивная функция, которая сама сСбя Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚? Когда функция запускаСтся, ΠΎΠ½Π° просто ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, ΠΏΠΎΠΊΠ° Π½Π΅ Π½Π°ΠΉΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚? Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π»ΠΎ Π±Ρ‹ ΠΊ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ интСрСсным ошибкам.

Бпасибо

python

syntax

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ

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


Dan Β  Β 

15 октября 2009 Π² 16:32

8 ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ²


  • ΠΊΠ°ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ выполняСтС поиск ΠΈ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ android:launchMode= » singleTop»

    Π― Π²Ρ‹Π·Ρ‹Π²Π°ΡŽ стандартный поиск, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ дСйствиС, Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅ поиск, совпадаСт с дСйствиСм, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌ поиск (‘searchable activity’). Если я Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽ android:launchMode=singleTop Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ дСйствия, поиск Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ onNewIntent дСйствия, ΠΈ я Π²Ρ‹Π±ΠΈΡ€Π°ΡŽ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΠŸΠ°Ρ€ΠΌ поиска: Π½Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Если…

  • def function python-ΠΏΠΎΠΌΠΎΠ³ΠΈΡ‚Π΅ ΠΌΠ½Π΅ с синтаксисом

    Π― Π½ΠΎΠ²ΠΈΡ‡ΠΎΠΊ python, сСйчас ΠΈΠ·ΡƒΡ‡Π°ΡŽ основы. Π― ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π» ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅. Но это ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΎΡˆΠΈΠ±ΠΊΡƒ. ΠœΠΎΠΆΠ΅Ρ‚ Π»ΠΈ ΠΊΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΌΠ½Π΅, Π³Π΄Π΅ я дСлаю ошибки Π² синтаксисС? (Π― написал Π΅Π³ΠΎ с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ отступом. Π½ΠΎ ΠΎΠΊΠ½ΠΎ Stakoverflow Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ я Π΅Π³ΠΎ Π²ΡΡ‚Π°Π²Π»ΡΡŽ) # This will test the…



68

Π’ Python whitespace ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Ѐункция Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° отступ становится мСньшС (мСньшС).

def f():
    pass # first line
    pass # second line
pass # <-- less indentation, not part of function f.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ однострочныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ написаны Π±Π΅Π· отступов Π² ΠΎΠ΄Π½ΠΎΠΉ строкС:

def f(): pass

И, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π΅ΡΡ‚ΡŒ использованиС Ρ‚ΠΎΡ‡Π΅ΠΊ с запятой, Π½ΠΎ это Π½Π΅ рСкомСндуСтся :

def f(): pass; pass

Π’Ρ€ΠΈ Ρ„ΠΎΡ€ΠΌΡ‹ Π²Ρ‹ΡˆΠ΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚, ΠΊΠ°ΠΊ ΠΊΠΎΠ½Π΅Ρ† Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ опрСдСляСтся синтаксичСски . Π§Ρ‚ΠΎ касаСтся сСмантики , Π² Python Π΅ΡΡ‚ΡŒ Ρ‚Ρ€ΠΈ способа Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ return . Π­Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π² любом Π΄Ρ€ΡƒΠ³ΠΎΠΌ извСстном Π²Π°ΠΌ ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΌ языкС программирования.

  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ yield . Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ функция являСтся Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ. ОбъяснСниС Π΅Π³ΠΎ сСмантики Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° Ρ€Π°ΠΌΠΊΠΈ этого ΠΎΡ‚Π²Π΅Ρ‚Π°. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅, ΠΌΠΎΠΆΠ΅Ρ‚ Π»ΠΈ ΠΊΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ ΠΌΠ½Π΅ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ python yield?

  • ΠŸΡ€ΠΎΡΡ‚ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² послСднСС ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅. Если большС Π½Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈ послСдний ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π½Π΅ являСтся ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ return , Ρ‚ΠΎ функция сущСствуСт Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Ссли Π±Ρ‹ послСдний ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π±Ρ‹Π» return None . Π’ΠΎ Π΅ΡΡ‚ΡŒ Π±Π΅Π· явного ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° return функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ None . Π­Ρ‚Π° функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ None :

    def f():
        pass
    

    И этот Ρ‚ΠΎΠΆΠ΅:

    def f():
        42
    

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


Stephan202 Β  Β 

15 октября 2009 Π² 16:34



36

Python чувствитСлСн ΠΊ ΠΏΡ€ΠΎΠ±Π΅Π»Ρƒ Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ отступа. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ отступа возвращаСтся ΠΊ ΡƒΡ€ΠΎΠ²Π½ΡŽ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° функция, функция Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ.

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


fforw Β  Β 

15 октября 2009 Π² 16:34



9

Если Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌ, Π±Π»ΠΎΠΊ заканчиваСтся, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ сталкиваСтся с нСпустой строкой, отступ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ находится Π½Π΅ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ с Π½Π°Ρ‡Π°Π»ΠΎΠΌ. Π­Ρ‚Π° нСпустая строка Π½Π΅ являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ этого Π±Π»ΠΎΠΊΠ°
НапримСр, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ Π΄Π²Π° Π±Π»ΠΎΠΊΠ° ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ:

def foo():
    if bar:
        print "bar"

print "baz" # ends the if and foo at the same time

Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ отступа Ρ€Π°Π²Π΅Π½ less-than-or-equal ΠΊΠ°ΠΊ для def, Ρ‚Π°ΠΊ ΠΈ для if, поэтому ΠΎΠ½ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ ΠΈΡ… ΠΎΠ±Π°.

Π‘Ρ‚Ρ€ΠΎΠΊΠΈ Π±Π΅Π· утвСрТдСния, нСзависимо ΠΎΡ‚ отступа, Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ значСния

def foo():
    print "The line below has no indentation"

    print "Still part of foo"

Но ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΎΡ‚ΠΌΠ΅Ρ‡Π°ΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ½Π΅Ρ† Π±Π»ΠΎΠΊΠ°, Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ отступ Π½Π° Ρ‚ΠΎΠΌ ΠΆΠ΅ ΡƒΡ€ΠΎΠ²Π½Π΅, Ρ‡Ρ‚ΠΎ ΠΈ любой ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ отступ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ являСтся ошибкой:

def foo():
    print "Still correct"
   print "Error because there is no block at this indentation"

Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Ссли Π²Ρ‹ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ»ΠΈ ΠΊ языку Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобок, просто сдСлайтС отступ Π² ΠΊΠΎΠ΄Π΅, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ, ΠΈ всС Π±ΡƒΠ΄Π΅Ρ‚ Π² порядкС.

BTW, «standard» способ отступа Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ, Π½ΠΎ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΊΠ»Π°Π΄ΠΊΠ°, Π½ΠΎ, поТалуйста, Π½Π΅ ΡΠΌΠ΅ΡˆΠΈΠ²Π°ΠΉΡ‚Π΅ ΠΈΡ… ΠΎΠ±Π°.

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


RichN Β  Β 

15 октября 2009 Π² 16:52


  • ΠŸΠΎΡ‡Π΅ΠΌΡƒ Python допускаСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ def Π²Π½ΡƒΡ‚Ρ€ΠΈ for loop

    Π― Π½ΠΎΠ²ΠΈΡ‡ΠΎΠΊ Π² Python, Π½ΠΎ я ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π» ΠΊΠΎΠ΅-Ρ‡Ρ‚ΠΎ, ΠΈ это Π±Ρ‹Π»ΠΎ двусмыслСнно для мСня. ΠŸΠΎΡ‡Π΅ΠΌΡƒ Python позволяСт Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ def Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° ? ΠΈ ΠΊΠ°ΠΊ я ΠΌΠΎΠ³Ρƒ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ ΠΈΠ· этого ΠΏΠΎΠ»ΡŒΠ·Ρƒ ? for i in range(2): def f(): print ‘f’ f()

  • Как Π²Ρ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ Ρ€Π΅Ρ„Π΅Ρ€Π΅Ρ€ http Π² golang?

    Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ стандарт http.Client, ΠΊΠ°ΠΊ Π²Ρ‹ создаСтС Π²Π΅Π±-запрос, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ€Π΅Ρ„Π΅Ρ€Π΅Ρ€ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ запроса http? НиТС Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ, Π½ΠΎ ΠΊΠ°ΠΊ Π²Ρ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ Ρ€Π΅Ρ„Π΅Ρ€Π΅Ρ€? Π­Ρ‚ΠΎ просто установка Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° Ρ€Π΅Ρ„Π΅Ρ€Π΅Ρ€Π°? req, err := http.NewRequest(GET, url, nil) if err != nil {…



4

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ, Ρ‡Ρ‚ΠΎ Ссли Π²Ρ‹ просто Π½Π°Π±ΠΈΡ€Π°Π΅Ρ‚Π΅ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π΅ python, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с пустой строкой. Π­Ρ‚ΠΎ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚:

def foo(x):
  return x+1
print "last"

хотя это ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π·Π°ΠΊΠΎΠ½Π½Ρ‹ΠΉ синтаксис python Π² Ρ„Π°ΠΉΠ»Π΅. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ синтаксичСскиС различия ΠΏΡ€ΠΈ Π²Π²ΠΎΠ΄Π΅ тСкста Π² ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄ΡŒΡ‚Π΅ остороТны.

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


GaryO Β  Β 

21 ΠΌΠ°Ρ€Ρ‚Π° 2013 Π² 00:54



2

Π±Π΅Π»Ρ‹Π΅ пространства ΠΈΠΌΠ΅ΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ΠΊΠΎΠ³Π΄Π° Π±Π»ΠΎΠΊ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½, это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΎ.

ΠΊΠΎΠ³Π΄Π° функция запускаСтся, ΠΎΠ½Π° ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ ΠΈΠ»ΠΈ ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ return ΠΈΠ»ΠΈ yield . Если функция Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ Π±Π΅Π· появлСния ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² return ΠΈΠ»ΠΈ yield , Ρ‚ΠΎ None возвращаСтся нСявно.

Π² ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠ΅ Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ .

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


SilentGhost Β  Β 

15 октября 2009 Π² 16:34



1

Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ отступы

 def func():
     funcbody
     if cond: 
         ifbody
     outofif

 outof_func 

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


OscarRyz Β  Β 

15 октября 2009 Π² 16:35



1

Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ это отступ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Как ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΈ Π²Π°ΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ, ΠΊΠΎΠ³Π΄Π° ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ отступа находится Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ Ρ‚ΠΎΡ‡ΠΊΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ объявлСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ def, ваша функция Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ. Π˜ΠΌΠ΅ΠΉΡ‚Π΅ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΌΠ΅ΡˆΠΈΠ²Π°Ρ‚ΡŒ Π²ΠΊΠ»Π°Π΄ΠΊΠΈ ΠΈ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ Π² Python. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ² ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ это.

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


Mohan Gulati Β  Β 

15 октября 2009 Π² 17:56



0

На ΠΌΠΎΠΉ взгляд, Π»ΡƒΡ‡ΡˆΠ΅ явно ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Π΅Ρ† Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅ΠΌ

def func():
     # funcbody
     ## end of subroutine func ##

Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ какая-Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΡ‡Π΅Π½ΡŒ длинная ΠΈ Π½Π΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‡ΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Π²Π²Π΅Ρ€Ρ…, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, для ΠΊΠ°ΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ½Π° Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ»Π°ΡΡŒ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Sublime, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ‰Π΅Π»ΠΊΠ½ΡƒΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ -> goto Definition, ΠΈ ΠΎΠ½ автоматичСски ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅Ρ‚ ΠΊ объявлСнию ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


kstn Β  Β 

13 дСкабря 2019 Π² 17:50


ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ вопросы:

ΠŸΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Ρ„Π°ΠΉΠ»Π΅ def C++ DLL

Π― ΠΏΠΈΡˆΡƒ C/C++ DLL ΠΈ Ρ…ΠΎΡ‡Ρƒ ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я Π΄Π΅Π»Π°Π» Ρ€Π°Π½ΡŒΡˆΠ΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„Π°ΠΉΠ» .def, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ этому LIBRARY MyLib EXPORTS Foo Bar Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с ΠΊΠΎΠ΄ΠΎΠΌ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ…

Как Π²Ρ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ порядок ΠΏΠΎΠ»Π΅ΠΉ ΠΊΠ»ΡŽΡ‡Π° осколка Π² pymongo? (для mongodb)

Как Π²Ρ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ порядок ΠΏΠΎΠ»Π΅ΠΉ ΠΊΠ»ΡŽΡ‡Π° осколка Π² pymongo? (для mongodb) Π’ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅, pymongo позволял Π²Π°ΠΌ это Π΄Π΅Π»Π°Ρ‚ΡŒ: connection.admin.command(‘shardcollection’, ‘dbname.collname’, key =…

Как Π²Ρ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ Π±Π΅ΡΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΡΡ‚ΡŒ Π² StackExchange.Redis?

Redis позволяСт ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ»ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Π±Π΅ΡΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΡΡ‚ΡŒ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΈΠ· ZCOUNT : ZCOUNT myzset -inf +inf Как Π²Ρ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ эти…

ΠΊΠ°ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ выполняСтС поиск ΠΈ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ android:launchMode= » singleTop»

Π― Π²Ρ‹Π·Ρ‹Π²Π°ΡŽ стандартный поиск, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ дСйствиС, Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅ поиск, совпадаСт с дСйствиСм, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌ поиск (‘searchable activity’). Если я Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽ android:launchMode=singleTop Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅…

def function python-ΠΏΠΎΠΌΠΎΠ³ΠΈΡ‚Π΅ ΠΌΠ½Π΅ с синтаксисом

Π― Π½ΠΎΠ²ΠΈΡ‡ΠΎΠΊ python, сСйчас ΠΈΠ·ΡƒΡ‡Π°ΡŽ основы. Π― ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π» ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅. Но это ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΎΡˆΠΈΠ±ΠΊΡƒ. ΠœΠΎΠΆΠ΅Ρ‚ Π»ΠΈ ΠΊΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΌΠ½Π΅, Π³Π΄Π΅ я дСлаю ошибки Π² синтаксисС? (Π― написал Π΅Π³ΠΎ с…

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Python допускаСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ def Π²Π½ΡƒΡ‚Ρ€ΠΈ for loop

Π― Π½ΠΎΠ²ΠΈΡ‡ΠΎΠΊ Π² Python, Π½ΠΎ я ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π» ΠΊΠΎΠ΅-Ρ‡Ρ‚ΠΎ, ΠΈ это Π±Ρ‹Π»ΠΎ двусмыслСнно для мСня. ΠŸΠΎΡ‡Π΅ΠΌΡƒ Python позволяСт Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ def Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° ? ΠΈ ΠΊΠ°ΠΊ я ΠΌΠΎΠ³Ρƒ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ ΠΈΠ· этого ΠΏΠΎΠ»ΡŒΠ·Ρƒ ? for i in range(2):…

Как Π²Ρ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ Ρ€Π΅Ρ„Π΅Ρ€Π΅Ρ€ http Π² golang?

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ стандарт http.Client, ΠΊΠ°ΠΊ Π²Ρ‹ создаСтС Π²Π΅Π±-запрос, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ€Π΅Ρ„Π΅Ρ€Π΅Ρ€ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ запроса http? НиТС Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ, Π½ΠΎ ΠΊΠ°ΠΊ Π²Ρ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ Ρ€Π΅Ρ„Π΅Ρ€Π΅Ρ€?…

Python функция ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ def

Π­Ρ‚ΠΎΡ‚ вопрос, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π±Ρ‹Π» Π·Π°Π΄Π°Π½ для основ Python, ΠΊ соТалСнию, я ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΠ» Ρ†Π΅Π»Ρ‹ΠΉ час Π½Π° поиски ΠΎΡ‚Π²Π΅Ρ‚Π°, Π½ΠΎ Π½Π΅ смог Π΅Π³ΠΎ Π½Π°ΠΉΡ‚ΠΈ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ я надСюсь Π½Π° Ρ‡Π΅ΠΉ-Ρ‚ΠΎ Π²ΠΊΠ»Π°Π΄. Π― ΠΏΡ€ΠΈΠ²Ρ‹ΠΊ ΠΏΠΈΡΠ°Ρ‚ΡŒ класс, Π³Π΄Π΅ я ΠΌΠΎΠ³Ρƒ Π΄Π°Ρ‚ΡŒ…

Как Π²Ρ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ для CPLEX ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡ‚ΠΎΠΊ Π² pyomo?

Как Π²Ρ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ для CPLEX ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡ‚ΠΎΠΊ Π² pyomo? CPLEX ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΄ΠΎ 32 ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹Ρ… количСством процСссоров. Но ΠΊΠ°ΠΊ Π²Ρ‹ опрСдСляСтС использованиС pyomo…

ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ lambda ΠΊΠ°ΠΊ def:-function

Π― ΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ lambda-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π² def:-function, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ происходит Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Python-скрипта, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ я ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ». Π’ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² этом скриптС ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π° функция lambda, ΠΈ…

Python 3: Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (def) — объявлСниС ΠΈ Π²Ρ‹Π·ΠΎΠ²

Π’ΠΎΡ‚ ΠΌΡ‹ с Π²Π°ΠΌΠΈ ΠΈ
подошли ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈΠ· Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ языка Python – функциям. Π§Ρ‚ΠΎ
это Ρ‚Π°ΠΊΠΎΠ΅? Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅. НапримСр, ΡƒΠΆΠ΅ знакомая Π²Π°ΠΌ функция

print()

Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚
сообщСния Π² консоль. ЀактичСски ΠΆΠ΅ ΠΏΡ€ΠΈ Π΅Π΅ Π²Ρ‹Π·ΠΎΠ²Π΅ выполняСтся ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ
Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΈ являСтся Π²Ρ‹Π²ΠΎΠ΄ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΌ
Π²ΠΈΠ΄Π΅. И это ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ. Благодаря Π½Π°Π»ΠΈΡ‡ΠΈΡŽ Ρ‚Π°ΠΊΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π½Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ
Ρ€Π°Π· ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ инструкции для выполнСния Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. БобствСнно,
это Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ – ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ
Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π―Π·Ρ‹ΠΊ Python позволяСт
программисту ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ свои собствСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ
ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ синтаксис:

def <имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ>([список Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²]):

Β Β Β Β Β Β Β ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ 1

Β Β Β Β Β Β Β 
ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ 2


Β Β Β Β Β Β Β 
…


Β Β Β Β Β Β Β  ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€
N

Π—Π΄Π΅ΡΡŒ имя
Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ придумываСтся программистом ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ ΠΈΠΌΠ΅Π½Π°ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ
функция – это ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ дСйствиС, Ρ‚ΠΎ Π΅Π΅ имя слСдуСт Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π³Π»Π°Π³ΠΎΠ»,
Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

go,
show, get, set ΠΈ Ρ‚.ΠΏ.

Π”Π°Π»Π΅Π΅, ΠΈΠ΄Π΅Ρ‚ Π½Π°Π±ΠΎΡ€
ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ Ρ‚Π΅Π»ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ИмСнно ΠΎΠ½ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚
выполнятся ΠΏΡ€ΠΈ Π΅Π΅ Π²Ρ‹Π·ΠΎΠ²Π΅.

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π·Π°Π΄Π°Π΄ΠΈΠΌ
ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Β«helloΒ» Π² консоль:

def sayHello():
Β Β Β  print("hello")

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅, ΠΌΡ‹
здСсь ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π»ΠΈ имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Β«sayHelloΒ», записали пустыС ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки
Π±Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ Ρ‡Π΅Ρ€Π΅Π· Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ Ρ‚Π΅Π»ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Π²ΠΈΠ΄Π΅ конструкции print(«hello»). Но это
лишь ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π‘Π°ΠΌΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° здСсь Π΅Ρ‰Π΅ Π½Π΅Ρ‚ ΠΈ Ссли Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ,
Ρ‚ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚.

Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ
эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π΅Π΅ имя ΠΈ Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅
скобки Π΄Π°ΠΆΠ΅ Ссли ΠΌΡ‹ Π½Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Π΅ΠΉ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²:

Π­Ρ‚ΠΈ ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅
скобки ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΏΡ€ΠΈ
запускС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² консоли появится сообщСниС Β«helloΒ».

Имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±Π΅Π·
ΠΊΡ€ΡƒΠ³Π»Ρ‹Ρ… скобок – это фактичСски ссылка Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ:

Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, ссылка
Π½Π° ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ Ρ‚Ρƒ ΠΈΠ»ΠΈ ΠΈΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. А Ρ€Π°Π· это ссылка, Ρ‚ΠΎ
ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ:

Ρ‚Π΅ΠΌ самым
ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΅Π΅ синоним ΠΈ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Π΅Π΅ ΡƒΠΆΠ΅ Ρ‡Π΅Ρ€Π΅Π· это Π²Ρ‚ΠΎΡ€ΠΎΠ΅ имя:

Как ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ
Π² самом Π½Π°Ρ‡Π°Π»Π΅, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ для ΠΈΡ… ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°. И
Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΌΡ‹ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΌΠΎΠΆΠ΅ΠΌ Π΅Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π² любом мСстС нашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹
Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ число Ρ€Π°Π·, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Π°ΠΊ:

sayHello()
print("---------------")
sayHello()

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

«ΡΠ½Π°Ρ‡Π°Π»Π° Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠ΅Ρ‡ΡŒ ΠΏΠΈΡ€ΠΎΠ³ ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΡ‚ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ.»

ВакТС и с
функциями: ΠΌΡ‹ ΠΈΡ… сначала опрСдСляСм ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΡ‚ΠΎΠΌ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ
ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΠ΄Π΅Ρ‚ Π² самом Π½Π°Ρ‡Π°Π»Π΅, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΡƒΠΆΠ΅ ΠΈΡ… Π²Ρ‹Π·ΠΎΠ²Ρ‹ Π²
основной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅.

Если Π½ΡƒΠΆΠ½ΠΎ
ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Ρ‚ΠΎ ΠΌΡ‹ Π΅Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ послС ΠΏΠ΅Ρ€Π²ΠΎΠΉ:

def myAbs(x):
Β Β Β  x = -x if(x<0) else x

ИмСна Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ
Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ (Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ ΠΈΠΌΠ΅Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…), поэтому я Π½Π°Π·Π²Π°Π» Π΅Π΅ myAbs, Ρ‚.ΠΊ. функция abs ΡƒΠΆΠ΅ сущСствуСт.
И ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π΅ΠΉ числа. БоотвСтствСнно,
Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Ρ… скобках ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽ этот Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚. Если Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ Π΅Π΅ Π²Ρ‹Π·ΠΎΠ²Π΅ΠΌ:

Ρ‚ΠΎ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ
Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ None. Π­Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ
ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ функция myAbs явно Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ значСния.
По ΠΈΠ΄Π΅Π΅, ΠΌΡ‹ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ x. Для этого
Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ return, послС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€ΠΎΠ±Π΅Π»
ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡƒΡŽ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ:

def myAbs(x):
Β Β Β  x = -x if(x<0) else x
    return x

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΏΡ€ΠΈ
Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 5. Как это Π² дСталях Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚?
Вызывая Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ с Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ -5, пСрСмСнная x Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚
ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° этот числовой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Π”Π°Π»Π΅Π΅, выполняСтся Ρ‚Π΅Π»ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΈΠ΄Π΅Ρ‚
ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°: Ссли x<0, Ρ‚ΠΎ x=-x (мСняСм Π·Π½Π°ΠΊ
числа), ΠΈΠ½Π°Ρ‡Π΅ x Π½Π΅ мСняСтся.
Π—Π°Ρ‚Π΅ΠΌ, выполняСтся ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ return ΠΈ функция myAbs Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚
вычислСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ x.

Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ позволяСт
ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ самыС Ρ€Π°Π·Π½Ρ‹Π΅ значСния, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Π°ΠΊ:

print( myAbs(15) )
a = 100
print( myAbs(a) )

И это Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π΅
Ρ€Π°Π±ΠΎΡ‚Ρƒ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠΉ – с Π»ΡŽΠ±Ρ‹ΠΌΠΈ числовыми Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ
встрСчаСтся ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ return функция Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ свою Ρ€Π°Π±ΠΎΡ‚Ρƒ.
Π’ΠΎ Π΅ΡΡ‚ΡŒ, Ссли послС Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠ΄Ρ‚ΠΈ Π΅Ρ‰Π΅ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ конструкции:

def myAbs(x):
Β Β Β  x = -x if(x<0) else x
Β Β Β  return x
Β Β Β  print(x)

Π’ΠΎ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅
этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

НичСго Π² консоль
Π²Ρ‹Π²Π΅Π΄Π΅Π½ΠΎ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚, Ρ‚.ΠΊ. Π²Ρ‹Π·ΠΎΠ² Π±Ρ‹Π» Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ return. А Π²ΠΎΡ‚ Ссли
ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ print Π΄ΠΎ этого
ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°:

def myAbs(x):
Β Β Β  x = -x if(x<0) else x
Β Β Β  print(x)
Β Β Β  return x

Ρ‚ΠΎ ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ
Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 5.8. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ эту ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

def isPositive(x):
Β Β Β  if x >=0:
Β Β Β Β Β Β Β  return True
Β Β Β  else:
Β Β Β Β Β Β Β  return False

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС
ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ значСния True для
Π½Π΅ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… чисСл ΠΈ False – для
ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ…. И Π΄Π°Π»Π΅Π΅, Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

p = []
for a in range(-5, 11):
Β Β Β  if isPositive(a):
Β Β Β Β Β Β Β  p.append(a)
Β 
print(p)

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅,
список Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ числа. ΠŸΡ€Π°Π²Π΄Π°, Π² Π΄Π°Π½Π½ΠΎΠΌ случаС,
Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΠΊΠΎΡ€ΠΎΡ‡Π΅:

def isPositive(x):
Β Β Β  return x >=0

Π—Π΄Π΅ΡΡŒ сам
ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ >= Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ True ΠΈΠ»ΠΈ False.

Если Π½ΡƒΠΆΠ½ΠΎ
ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΡƒΡŽ Π΄Π²Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для вычислСния ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΈ
ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°, Ρ‚ΠΎ это дСлаСтся Ρ‚Π°ΠΊ:

def getSquare(w, h):
Β Β Β  return 2*(w+h)

Π’ΠΎ Π΅ΡΡ‚ΡŒ,
Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ, Π° Ρ‚Π΅Π»ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ состоит всСго ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ
ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° return, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ
сразу Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ вычислСния.

Π’Ρ‹Π·ΠΎΠ²Π΅ΠΌ эту
Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ:

p = getSquare(10, 5.5)
print(p)

И ΡƒΠ²ΠΈΠ΄ΠΈΠΌ
Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π΅Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ – Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 31,0. ΠŸΡ€ΠΈ этом, Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 10 ссылаСтся
ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ w, Π° Π½Π° Π²Ρ‚ΠΎΡ€ΠΎΠ΅ 5.5 – Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ h. Π’ΠΎΡ‚ Ρ‚Π°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ
ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎΠ΅ число Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

Π”Π°Π»Π΅Π΅, ΠΏΡ€ΠΈ
Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Ρ€ΠΎΠ²Π½ΠΎ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², сколько
ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΈΡ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ. НапримСр, Π²ΠΎΡ‚ Ρ‚Π°ΠΊΠΈΠ΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚:

myAbs()
myAbs(1, 2)
sayHello("abc")

Π—Π΄Π΅ΡΡŒ ΡƒΠΊΠ°Π·Π°Π½ΠΎ
ΠΈΠ»ΠΈ слишком ΠΌΠ½ΠΎΠ³ΠΎ, ΠΈΠ»ΠΈ слишком ΠΌΠ°Π»ΠΎ фактичСских ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².

Однако Ρƒ любой
Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ со значСниями ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ:

def sayHello(msg, end="!"):
Β Β Β  print(msg+end)

И Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΌΠΎΠΆΠ½ΠΎ
Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Ρ‚Π°ΠΊ:

ΠΈΠ»ΠΈ Ρ‚Π°ΠΊ:

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

def sayHello(end="!", msg):

ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ
синтаксичСской ошибкС.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Π΄Π°Π²Π°ΠΉΡ‚Π΅
Π΄ΠΎΠ±Π°Π²ΠΈΠΌ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Π²ΠΎΡ‚ Ρ‚Π°ΠΊΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€:

def sayHello(msg, end="!", sep = ": "):
Β Β Β  print("Message"+sep+msg+end)

И функция Π±ΡƒΠ΄Π΅Ρ‚
Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ сообщСниС Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅: Β«MessageΒ»+sep+msg+end. Π’Ρ‹Π·Π²Π°Ρ‚ΡŒ эту
Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

sayHello("Hello", "?", " ")

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

sayHello("Hello", sep=" ")

ΠœΡ‹ здСсь Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ
Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ явно ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ имя Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΈ присваиваСм Π΅ΠΌΡƒ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ΅
Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ msg ΠΈ sep Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ
ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Π΅ значСния, Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ end – Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π­Ρ‚ΠΎ называСтся
ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Π½Π΅ просто Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π½ΠΎ Π΅Ρ‰Π΅ ΠΈ
имя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°.

Если Π½Π°ΠΌ
трСбуСтся сразу Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ нСсколько Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ρ‚ΠΎ это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ.
ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ наша функция Π±ΡƒΠ΄Π΅Ρ‚ сразу ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΈ ΠΏΠ΅Ρ€ΠΈΠΌΠ΅Ρ‚Ρ€ ΠΈ ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ
ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°:

def perAndSq(w, h):
Β Β Β  return 2*(w+h), w*h

И, далСС,
Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Π΅Π΅:

res = perAndSq(2.3, 5)
print(res)

ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ
Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° ΠΈΠ· Π΄Π²ΡƒΡ… чисСл. Или, Ρ‚Π°ΠΊ:

per, sq = perAndSq(2.3, 5)
print(per, sq)

Аналогичным
ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΈ списки ΠΈ словари ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π»ΡŽΠ±Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ….

Π”Π°Π»Π΅Π΅, Π² Ρ‚Π΅Π»Π΅
Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ самыС Ρ€Π°Π·Π½Ρ‹Π΅ конструкции языка Python. НапримСр, для
возвСдСния числа Π² Ρ†Π΅Π»ΡƒΡŽ ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ:

def myPow(x, n):
Β Β Β  sx = 1
Β Β Β  while n > 0:
Β Β Β Β Β Β Β  sx *= x
Β Β Β Β Β Β Β  n -= 1
Β Β Β  return sx

И, Π·Π°Ρ‚Π΅ΠΌ,
Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Π΅Π΅:

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎΠΉ
ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ Python Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ
Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ являСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. НапримСр,
Ρƒ нас Π·Π°Π΄Π°Π½Π° Π²ΠΎΡ‚ такая функция:

def sayHello():
Β Β Β  print("hello")

Π’ΠΎΠ³Π΄Π° Π½ΠΈΠΆΠ΅ ΠΌΡ‹
ΠΌΠΎΠΆΠ΅ΠΌ Π΅Π΅ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Ссли ΡƒΠΊΠ°ΠΆΠ΅ΠΌ Ρ‚ΠΎ ΠΆΠ΅ самоС имя:

def sayHello():
Β Β Β  print("------- hello --------")

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΏΡ€ΠΈ Π΅Π΅
Π²Ρ‹Π·ΠΎΠ²Π΅:

ΡƒΠ²ΠΈΠ΄ΠΈΠΌ
Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ послСднСго, ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°. Если дальшС Π΅Π΅
ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

def sayHello(msg):
Β Β Β  print(msg)

Ρ‚ΠΎ всС Ρ€Π°Π²Π½ΠΎ
Π±ΡƒΠ΄Π΅Ρ‚ доступна Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π° такая функция, Π½ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΡƒΠΆΠ΅ с ΠΎΠ΄Π½ΠΈΠΌ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ
Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ:

sayHello("ΠΏΡ€ΠΈΠ²Π΅Ρ‚ ΠΌΠΈΡ€")

Когда это ΠΌΠΎΠΆΠ΅Ρ‚
ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅? НапримСр, Ссли ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π²
зависимости ΠΎΡ‚ условия:

TYPE_FUNC = True
Β 
if TYPE_FUNC:
Β Β Β  def sayHello():
Β Β Β Β Β Β Β  print("hello")
else:
Β Β Β  def sayHello(msg):
Β Β Β Β Β Β Β  print(msg)
Β 
sayHello()

Π—Π΄Π΅ΡΡŒ ΠΏΡ€ΠΈ
Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ TYPE_FUNC Ρ€Π°Π²Π½ΠΎΠΉ True Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½
ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π° ΠΈΠ½Π°Ρ‡Π΅ – Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚. Иногда это Π±Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ.

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΎΡ…Π΄Π° ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ

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

def max2(a, b):
Β Β Β  if a > b:
Β Β Β Β Β Β Β  return a
Β Β Β  return b

И Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΡ‹ Π΅Π΅
ΠΌΠΎΠΆΠ΅ΠΌ Ρ‚Π°ΠΊ:

Π—Π°Ρ‚Π΅ΠΌ, Π½Π°ΠΌ
ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»Π°ΡΡŒ функция, которая Π±Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΠ»Π° максимальноС ΠΈΠ· Ρ‚Ρ€Π΅Ρ… чисСл. Как Π΅Π΅
ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ? Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ идСю Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования, это ΠΌΠΎΠΆΠ½ΠΎ
ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

def max3(a, b, c):
Β Β Β  return max2(a, max2(b, c))

И Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅, здСсь
ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ return Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚
Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция max2. Но, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚
Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π°, вызовСтся другая функция max2, которая ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ максимальноС
срСди чисСл b ΠΈ c. Π’ΠΎ Π΅ΡΡ‚ΡŒ,
ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ max2 Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Π΅Π΅
ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹: ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ просто бСрСтся ΠΈΡ… x, Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ вычисляСтся Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ
Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ max2. Π’ΠΎΡ‚ Ρ‚Π°ΠΊ это
Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈ Π²ΠΎΡ‚ Ρ‡Ρ‚ΠΎ ΠΈΠ· сСбя прСдставляСт элСмСнт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΊ
ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ.

ΠŸΡ€ΠΈΡ‡Π΅ΠΌ,
благодаря гибкости языка Python, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ
для нахоТдСния максимальной строки:

print( max3("ab", "cd", "abc") )

Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ строки
ΠΌΠΎΠ³ΡƒΡ‚ спокойно ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ собой. И Π²ΠΎΠΎΠ±Ρ‰Π΅, Π»ΡŽΠ±Ρ‹Π΅ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅
ΠΌΠΎΠΆΠ½ΠΎ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ Π½Π° большС ΠΈ мСньшС, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²
Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ max3 ΠΈ max2.

Задания для самоподготовки

1. Π—Π°Π΄Π°ΠΉΡ‚Π΅ ΠΈ
Π²Ρ‹Π·ΠΎΠ²ΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая вычисляСт ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°.

2. НСобходимо
ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая Π² зависимости ΠΎΡ‚ значСния Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° type Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ
ΠΈΠ»ΠΈ ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€ΠΈΠΌΠ΅Ρ‚Ρ€ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°.

3. ΠΠ°ΠΏΠΈΡΠ°Ρ‚ΡŒ
Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ поиска максимального значСния ΠΈΠ· ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π΅ΠΉ списка Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

4. ΠΠ°ΠΏΠΈΡΠ°Ρ‚ΡŒ
Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ вычислСния произвСдСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ элСмСнтов ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π΅ΠΉ списка.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ | Python

Напомним, Ρ‡Ρ‚ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ. Π£ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Π΅ΡΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

НапримСр, функция parent_for(), ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ использовали Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… упраТнСниях, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ имя Ρ€Π΅Π±Ρ‘Π½ΠΊΠ° ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ, Π° Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ β€” строку 'mother' ΠΈΠ»ΠΈ 'father'. Π’Ρ‚ΠΎΡ€ΠΎΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ β€” Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ, ΠΈ Ссли Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ, Ρ‚ΠΎ автоматичСски ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ 'mother'.

Π­Ρ‚ΠΈ Π΄Π²Π° Π²Ρ‹Π·ΠΎΠ²Π° Ρ€Π°Π²Π½ΠΎΠ·Π½Π°Ρ‡Π½Ρ‹:

parent_for('Jon Snow')
parent_for('Jon Snow', 'mother')

Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Ρ‚Π°ΠΌ сдСланы Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ? Π”Π°Π²Π°ΠΉΡ‚Π΅ заглянСм Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

def parent_for(child_name, parent_name='mother'):
    # ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΊΠΎΠ΄

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΡƒΠΊΠ°Π·Π°Π½ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½ΠΎ β€” просто Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Π­Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ.

Π’Ρ‚ΠΎΡ€ΠΎΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΡƒΠΊΠ°Π·Π°Π½ со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚=ΠΊΠ°ΠΊΠΎΠ΅_Ρ‚ΠΎ_Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ создании ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Π­Ρ‚ΠΎΡ‚ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ =ΠΊΠ°ΠΊΠΎΠ΅_Ρ‚ΠΎ_Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄Π΅Π»Π°Π΅Ρ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, ΠΈ Π·Π°Π΄Π°Ρ‘Ρ‚ Π΅ΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

АргумСнтов ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ любоС количСство, Π½ΠΎ всС ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π² ΠΊΠΎΠ½Ρ†Π΅ списка Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Π’ΠΎ Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ строчки ΠΊΠΎΠ΄Π° синтаксичСски Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹:

  • def parent_for(child_name='Jon', who):
  • def calculate(a, b=90, c):
  • def get_prices(code=4161, quantity, place):

Π—Π°Π΄Π°Π½ΠΈΠ΅

Π Π΅Π°Π»ΠΈΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ custom_parent_for(), которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π΄Π²Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°:

  1. Π‘Ρ‚Ρ€ΠΎΠΊΡƒ β€” имя Ρ€Π΅Π±Ρ‘Π½ΠΊΠ°.
  2. Π‘Ρ‚Ρ€ΠΎΠΊΡƒ с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ родитСля. Π­Ρ‚ΠΎΡ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π±Ρ‹Ρ‚ΡŒ 'father'.

Ѐункция Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ имя ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ родитСля.

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

custom_parent_for('Cersei Lannister')  # Tywin Lannister

Π’Π°ΠΊΠΎΠΉ Π²Ρ‹Π·ΠΎΠ² Π²Π΅Ρ€Π½Ρ‘Ρ‚ имя ΠΎΡ‚Ρ†Π°.

  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π³ΠΎΡ‚ΠΎΠ²ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ parent_for() Π²Π½ΡƒΡ‚Ρ€ΠΈ своСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.
  • НС Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ свою Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ custom_parent_for(), Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΅Ρ‘.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π² Python: ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Π”Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€

Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ посвящСна Ρ‚Π΅ΠΌΠ΅ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π² Python. ΠŸΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅, ΡƒΠ΄Π΅Π»ΠΈΠΌ особоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ свойствам Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² Python, Π½Π° Π±Π°Π·Π΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° данная идСя, Π° Ρ‚Π°ΠΊΠΆΠ΅ рассмотрим Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π§Ρ‚ΠΎ Π½Π°Π΄ΠΎ Π·Π½Π°Ρ‚ΡŒ ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… ΠΈ функциях Π² Python?

Говоря ΠΎ функциях Π² Python, Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ Π΄Π²Π° аспСкта:
1) функция Π² Python β€” Π΅ΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Π΄Ρ€ΡƒΠ³ΠΈΠΌ функциям;
2) Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² Python Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡ…, возвращая Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ посрСдством return.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎΠ± этом ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅.

Ѐункция ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² Python

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

>>> # исходный список
>>> a = [1, 2, 3, 4, 5]
>>> # функция, которая Π²ΠΎΠ·Π²ΠΎΠ΄ΠΈΡ‚ Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠ΅ Π΅ΠΉ число 
>>> sq = lambda x: x**2
>>> # ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Python
>>> print(sq(5))
25

>>> # ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ списка ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΎΠ²
>>> b = list(map(sq, a))
>>> print(b)
[1, 4, 9, 16, 25]

Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ map Π² Π²ΠΈΠ΄Π΅ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ sq. ПослСдняя Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΠΊΠΎ всСм элСмСнтам нашСго списка a.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² Python функция являСтся ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ __call__(). ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ создали ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ класс:

class DemoCall():
def __call__(self):
return "Hello!"

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚Π°ΠΊΠΎΠ³ΠΎ класса Π² Python ΠΌΡ‹ смоТСм Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ:

>>> hello = DemoCall()
>>> hello()
'Hello!'

Ѐункция Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Python

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Python ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ, Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. ΠšΡΡ‚Π°Ρ‚ΠΈ, Π½Π° этом основана идСя замыкания (closures) Π² Python.

Π”Π°Π²Π°ΠΉΡ‚Π΅ создадим Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΡƒΠΌΠ½ΠΎΠΆΠ°ΡŽΡ‰ΡƒΡŽ 2 числа:

def mul(a):
def helper(b):
return a * b
return helper

Π’ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Python Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π΄Π²Π° Π²Π°ΠΆΠ½Ρ‹Ρ… свойства:
1) Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ mul() ΠΌΡ‹ создаём Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ helper();
2) функция mul() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½Π°ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ helper() Π² качСствС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹.

Π’Ρ‹Π·ΠΎΠ² этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Python:

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½Π° Π±Π°Π·Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ mul() собствСнныС кастомизированныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π”Π°Π²Π°ΠΉΡ‚Π΅ создадим Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π² Python, ΡƒΠΌΠ½ΠΎΠΆΠ°ΡŽΡ‰ΡƒΡŽ Π½Π° 3:

>>>three_mul = mul(3)
>>>three_mul(5)
15

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π±Ρ‹Π»Π° построСна функция three_mul(), ΡƒΠΌΠ½ΠΎΠΆΠ°ΡŽΡ‰Π°Ρ Π½Π° 3 любоС ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠ΅ Π΅ΠΉ число.

Π”Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Python

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΎ Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Ρ‘Ρ‚ ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ выступаСт другая функция. Π”Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ Π² Python добавляСт Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π΅ мСняя Π΅Ρ‘ содСрТимоС.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ ΠΏΠ°Ρ€Ρƒ простых Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² Python:

def first_test():
print("Test function 1")

def second_test():
print("Test function 2")

ΠŸΡ€ΠΈ этом ΠΌΡ‹ ΠΆΠ΅Π»Π°Π΅ΠΌ ΠΈΡ… Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ основного ΠΊΠΎΠ΄Π° нашСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π»Π°ΡΡŒ строчка β€œStart function”, Π° Π² ΠΊΠΎΠ½Ρ†Π΅ – строка β€œStop function”.

Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡΡ‚Π°Π²Π»Π΅Π½Π½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ ΠΌΠΎΠΆΠ½ΠΎ нСсколькими ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ строки Π² ΠΊΠΎΠ½Π΅Ρ† ΠΈ Π½Π°Ρ‡Π°Π»ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Но вряд Π»ΠΈ это ΡƒΠ΄ΠΎΠ±Π½ΠΎ, вСдь Ссли ΠΌΡ‹ ΠΏΠΎΠΆΠ΅Π»Π°Π΅ΠΌ ΠΈΡ… ΡƒΠ±Ρ€Π°Ρ‚ΡŒ, придётся ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π΅Π»ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΡƒΡ‚ΠΈ. Для Π½Π°Ρ‡Π°Π»Π° создадим Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ:

def simple_decore(fn):
def wrapper():
print("Start function")
fn()
print("Stop function")
return wrapper

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ:

first_test_wrapped = simple_decore(first_test)
second_test_wrapped = simple_decore(second_test)

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ first_test ΠΈ second_test Π½Π΅ помСнялись.

>>> first_test()
Test function 1
>>> second_test()
Test function 2

Наши Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ second_test_wrapped ΠΈ first_test_wrapped ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°ΠΌ ΠΈ Π½ΡƒΠΆΠ΅Π½.

>>> first_test_wrapped()
Start function
Test function 1
Stop function
>>> first_test_wrapped()
Start function
Test function 1
Stop function

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Ссли Π½Π°Π΄ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚Π°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ first_test ΠΈ second_test, Π΄Π΅Π»Π°Π΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

first_test = first_test_wrapped
second_test = second_test_wrapped

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ:

>>> first_test()
Start function
Test function 1
Stop function
>>> second_test()
Start function
Test function 2
Stop function

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Π΅ Π½Π°ΠΌΠΈ дСйствия ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΈΠ΄Π΅ΠΈ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Π°.

ΠŸΡ€Π°Π²Π΄Π°, вмСсто строк:

def first_test():
print("Test function 1")
first_test_wrapped = simple_decore(first_test)
first_test = first_test_wrapped 

ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠ½Π°Ρ‡Π΅:

@simple_decore
def first_test():
print("Test function 1")

Π’ нашСм случаС @simple_decore – это Π½Π΅ Ρ‡Ρ‚ΠΎ ΠΈΠ½ΠΎΠ΅, ΠΊΠ°ΠΊ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‘ΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Π°

Π‘Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ функция Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°, поэтому ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ Ρ‡Π΅Ρ€Π΅Π· Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€. Π”Π°Π²Π°ΠΉΡ‚Π΅ создадим Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΈ выводящий ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π΄Π΅ΠΊΠΎΡ€ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ Π½Π°ΠΌΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Π΅Ρ‘ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π΅.

def param_transfer(fn):
def wrapper(arg):
print("Start function: " + str(fn.__name__) + "(), with param: " + str(arg))
fn(arg)
return wrapper

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ, создадим Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π²Ρ‹Π²ΠΎΠ΄ΡΡ‰ΡƒΡŽ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹ΠΉ ΠΊΠΎΡ€Π΅Π½ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π΅ΠΉ числа, Π° Π² качСствС Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Π°, ΡƒΠΊΠ°ΠΆΠ΅ΠΌ созданный param_transfer:

@param_transfer
def print_sqrt(num):
print(num**0.5)

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ Π΄Π°Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ с Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ 4:

>>> print_sqrt(4)
Start function: print_sqrt(), with param: 4
2.0

Π”Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Ρ‹ для ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² класса Π² Python

Π‘ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ классов. Π”Π°Π²Π°ΠΉΡ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Π° param_transfer:

def method_decor(fn):
def wrapper(self):
print("Start method: " + str(fn.__name__))
fn(self)
return wrapper

Π’Π΅ΠΏΠ΅Ρ€ΡŒ приступим ΠΊ созданию класса для прСдставлСния 2-ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° (матСматичСского). Π’ классС ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ norm(), выводящий ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°.

class Vector():
def __init__(self, px = 0, py = 0):
self.px = px
self.py = py

@method_decor
def norm(self):
print((self.px**2 + self.py**2)**0.5)

Π§Ρ‚ΠΎ ΠΆΠ΅, ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ нашСго ΠΌΠ΅Ρ‚ΠΎΠ΄Π°:

>>> vc = Vector(px=10, py=5)
>>> vc.norm()
Start method: norm
11.180339887498949

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‡Π΅Ρ€Π΅Π· Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€

Π—Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ создаваСмыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ значСния. Π§Ρ‚ΠΎΠ±Ρ‹ это стало Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€, Π½ΡƒΠΆΠ½ΠΎ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π½Π°ΡˆΡƒ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΡŽΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ:

def decor_with_return(fn):
def wrapper(*args, **kwargs):
print("Start method: " + str(fn.__name__))
return fn(*args, **kwargs)
return wrapper

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ этого Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Π° ΠΈ для оборачивания Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅:

@decor_with_return
def calc_sqrt(val):
return val**0.5

ΠžΡΡ‚Π°Π»ΠΎΡΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ calc_sqrt() с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ 16:

>>> tmp = calc_sqrt(16)
Start method: calc_sqrt
>>> print(tmp)

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Python, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Python ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ инструкции def, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Π²ΠΎΠ΄ΠΈΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π—Π° Π½ΠΈΠΌ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΉ Π² скобки список Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‚ Ρ‚Π΅Π»ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ строки ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ отступ.

def func_name(param):
    pass
  • func_name — ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ пСрСмСнная, которая ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ инструкции def связываСтся со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π² Π²ΠΈΠ΄Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.
  • param — это Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ список Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‚ΡΡ со значСниями, прСдоставляСмыми ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΌ случаС функция ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Π΅Π΅ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΎΠ½Π° Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Π’ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Ρ‚Π°ΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки послС Π΅Π΅ ΠΈΠΌΠ΅Π½ΠΈ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ пустыми, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΆΠ΅ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ Π΅Π΅ Π²Ρ‹Π·ΠΎΠ²Π΅.

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

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ — это исполняСмый ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€. Π•Π³ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ связываСт имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ локальном пространствС ΠΈΠΌΠ΅Π½ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° Π²ΠΎΠΊΡ€ΡƒΠ³ исполняСмого ΠΊΠΎΠ΄Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ). Π­Ρ‚ΠΎΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ содСрТит ссылку Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ глобальноС пространство ΠΈΠΌΠ΅Π½, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ выполняСт Ρ‚Π΅Π»ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ вычисляСт Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, Ссли ΠΎΠ½ΠΈ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚. Π’Π΅Π»ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ выполняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅.

# ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ список чисСл ряда Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π΄ΠΎ n
>>> def fib(n):
...     """Print a Fibonacci series up to n."""
...     a, b = 0, 1
...     while a < n:
...         print(a, end=' ')
...         a, b = b, a+b
...     print()
...
>>> # Π’Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
... fib(2000)
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597

ΠŸΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ создаСтся ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости для хранСния Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ всС созданныС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ своС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² этом пространство ΠΈΠΌΠ΅Π½. Когда функция Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, это пространство ΠΈΠΌΠ΅Π½ уничтоТаСтся.

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

@f1(arg)
@f2
def func(): pass

# ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ эквивалСнтСн

def func(): pass
func = f1(arg)(f2(func))

Π­Ρ‚ΠΈ Π΄Π²Π° выраТСния эквивалСнтны Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ исходная функция Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π½Π΅ привязана ΠΊ ΠΈΠΌΠ΅Π½ΠΈ func.

Когда ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈΠΌΠ΅ΡŽΡ‚ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ parameter=expression, говорят, Ρ‡Ρ‚ΠΎ функция ΠΈΠΌΠ΅Π΅Ρ‚ значСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Для ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡƒΡ‰Π΅Π½ Π² Π²Ρ‹Π·ΠΎΠ²Π΅. Если ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Ρ‚ΠΎ всС ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ — это синтаксичСскоС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅.

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

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

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ послС * ΠΈΠ»ΠΈ *identifier ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² качСствС ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² (Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ «Π’Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Python»).

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ Ρ‚ΠΈΠΏΠΎΠ² Π² Ρ„ΠΎΡ€ΠΌΠ΅ :expression послС ΠΈΠΌΠ΅Π½ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°. Π›ΡŽΠ±ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ, Π΄Π°ΠΆΠ΅ Π² Ρ„ΠΎΡ€ΠΌΠ΅ *identifier ΠΈΠ»ΠΈ **identifier. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния Π² Ρ„ΠΎΡ€ΠΌΠ΅ -> expression, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ слСдуСт послС списка ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². Π­Ρ‚ΠΈ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹ΠΌ допустимым Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Python. НаличиС Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΉ Π½Π΅ мСняСт сСмантику Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ЗначСния Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ доступны Π² Π²ΠΈΠ΄Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ словаря с ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ ΠΏΠΎ ΠΈΠΌΠ΅Π½Π°ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π² Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ __annotations__ ΠΈ ΠΎΡ†Π΅Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ опрСдСлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Если ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΈΠΌΠΏΠΎΡ€Ρ‚ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΉ ΠΈΠ· __future__, Ρ‚ΠΎ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π² Π²ΠΈΠ΄Π΅ строк Π²ΠΎ врСмя выполнСния, Ρ‡Ρ‚ΠΎ позволяСт ΠΎΡ‚Π»ΠΎΠΆΠΈΡ‚ΡŒ ΠΎΡ†Π΅Π½ΠΊΡƒ. Π’ этом случаС Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ порядкС, Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Π² исходном ΠΊΠΎΠ΄Π΅.

Π’Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π΅ привязанныС ΠΊ ΠΈΠΌΠ΅Π½ΠΈ) для Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ³ΠΎ использования Π² выраТСниях. Π—Π΄Π΅ΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ лямбда-выраТСния, описанныС Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ «ΠΠ½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (lambda-выраТСния) Π² Python». ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ лямбда-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ — это просто сокращСниС для ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π½ΠΎΠ³ΠΎ опрСдСлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Ѐункция, опрСдСлСнная Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ def, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π° ΠΈΠ»ΠΈ присвоСна Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ ΠΈΠΌΠ΅Π½ΠΈ, ΠΊΠ°ΠΊ функция, опрСдСлСнная лямбда-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ. Π€ΠΎΡ€ΠΌΠ° def Π½Π° самом Π΄Π΅Π»Π΅ Π±ΠΎΠ»Π΅Π΅ мощная, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½Π° позволяСт Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ нСсколько ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΉ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ для программиста: Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Python — это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ класса. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ def, выполняСмый Π²Π½ΡƒΡ‚Ρ€ΠΈ опрСдСлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, опрСдСляСт Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π° ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π°. Π‘Π²ΠΎΠ±ΠΎΠ΄Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π²ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, содСрТащСй def. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ смотритС Π² Ρ€Π°Π·Π΄Π΅Π» ИмСнованиС ΠΈ привязка.

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

>>> fib
<function fib at 10042ed0>
>>> f = fib 
>>> f(100)
0 1 1 2 3 5 8 13 21 34 55 89
>>>

Π˜ΡΡ…ΠΎΠ΄Ρ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… языков, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΠ·Ρ€Π°Π·ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ fib это Π½Π΅ функция, Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½Π° Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. На самом Π΄Π΅Π»Π΅, Π΄Π°ΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±Π΅Π· ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° return Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, хотя ΠΈ довольно скучноС. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ называСтся None (встроСнноС имя). Π’Ρ‹Π²ΠΎΠ΄ значСния None ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ подавляСтся ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ, Ссли это СдинствСнноС Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ это, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ print():

>>> fib(0)
>>> print(fib(0))
None
>>>

Ѐункция, которая Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ список чисСл ряда Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ, вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ Π΅Π³ΠΎ:

>>> def fib2(n):  # Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ ряда Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π΄ΠΎ n
...     """Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ список, содСрТащий ряд Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π΄ΠΎ n."""
...     result = []
...     a, b = 0, 1
...     while a < n:
...         result.append(a)
...         a, b = b, a+b
...     return result
...
>>> f100 = fib2(100)    # Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
>>> f100
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
>>>

Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, дСмонстрируСт Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΠΎΠ²Ρ‹Π΅ возмоТности Python:

  • ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ return Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. return Π±Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ None. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… return Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½, Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ None.
  • ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ result.append(a) Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° списка result. ΠœΠ΅Ρ‚ΠΎΠ΄ — это функция, которая Β«ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚Β» ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ имя obj.methodname, Π³Π΄Π΅ obj Π΅ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ (ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅), ΠΈ methodname имя ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ опрСдСляСтся Ρ‚ΠΈΠΏΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π Π°Π·Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ имя, Π½Π΅ вызывая двусмыслСнности. МоТно ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ свои собствСнныС Ρ‚ΠΈΠΏΡ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ классы. ΠœΠ΅Ρ‚ΠΎΠ΄ append(), ΠΏΠΎΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² списка. Он добавляСт Π½ΠΎΠ²Ρ‹ΠΉ элСмСнт Π² ΠΊΠΎΠ½Π΅Ρ† списка.

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Π² Python. ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² Python | Π‘Π°Π΄Ρ€Π°Ρ… ΠŸΡŒΠ΅Ρ€, Π΄ΠΎΠΊΡ‚ΠΎΡ€ философии

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

ΠŸΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΠΌ!

Для Π½Π°Ρ‡Π°Π»Π° Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π΄Π²Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°, Π² Π΄Π°Π½Π½ΠΎΠΌ случаС Π΄Π²Π° числа, ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ сумму:

 def sum_function (first, second): 
return (first + second)

Π”Π°Π²Π°ΠΉΡ‚Π΅ протСстируСм Π½Π°ΡˆΡƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ с числа 5 ΠΈ 10:

 print ("Sum:", sum_function (5, 10)) 

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

 def sum_arbitrary_arguments (first, * rest): 
return (first + sum (rest))

НазовСм эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ с числами 5, 10 ΠΈ 15:

 print ( Β«Π‘ΡƒΠΌΠΌΠ° с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ числом Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²:Β», sum_arbitrary_arguments (5, 10,15)) 

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ с Π»ΡŽΠ±Ρ‹ΠΌ количСством ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².Π”Π°Π²Π°ΠΉΡ‚Π΅ Π²Ρ‹Π·ΠΎΠ²Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ с 5, 10, 15, 20, 25 ΠΈ 30:

 print (Β«Π‘ΡƒΠΌΠΌΠ° с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ числом Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²:Β», sum_arbitrary_arguments (5, 10,15, 20, 25, 30)) 

Π­Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ суммы. ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ с Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. НапримСр, рассмотрим Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ ΠΏΠΎΠ³ΠΎΠ΄Ρƒ Π² Нью-Π™ΠΎΡ€ΠΊΠ΅:

 def print_weather (name, state = "New York", temp = "30 градусов ЦСльсия"): 
print ("ΠŸΡ€ΠΈΠ²Π΅Ρ‚ {}, это {} in {} ". format (name, temp, state))

Если ΠΌΡ‹ Π²Ρ‹Π·ΠΎΠ²Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ с» Sarah «:

 print_weather (" Sarah ") 

ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ:

 print_weather (" Mike "," Бостон "," 28 градусов ЦСльсия ") 

ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ΅ количСство Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ‘**’.Π”Π°Π²Π°ΠΉΡ‚Π΅ сдСлаСм это для ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ² ΠΎ ΠΏΠΎΠ³ΠΎΠ΄Π΅:

 def print_weather_kwargs (** kwargs): 
weather_report = ""
для Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Π² kwargs.values ​​():
weather_report + = Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚
return weather_report

Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ‘kwargs’ , для Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова Π² качСствС словаря ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°ΠΉΡ‚Π΅ Π΅Π³ΠΎ Π² Π½Π°ΡˆΡƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ:

 kwargs = {'temp': "30 градусов ЦСльсия", 'in': 'in', 'State': "New York", 'when' : 'today'} 
print (print_weather_kwargs (** kwargs))

Π― ΠΎΡΡ‚Π°Π½ΠΎΠ²Π»ΡŽΡΡŒ Π½Π° этом, Π½ΠΎ я Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ Π²Π°ΠΌ ΠΏΠΎΠΈΠ³Ρ€Π°Ρ‚ΡŒ с ΠΊΠΎΠ΄ΠΎΠΌ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ.

Π’Π«Π’ΠžΠ”Π«

Подводя ΠΈΡ‚ΠΎΠ³, Π² этом постС ΠΌΡ‹ обсудили, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с функциями Π² python. Π‘Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая позволяСт Π½Π°ΠΌ Π½Π°ΠΉΡ‚ΠΈ сумму Π΄Π²ΡƒΡ… чисСл, Π·Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² Π²ΠΈΠ΄Π΅ Π·Π²Π΅Π·Π΄Ρ‹ для опрСдСлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, которая ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ΅ количСство ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Π”Π°Π»Π΅Π΅ ΠΌΡ‹ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ, ΠΊΠ°ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ с ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ. НаконСц, ΠΌΡ‹ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ, ΠΊΠ°ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ΅ количСство Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова. НадСюсь, Π²Ρ‹ нашли этот пост ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ / интСрСсным.Код ΠΈΠ· этого поста доступСн Π½Π° GitHub. Бпасибо Π·Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅!

Python 3 ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ: ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

На этой страницС: def, return, docstrings, help (), Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° значСния ΠΈ void

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ: основы

Π”Π°Π²Π°ΠΉΡ‚Π΅ откаТСмся ΠΎΡ‚ старой Π°Π»Π³Π΅Π±Ρ€Ρ‹. Π’Ρ‹ Π²Ρ‹ΡƒΡ‡ΠΈΠ»ΠΈ Β«Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΒ» ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:
f (x) = x 2 + 1

Π’ Python ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. def — ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово для опрСдСлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.Π—Π° ΠΈΠΌΠ΅Π½Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ слСдуСт ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ (Ρ‹) Π² (). Π”Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅: ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π½Π°Ρ‡Π°Π»ΠΎ Ρ‚Π΅Π»Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½ΠΎ отступом. Π’Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π»Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ return опрСдСляСт Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ПослС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ опрСдСлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

>>> def f (x):
        Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ x ** 2 + 1

>>> f (4)
17
>>>
 

ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π΄Ρ€ΡƒΠ³ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° функция, которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π³Π»Π°Π³ΠΎΠ» (надСюсь) ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π³Π΅Ρ€ΡƒΠ½Π΄ΠΈΠΉΠ½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ:

>>> def get_ing (wd):
        Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ wd + 'ing'

>>> get_ing ('ΠΏΡ€ΠΎΠ³ΡƒΠ»ΠΊΠ°')
'Ρ…ΠΎΠ΄ΡŒΠ±Π°'
>>>
 

НСсколько ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², строка Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ

НиТС прСдставлСна β€‹β€‹Ρ‡ΡƒΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ слоТная функция. Он ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π΄Π²Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°, ΠΈΠΌΠ΅Π΅Ρ‚ условноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² Ρ‚Π΅Π»Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ начинаСтся со строки:

>>> def same_initial (wd1, wd2):
        "" "ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ Π»ΠΈ Π΄Π²Π° слова с ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ символа,
        ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ True / False.Π Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ Π² рСгистрС игнорируСтся.
        Ссли wd1 [0] .lower () == wd2 [0] .lower ():
            Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ True
        Π΅Ρ‰Π΅:
            Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ лоТь

>>> same_initial ('яблоко', 'апСльсин')
Π›ΠΎΠΆΡŒ
>>> same_initial ('Энни', 'яблоко')
ΠŸΡ€Π°Π²Π΄Π°
>>>
 

Π‘Ρ‚Ρ€ΠΎΠΊΠ° «» «ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚, Ссли …» «» называСтся « docstring «. Π Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π½Ρ‹ΠΉ Π² самом Π²Π΅Ρ€Ρ…Ρƒ Ρ‚Π΅Π»Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΠ½ дСйствуСт ΠΊΠ°ΠΊ докумСнтация ΠΏΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π­Ρ‚Π° строка распСчатываСтся, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ help () для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

>>> справка (same_initial)
Π‘ΠΏΡ€Π°Π²ΠΊΠ° ΠΏΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ same_initial Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ __main__:

same_initial (wd1, wd2)
    ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ Π»ΠΈ Π΄Π²Π° слова с ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ символа,
    ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ True / False.Π Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ Π² рСгистрС игнорируСтся.
>>>
 

Π’ΠΎΡ‚ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π­Ρ‚Π° функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ список символов, ΠΎΠ±Ρ‰ΠΈΡ… для Π΄Π²ΡƒΡ… строк. (Π‘Ρ‹Π»ΠΎ Π±Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅, Ссли Π±Ρ‹ Π½Π΅ Π±Ρ‹Π»ΠΎ Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ΠΎΠ². МоТно ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ?)

>>> def in_both (wd1, wd2):
        Β«ΠŸΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π΄Π²Π΅ строки, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ отсортированный список ΠΎΠ±Ρ‰ΠΈΡ… символов»
        common = []
        для c в wd1:
            Ссли c в wd2:
                ΠΎΠ±Ρ‰ΠΈΠΉ.Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ (с)
        Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ отсортированный (ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ)

>>> in_both ('Π³Ρ€ΡƒΡˆΠ°', 'яблоко')
['a', 'e', ​​'p']
>>> in_both ('лингвистика', 'экономика')
['c', 'i', 'i', 'i', 'n', 's', 's']
>>>
 

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ: Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠΈΠ»ΠΈ Π°Π½Π½ΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ: Β«ΠŸΠΎΠ³ΠΎΠ΄ΠΈΡ‚Π΅ ΠΌΠΈΠ½ΡƒΡ‚ΠΊΡƒ, я Π½Π΅ Π²ΠΈΠ΄Π΅Π» Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° Π² ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠ΅ ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉΒ». Π’Ρ‹ ΠΏΡ€Π°Π²Ρ‹ — опрСдСлСнная Π­Π΄ функция get_legal () Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π»Π° Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π°, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Π±ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ.Π’ Python ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π±Π΅Π· ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π°. Π’Π°ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ void , ΠΈ ΠΎΠ½ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ None, ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Python «Π½ΠΈΡ‡Π΅Π³ΠΎ». Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ void:

>>> def sayhello (ΠΊΡ‚ΠΎ):
        print ('ΠŸΡ€ΠΈΠ²Π΅Ρ‚,', ΠΊΡ‚ΠΎ + '!')
        print ('Какой прСкрасный дСнь.')

>>> Sayhello ('Акбар')
ΠŸΡ€ΠΈΠ²Π΅Ρ‚, Акбар!
Какой прСкрасный дСнь.
>>>
 

Π₯ΠΎΡ€ΠΎΡˆΠΎ, Ρ‚ΠΎΠ³Π΄Π° Ρ‡Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ void ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚ΠΈΠΏΠ° «return»? Π₯ΠΎΡ€ΠΎΡˆΠΈΠΉ вопрос.ΠŸΠΎΠ·Π²ΠΎΠ»ΡŒΡ‚Π΅ ΠΌΠ½Π΅ ΠΏΡ€ΠΎΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ это Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…. Π’ΠΎΡ‚ функция get_ing (), опрСдСлСнная Π²Ρ‹ΡˆΠ΅, ΠΈ Π΅Π΅ Π½Π΅Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Π½Π°Π»ΠΎΠ³ print_ing ():

>>> def get_ing (wd):
        Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ wd + 'ing'

>>> def print_ing (wd):
        ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (wd + 'ing')

 

Вызывая Π΄Π²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π²Ρ‹ сначала Π·Π°ΠΌΠ΅Ρ‡Π°Π΅Ρ‚Π΅ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ Π² Π²Ρ‹Π²ΠΎΠ΄Π΅. Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰Π°Ρ функция Π΄Π°Π΅Ρ‚ Π²Π°ΠΌ строку (ΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ »), Π° функция ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π½Π½Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄ строки — ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° отсутствиС ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ.ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ отобраТаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ срСдС ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ; Π² сцСнарии Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ приводят ΠΊ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ Π²Ρ‹Π²ΠΎΠ΄Π°.

>>> get_ing ('интСрСс')
'интСрСсно'
>>> print_ing ('интСрСс')
интСрСсно
>>>
 

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ get_ing () Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° присваивания. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎ ΠΆΠ΅ самоС с print_ing (), ΠΈ Π²Ρ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½Π΅Ρ‚Π΅ΡΡŒ с Π½Π΅ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Π½Π½Ρ‹ΠΌΠΈ послСдствиями: ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ происходит послС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° присваивания, ΠΈ Π²Ρ‹ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ Π½ΠΈΡ‡Π΅Π³ΠΎ Π² качСствС значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ эта функция, Π±ΡƒΠ΄ΡƒΡ‡ΠΈ Π½Π΅Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ, Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚.

>>> foo = get_ing ('интСрСс')
>>> Ρ„Ρƒ
'интСрСсно'
>>> faa = print_ing ('интСрСс')
интСрСсно
>>> Ρ„Π°Π°
>>>
 

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΡƒΡŽ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ прямо ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠžΠΏΡΡ‚ΡŒ ΠΆΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ void Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚, ΠΎΠ½ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚. НиТС get_ing (‘eat’) пСрСдаСтся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ len () для ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ len (print_ing (‘eat’)) ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ происходит нСзависимо, Π° Π·Π°Ρ‚Π΅ΠΌ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ошибка Ρ‚ΠΈΠΏΠ°:

>>> len (get_ing ('Π΅ΡΡ‚ΡŒ'))
6
>>> len (print_ing ('Π΅ΡΡ‚ΡŒ'))
ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΏΠΈΡ‰Ρƒ

ΠžΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ (послСдний Π²Ρ‹Π·ΠΎΠ² послСдний):
  Π€Π°ΠΉΠ» "", строка 1, Π² 
    len (print_ing ('Π΅ΡΡ‚ΡŒ'))
TypeError: ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° NoneType Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ len ()
 

НаконСц, Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½Π° ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ, Π΅Π΅ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° значСния: просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ с Π½Π΅ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ.

>>> print (get_ing ('интСрСс'))
интСрСсно
>>> print_ing ('интСрСс')
интСрСсно
>>>
 

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

Как ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Python

Ѐункция Python — это Π³Ρ€ΡƒΠΏΠΏΠ° ΠΊΠΎΠ΄Π°. Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Ѐункция ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½Π° ΠΈΠ· любого мСста послС опрСдСлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° return.

Найди свой ΠΌΠ°Ρ‚Ρ‡ Π½Π° Ρ‚Ρ€Π΅Π½ΠΈΡ€ΠΎΠ²ΠΎΡ‡Π½ΠΎΠΌ Π»Π°Π³Π΅Ρ€Π΅