Π Π°Π·Π½ΠΎΠ΅

Python ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹: ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ python

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

ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ python

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ β€” ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π³Π»Π°Π²Π½Ρ‹Ρ… прСимущСств языка Python ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΏΡ€ΠΈ использовании ΠΈΡ… Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… Data Science. Π­Ρ‚ΠΎ Ρ‚Ρ€Π΅Ρ‚ΡŒΡ Ρ‡Π°ΡΡ‚ΡŒ сСрии ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² Β«Python для Data ScienceΒ», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ€Π΅Ρ‡ΡŒ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ ΠΎ функциях ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ….

Из Π½Π΅Π΅ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… концСпциях, Π½ΠΎ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚Π΅ΡΡŒ с Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹ΠΌΠΈ функциями ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ.

Π­Ρ‚ΠΎ практичСскоС руководство!

Π–Π΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ Ρ‚Π΅ части, Π³Π΄Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄, ΠΈ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ Π·Π°Π΄Π°Ρ‡ΠΈ Π² ΠΊΠΎΠ½Ρ†Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ! Π’Π°ΠΊΠΆΠ΅ рСкомСндуСтся Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ ΠΏΡ€ΠΎΡˆΠ»Ρ‹ΠΌ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°ΠΌ, Ссли Π²Ρ‹ Π΅Ρ‰Π΅ Π½Π΅ ознакомились с Π½ΠΈΠΌΠΈ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Python?

НачнСм с основ. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ сущСствуСт пСрСмСнная:

a = 'Hello!'

Π’ΠΎΡ‚ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Python:

len(a)

А Π²ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Python:

a.upper()

ΠŸΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π° Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ ΠΊΠ°Π½Π°Π»Ρ‹

Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Python? По сути, ΠΎΠ½ΠΈ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π² Π½Π΅Ρ‡Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. Π’ случаС этого ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π²Π²ΠΎΠ΄ 'Hello!' Π΄Π°Π» Π²Ρ‹Π²ΠΎΠ΄ Π΄Π»ΠΈΠ½Ρ‹ строки (6) ΠΈ Π²Π΅Ρ€ΡΠΈΡŽ строки, ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Π½Π½ΡƒΡŽ с большой Π±ΡƒΠΊΠ²Ρ‹: 'HELLO!'. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, это Π½Π΅ СдинствСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π˜Ρ… Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ большС. Π˜Ρ… комбинация пригодится Π² Ρ€Π°Π·Π½Ρ‹Ρ… частях ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° β€” ΠΎΡ‚ очистки Π΄Π°Π½Π½Ρ‹Ρ… Π΄ΠΎ машинного обучСния.

ВстроСнныС vs. ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

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

Π‘Π°ΠΌΡ‹Π΅ Π²Π°ΠΆΠ½Ρ‹Π΅ встроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Python для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Data Science

Ѐункция Π² Python Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΎΡ‡Π΅Π½ΡŒ просто β€” Π΅Π΅ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ, Π° ΠΎΠ½Π° Π²Π΅Ρ€Π½Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. Π’ΠΈΠΏ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, строка, число, логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅) ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ½ΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ это Π±Ρ‹Π»ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ†Π΅Π»ΠΎΠ΅ число), Π½ΠΎ Ρ‡Π°Ρ‰Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ любого Ρ‚ΠΈΠΏΠ°. Рассмотрим самыС Π²Π°ΠΆΠ½Ρ‹Π΅ встроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Python:

print()
Π­Ρ‚Π° функция ΡƒΠΆΠ΅ использовалась Π² ΠΏΡ€ΠΎΡˆΠ»Ρ‹Ρ… ΡΡ‚Π°Ρ‚ΡŒΡΡ…. Она Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ значСния Π½Π° экран.

print("Hello, World!")

abs()
Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΡƒΡŽ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ числа (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, Ρ†Π΅Π»ΠΎΠ΅ число ΠΈΠ»ΠΈ число с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ). Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ строкой, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ числовым Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ.

abs(-4/3)

round()
Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ числа

round(-4/3)

min()
Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ наимСньший ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² спискС ΠΈΠ»ΠΈ ΠΈΠ· ΠΎΠ±Ρ‰Π΅Π³ΠΎ числа Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π² Ρ‚ΠΎΠΌ числС ΠΈ строка.

min(3,2,5)
min('c','a','b')

max()
НСслоТно Π΄ΠΎΠ³Π°Π΄Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ это ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ min().

sorted()
Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ список ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ. Он ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΈ строки ΠΈ числа.

a = [3, 2, 1]
sorted(a)

sum()
Π‘ΡƒΠΌΠΌΠΈΡ€ΡƒΠ΅Ρ‚ значСния списка. Он ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ числовых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Π½ΠΎ стоит ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ с числами с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой функция справляСтся Π½Π΅ всСгда ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ.

a = [3, 2, 1]
sum(a)
b = [4/3 , 2/3, 1/3, 1/3, 1/3]
sum(b)

len()
Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ количСство элСмСнтов Π² спискС ΠΈΠ»ΠΈ количСство символов Π² строкС.

len('Hello!')

type()
Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ

a = True
type(a)

b = 2
type(b)

Π­Ρ‚ΠΎ встроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Python, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ придСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ рСгулярно. Π‘ΠΎ всСм списком ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ здСсь: https://docs.python.org/3/library/functions.html

Π‘ ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Π²Ρ‹ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚Π΅ΡΡŒ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… руководствах.

Π‘Π°ΠΌΡ‹Π΅ Π²Π°ΠΆΠ½Ρ‹Π΅ встроСнныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Python

Π‘ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Python Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ. НапримСр, upper() Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ со строками, Π½ΠΎ Π½Π΅ с Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами. А append() ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° списках, Π½ΠΎ со строками, числами ΠΈ логичСскими значСниями ΠΎΠ½ бСсполСзСн. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ дальшС Π±ΡƒΠ΄Π΅Ρ‚ список ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², Ρ€Π°Π·Π±ΠΈΡ‚Ρ‹ΠΉ ΠΏΠΎ Ρ‚ΠΈΠΏΠ°ΠΌ.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ для строк Python

Π‘Ρ‚Ρ€ΠΎΠΊΠΎΠ²Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π½Π° этапС очистки Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. НапримСр, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ собираСтС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΡ‰ΡƒΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π½Π° сайтС, ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ строки: 'mug', 'mug ', 'Mug'. Π§Π΅Π»ΠΎΠ²Π΅ΠΊΡƒ извСстно, Ρ‡Ρ‚ΠΎ Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎΠ± ΠΎΠ΄Π½ΠΎΠΌ ΠΈ Ρ‚ΠΎΠΌ ΠΆΠ΅, Π½ΠΎ для Python это Ρ‚Ρ€ΠΈ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ строки. И здСсь Π΅ΠΌΡƒ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠΌΠΎΡ‡ΡŒ. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ самыС Π²Π°ΠΆΠ½Ρ‹Π΅ строковыС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Python:

a.lower()
Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π²Π΅Ρ€ΡΠΈΡŽ строки с символами Π² Π½ΠΈΠΆΠ½Π΅ΠΌ рСгистрС.

a = 'MuG'
a.lower()

a.upper()
ΠŸΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ lower()

a.strip()
Если Π² строкС Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΈΠ»ΠΈ Π² ΠΊΠΎΠ½Ρ†Π΅, ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΡ… ΡƒΠ΄Π°Π»ΠΈΡ‚.

a = ' Mug '
a.strip()

a.replace(β€˜old’, β€˜new’)
ЗамСняСт Π²Ρ‹Π±Ρ€Π°Π½Π½ΡƒΡŽ строку Π΄Ρ€ΡƒΠ³ΠΎΠΉ строкой. ΠœΠ΅Ρ‚ΠΎΠ΄ чувствитСлСн ΠΊ рСгистру.

a = 'muh'
a.replace('h', 'g')

a.split(β€˜delimiter’)
Π Π°Π·Π±ΠΈΠ²Π°Π΅Ρ‚ строку ΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈΠ· Π½Π΅Π΅ список. АргумСнт выступаСт Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΌ.

a = 'Hello World'
a.split(' ')

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π² этом случаС Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΌ выступаСт ΠΏΡ€ΠΎΠ±Π΅Π».

’delimeter’.join(a)
ΠžΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ элСмСнты списка Π² строку. Π Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π·Π°Π½ΠΎΠ²ΠΎ.

a = ['Hello', 'World']
' '.join(a)

Π­Ρ‚ΠΎ Π±Ρ‹Π»ΠΈ самыС Π²Π°ΠΆΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со строками Π² Python.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Python для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со списками

Π’ ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π΅ Ρ€Π΅Ρ‡ΡŒ шла ΠΎ структурах Π΄Π°Π½Π½Ρ‹Ρ… Python. И Π²ΠΎΡ‚ ΠΊ Π½ΠΈΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ снова. Π’Ρ‹ ΡƒΠΆΠ΅ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ списки ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ доступ ΠΊ ΠΈΡ… элСмСнтам. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈΡ….

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΡƒΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡƒΡŽ собаку Freddie:

[dog] = ['Freddie', 9 , True, 1.1, 2001, ['bone', 'little ball']]

Π’Π΅ΠΏΠ΅Ρ€ΡŒ посмотрим, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ список.

a.append(arg)
ΠœΠ΅Ρ‚ΠΎΠ΄ append добавляСт элСмСнт ΠΊ ΠΊΠΎΠ½Ρ†Ρƒ списка. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ количСство Π»Π°ΠΏ Freddie (4).

dog.append(4)
dog

a.remove(arg)
Π£Π΄Π°Π»ΠΈΡ‚ΡŒ любой ΠΈΠ· элСмСнтов ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° .remove(). Для этого Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ элСмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ, Π° Python ΡƒΠ±Π΅Ρ€Π΅Ρ‚ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ‚Π°ΠΊΠΎΠΉ элСмСнт Π² спискС.

dog.remove(2001)
dog

a.count(arg)
Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ этого элСмСнта Π² спискС.

dog.count('Freddie')

a.clear()
УдаляСт всС элСмСнты списка. По сути, ΠΎΠ½ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡƒΠ΄Π°Π»ΠΈΡ‚ Freddie. Но Π½Π΅ стоит Π²ΠΎΠ»Π½ΠΎΠ²Π°Ρ‚ΡŒΡΡ, ΠΏΠΎΡ‚ΠΎΠΌ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ.

dog.clear()
dog

Бписок всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Python ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ здСсь: https://docs.python.org/3/tutorial/datastructures.html

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Python для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со словарями

Как ΠΈ Π² случаС со списками, Π΅ΡΡ‚ΡŒ Π½Π°Π±ΠΎΡ€ Π²Π°ΠΆΠ½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со словарями, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ.

И снова Freddie:

dog_dict = {'name': 'Freddie',
'age': 9,
'is_vaccinated': True,
'height': 1.1,
'birth_year': 2001,
'belongings': ['bone', 'little ball']}

dog_dict.keys()
Π’Π΅Ρ€Π½Π΅Ρ‚ всС ΠΊΠ»ΡŽΡ‡ΠΈ словаря.

dog_dict.values()
Π’Π΅Ρ€Π½Π΅Ρ‚ всС значСния словаря.

dog_dict.clear()
Π£Π΄Π°Π»ΠΈΡ‚ всС ΠΈΠ· словаря.

Для добавлСния элСмСнта Π² ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄; достаточно просто ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Ρƒ ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

dog_dict['key'] = 'value'
dog_dict['name'] = 'Freddie'

Π­Ρ‚ΠΎ всС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½Π° сСгодня.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ сСбя

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

  1. Π•ΡΡ‚ΡŒ список: test_yourself = [1, 1, 2, 2, 3, 3, 3, 3, 4, 5, 5]
  2. ΠŸΠΎΡΡ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ срСднСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ элСмСнтов списка, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ знания, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ ΠΈΠ· ΠΏΡ€ΠΎΡˆΠ»Ρ‹Ρ… частСй руководства.
  3. ΠŸΠΎΡΡ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΌΠ΅Π΄ΠΈΠ°Π½Ρƒ, слСдуя Ρ‚Π΅ΠΌ ΠΆΠ΅ условиям.

.

.

.

.

.

.

РСшСниС

sum(test_yourself) / len(test_yourself)

sum() суммируСт значСния элСмСнтов, Π° len() подсчитываСт ΠΈΡ… количСство. Если ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒ ΠΎΠ΄Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠ΅, Ρ‚ΠΎ Π²Ρ‹ΠΉΠ΄Π΅Ρ‚ срСднСС. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: 2.909090

test_yourself[round(len(test_yourself) / 2) - 1]

ПовСзло, Ρ‡Ρ‚ΠΎ Π² спискС Π½Π΅Ρ‡Π΅Ρ‚Π½ΠΎΠ΅ количСство элСмСнтов.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: эта Ρ„ΠΎΡ€ΠΌΡƒΠ»Π° Π½Π΅ сработаСт, Ссли элСмСнтов Π±ΡƒΠ΄Π΅Ρ‚ Ρ‡Π΅Ρ‚Π½ΠΎΠ΅ количСство.

len(test_yourself) / 2 подскаТСт, Π³Π΄Π΅ Π² спискС ΠΈΡΠΊΠ°Ρ‚ΡŒ срСднСС число β€” это ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠ΅Π΄ΠΈΠ°Π½Π°. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π²Π΅Π½ 5,5, Π½ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ len() / 2 всСгда Π±ΡƒΠ΄Π΅Ρ‚ Π½Π° 0,5 мСньшС, Ρ‡Π΅ΠΌ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ΅ число, Ссли Π² спискС Π½Π΅Ρ‡Π΅Ρ‚Π½ΠΎΠ΅ количСство элСмСнтов (ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π° спискС с 3 ΠΈΠ»ΠΈ 5 элСмСнтами). ΠžΠΊΡ€ΡƒΠ³Π»ΠΈΠΌ 5,5 Π΄ΠΎ 6 с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ round(len(test_yourself) / 2). ВсС Π²Π΅Ρ€Π½ΠΎ β€” Π² Π΄Π°Π½Π½ΠΎΠΌ случаС Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ другая функция. Π—Π°Ρ‚Π΅ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Ρ‡Π΅ΡΡ‚ΡŒ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ индСксация начинаСтся с нуля: round(len(test_yourself) / 2) - 1.

Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² качСствС индСкса для поиска Π΅Π³ΠΎ Π² спискС: test_yourself[round(len(test_yourself) / 2 - 1]; ΠΈΠ»ΠΈ Π²Π·ΡΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ число: test_yourself[5]. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ β€” 3.

Π’ Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ функциями ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ Π² Python?

ПослС прочтСния этой ΡΡ‚Π°Ρ‚ΡŒΠΈ Ρƒ вас навСрняка появился вопрос: Β«Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ½Ρ‹ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Ссли ΠΎΠ½ΠΈ Π΄Π΅Π»Π°ΡŽΡ‚ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅?Β»

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

Π‘ΠΏΠ΅Ρ€Π²Π° ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎΠ΅. ΠžΡ‚Π»ΠΈΡ‡Π°Π΅Ρ‚ΡΡ синтаксис. Ѐункция выглядит Π²ΠΎΡ‚ Ρ‚Π°ΠΊ: function(something), Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ: something.method().

Π’Π°ΠΊ Π·Π°Ρ‡Π΅ΠΌ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½ΡƒΠΆΠ½Ρ‹ Π² Python? ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ Π΅ΡΡ‚ΡŒ нСбольшиС отличия. Π’Π°ΠΊ, ΠΌΠ΅Ρ‚ΠΎΠ΄ всСгда относится ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² dog.append(4) ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ append() Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ dog). Π’ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. Если Π΅Ρ‰Π΅ ΠΏΡ€ΠΎΡ‰Π΅, ΠΌΠ΅Ρ‚ΠΎΠ΄ β€” это опрСдСлСнная функция. ВсС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ β€” это Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½ΠΎ Π½Π΅ всС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ.

Если всС Ρ€Π°Π²Π½ΠΎ Π½Π΅ понятно, Π½ΠΎ стоит Π²ΠΎΠ»Π½ΠΎΠ²Π°Ρ‚ΡŒΡΡ. Работая с Python ΠΈ дальшС, Π²Ρ‹ Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ΡΡŒ Π² различиях, особСнно, ΠΊΠΎΠ³Π΄Π° Π½Π°Ρ‡Π½Π΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ собствСнныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π’ΠΎΡ‚ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ совСт: Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ β€” это ΠΊΠ°ΠΊ Π°Ρ€Ρ‚ΠΈΠΊΠ»ΠΈ (der, die, das) Π² Π½Π΅ΠΌΠ΅Ρ†ΠΊΠΎΠΌ языкС. НуТно просто Π²Ρ‹ΡƒΡ‡ΠΈΡ‚ΡŒ синтаксис ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… ΠΏΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ.

Как ΠΈ Π² Π½Π΅ΠΌΠ΅Ρ†ΠΊΠΎΠΌ, Π΅ΡΡ‚ΡŒ эмпиричСскиС ΠΏΡ€Π°Π²ΠΈΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠΌΠΎΡ‡ΡŒ. Π’Π°ΠΊ, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊ Ρ€Π°Π·Π½Ρ‹ΠΌ Ρ‚ΠΈΠΏΠ°ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ β€” Π½Π΅Ρ‚. НапримСр, sorted() β€” это функция, которая Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ со строками, списками, числами ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. ΠœΠ΅Ρ‚ΠΎΠ΄ upper() Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ со строками.

Но Π³Π»Π°Π²Π½Ρ‹ΠΉ совСт Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ½ΡΡ‚ΡŒ различия, Π° ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

Π˜Ρ‚ΠΎΠ³ΠΎ

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

Π”Π°Π»Π΅Π΅ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ с Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ ΠΈ инструкциями if.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ «ΠΌΠ΅Ρ‚ΠΎΠ΄» Π² Python?

ΠΌΠ΅Ρ‚ΠΎΠ΄ являСтся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ, которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ экзСмпляр класса Π² качСствС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π»Π΅Π½Π°ΠΌΠΈ класса.

class C:
    def method(self, possibly, other, arguments):
        pass # do something here

ΠΊΠ°ΠΊ Π²Ρ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ это ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π² Python, ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π°Ρ‚ΡŒ связанныС ΠΈ нСсвязанныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. Π’ Python всС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (ΠΈ ΠΊΠ°ΠΊ Ρ‚Π°ΠΊΠΎΠ²Ρ‹Π΅ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹) ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ «ΠΈΠ³Ρ€Π°Ρ‚ΡŒ». Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ нСсвязанными ΠΈ связанными ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ:

1) связанныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹

# Create an instance of C and call method()
instance = C()

print instance.method # prints '<bound method C.method of <__main__.C instance at 0x00FC50F8>>'
instance.method(1, 2, 3) # normal method call

f = instance.method
f(1, 2, 3) # method call without using the variable 'instance' explicitly

привязанныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹-это ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠ΅ экзСмплярам класса. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ instance.method привязан ΠΊ экзСмпляру с ΠΈΠΌΠ΅Π½Π΅ΠΌ instance. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° этот связанный ΠΌΠ΅Ρ‚ΠΎΠ΄ вызываСтся, экзСмпляр пСрСдаСтся ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ автоматичСски — ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ называСтся self ΠΏΠΎ ΠšΠΎΠ½Π²Π΅Π½Ρ†ΠΈΠΈ.

2) нСсвязанныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹

print C.method # prints '<unbound method C.method>'
instance = C()
C.method(instance, 1, 2, 3) # this call is the same as...
f = C.method
f(instance, 1, 2, 3) # ..this one...

instance.method(1, 2, 3) # and the same as calling the bound method as you would usually do

ΠΏΡ€ΠΈ доступС ΠΊ C.method (ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²Π½ΡƒΡ‚Ρ€ΠΈ класса, Π° Π½Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ экзСмпляра), Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ нСсвязанный ΠΌΠ΅Ρ‚ΠΎΠ΄. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ экзСмпляр ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ привязанныС ΠΊ Π»ΡŽΠ±ΠΎΠΌΡƒ экзСмпляру.

зная эту Ρ€Π°Π·Π½ΠΈΡ†Ρƒ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ / ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π² качСствС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° использования ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ API, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°, Π½ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² качСствС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°. НСт ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, просто ΠΏΡ€ΠΎΠΉΡ‚ΠΈ self.myCallbackMethod ΠΊΠ°ΠΊ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ², ΠΈ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ автоматичСски Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ с экзСмпляром Π² качСствС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°. Π­Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π² статикС языки, ΠΊΠ°ΠΊ C++ (ΠΈΠ»ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с Ρ…ΠΈΡ‚Ρ€ΠΎΡΡ‚ΡŒΡŽ).

надСюсь, Π²Ρ‹ поняли;) я Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ это всС, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π½Π°Ρ‚ΡŒ ΠΎΠ± основах ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ большС ΠΎ classmethod ΠΈ staticmethod Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Ρ‹, Π½ΠΎ это другая Ρ‚Π΅ΠΌΠ°.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ строк Π² Python

Π’ Python Ρƒ Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… Π΅ΡΡ‚ΡŒ свои ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ (Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ), спСцифичныС для этого Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…. И Ρ€Π°Π· ΡƒΠΆ Π½Π° ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ ΡƒΡ€ΠΎΠΊΠ΅ ΠΌΡ‹ Π½Π°Ρ‡Π°Π»ΠΈ Π·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ со строками, Ρ‚ΠΎ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ ΠΈ ΠΌΠΈΠΌΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² строк.


Π’Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π² Python


Для Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, прибавляСм Ρ‚ΠΎΡ‡ΠΊΡƒ ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ вызываСтся, пишСм само Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Π² скобочках Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹.




пСрСмСнная.ΠΌΠ΅Ρ‚ΠΎΠ΄(Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹)

Поиск подстроки Π² строкС Python


Для поиска подстроки Π² строкС Π² Python, Π΅ΡΡ‚ΡŒ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°:


  • find()
  • rfind()
  • index()
  • rindex()

ΠœΠ΅Ρ‚ΠΎΠ΄ find() ΠΈΡ‰Π΅Ρ‚ индСкс подстроки Π² строкС — Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠΌΠ΅Ρ€ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ символа ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ….




>>> s='Найти подстроку'

>>> s.find('ΠΈ')

4

Π’ случаС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… символов ΠΈΠ΄ΡƒΡ‰ΠΈΡ… подряд, Python Π²Π΅Ρ€Π½Π΅Ρ‚ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ начинаСтся ΠΏΠΎΠ»Π½ΠΎΠ΅ совпадСниС.




>>> s.find('ΠΏΠΎΠ΄')

6

ΠŸΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ подстрокС, вСрнСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ -1.




>>> s.find('ю')

-1

ΠœΠ΅Ρ‚ΠΎΠ΄ index() Ρ‚ΠΎΠΆΠ΅ ΠΈΡ‰Π΅Ρ‚ подстроку Π² строкС ΠΏΠΎ Π΅Ρ‘ индСксу, Π½ΠΎ Π² случаС поиска Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ подстроки Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΈ ΠΎΡ‚ find(), Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ ValueError.


ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ rfind() ΠΈ rindex() ΠΈΡ‰ΡƒΡ‚ подстроку с ΠΊΠΎΠ½Ρ†Π° строки — справа.




>>> s.rfind('Ρ‚')

10

Π—Π°ΠΌΠ΅Π½Π° символа Π² строкС


ΠœΠ΅Ρ‚ΠΎΠ΄ replace() замСняСт ΠΎΠ΄Π½ΠΈ символы Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅, Π³Π΄Π΅ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ. А Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ , Π½Π° Ρ‡Ρ‚ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ.




>>> s.replace('Ρ‚ΠΈ','**')

'Най** подстроку'

Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ символ ΠΈΠ· строки?


ΠŸΠ΅Ρ€Π΅Π΄Π°Π΄ΠΈΠΌ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ пустыС ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ.




>>> s.replace('ΠΏ','')

'Найти одстроку'

Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ Π² строкС?


ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΏΡ€ΠΎΠ±Π΅Π», Π° Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ — пустыС ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ.




>>> s.replace(' ','')

'Найтиподстроку'

Π Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ строку Π² Python


По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ split() раздСляСт строку ΠΏΠΎ ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌ ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ строку Π² список. Π’ ΠΈΡ‚ΠΎΠ³Π΅ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ список ΠΈΠ· Ρ‚Ρ€Π΅Ρ… элСмСнтов.




>>> h='Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ строку ΠΏΠΈΡ‚ΠΎΠ½'

>>> h.split()

['Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ', 'строку', 'ΠΏΠΈΡ‚ΠΎΠ½']

Π Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ строку ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎ Π»ΡŽΠ±ΠΎΠΌΡƒ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ символу, для этого ΠΏΠ΅Ρ€Π΅Π΄Π°Π΄ΠΈΠΌ Π½ΡƒΠΆΠ½Ρ‹ΠΉ символ Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ…. ΠŸΡ€ΠΈ этом, сам символ удаляСтся ΠΈΠ· списка.




# ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1 - Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠΎ Ρ‚ΠΈΡ€Π΅ "-"

>>> p='ΠΏΠΈΡ‚ΠΎΠ½-1 ΠΏΠΈΡ‚ΠΎΠ½-2'

>>> p.split('-')

['ΠΏΠΈΡ‚ΠΎΠ½', '1 ΠΏΠΈΡ‚ΠΎΠ½', '2']

# ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2 - Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠΎ Π±ΡƒΠΊΠ²Π΅ "t"

>>> c='method split in python'

>>> c.split('t')

['me', 'hod spli', ' in py', 'hon']


ΠžΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ строки Π² Python


НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ join() являСтся Π½Π΅ строковым ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ. ΠœΡ‹ всС Ρ€Π°Π²Π½ΠΎ Π΅Π³ΠΎ ΠΈΠ·ΡƒΡ‡ΠΈΠΌ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡƒΡ€ΠΎΠΊΠ°. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ join() Π² Python выполняСт ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° split(). Π‘Π΅Ρ€Π΅Ρ‚ элСмСнты списка ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ список Π² строку. Имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΡΡΡ‹Π»Π°ΡŽΡ‰Π΅ΠΉΡΡ Π½Π° список строк — СдинствСнный ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° join(). ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ, ΠΌΡ‹ ΡƒΠΊΠ°Π·Π°Π»ΠΈ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ — пустыС ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ.




>>> a=['1', '2', '3', '4', '5']

>>> ''.join(a)

'12345'

# Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ ΠΏΡ€ΠΎΠ±Π΅Π»

>>> ' '.join(a)

'1 2 3 4 5'

# Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ запятая

>>> ','.join(a)

'1,2,3,4,5'


ΠœΠ΅Ρ‚ΠΎΠ΄ join() Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с числовыми Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ запись ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ошибкС.




a=[6, 7, 8]

' '.join(a)

ΠŸΠ΅Ρ€Π΅Π΄ использованиСм ΠΌΠ΅Ρ‚ΠΎΠ΄Π° join(), слСдуСт числа привСсти ΠΊ строкам.




>>> e=['9', '10']

>>> ' '.join(e)

'9 10'

Π’Π΅Ρ€Ρ…Π½ΠΈΠΉ рСгистр строки Π² Python


ΠœΠ΅Ρ‚ΠΎΠ΄ upper() ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ всС Π±ΡƒΠΊΠ²Ρ‹ строки ΠΊ Π²Π΅Ρ€Ρ…Π½Π΅ΠΌΡƒ рСгистру, Π½Π΅ мСняя ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… символов.




>>> w='Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ рСгистр'

>>> w.upper()

'Π’Π•Π Π₯ΠΠ˜Π™ Π Π•Π“Π˜Π‘Π’Π '

НиТний рСгистр строки Π² Python


ΠœΠ΅Ρ‚ΠΎΠ΄ lower() ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ всС Π±ΡƒΠΊΠ²Ρ‹ строки ΠΊ Π½ΠΈΠΆΠ½Π΅ΠΌΡƒ рСгистру.




>>> r='ΠΠ˜Π–ΠΠ˜Π™ Π Π•Π“Π˜Π‘Π’Π '

>>> r.lower()

'Π½ΠΈΠΆΠ½ΠΈΠΉ рСгистр'

ΠŸΠΎΠ΄ΡΡ‡Π΅Ρ‚ количСства символов


ΠœΠ΅Ρ‚ΠΎΠ΄ count() считаСт, сколько Ρ€Π°Π· встрСчаСтся подстрока Π² строкС, указанная Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ….




>>> y="ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ количСство слов"

>>> y.count('ΠΎ')

3

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° символов Π² строкС


ΠœΠ΅Ρ‚ΠΎΠ΄ isalpha() провСряСт, состоит Π»ΠΈ строка Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· Π±ΡƒΠΊΠ² ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ истину ΠΈΠ»ΠΈ лоТь.




>>> i='Ρ‚ΠΎΠ»ΡŒΠΊΠΎΠ±ΡƒΠΊΠ²Ρ‹'

>>> i.isalpha()

True

ΠœΠ΅Ρ‚ΠΎΠ΄ isdigit() провСряСт, состоит Π»ΠΈ строка Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· Ρ†ΠΈΡ„Ρ€ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ истину ΠΈΠ»ΠΈ лоТь.




>>> f='23456hbbn'

>>> f.isdigit()

False


  • Π‘ΠΎΠ·Π΄Π°Π½ΠΎ 30.10.2019 10:53:26



  • ΠœΠΈΡ…Π°ΠΈΠ» Русаков

ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Π°Π²Ρ‚ΠΎΡ€Π° (ΠœΠΈΡ…Π°ΠΈΠ» Русаков) ΠΈ индСксируСмой прямой ссылкой Π½Π° сайт (http://myrusakov.ru)!

Π”ΠΎΠ±Π°Π²Π»ΡΠΉΡ‚Π΅ΡΡŒ ΠΊΠΎ ΠΌΠ½Π΅ Π² Π΄Ρ€ΡƒΠ·ΡŒΡ Π’ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅: http://vk.com/myrusakov.
Если Π’Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π΄Π°Ρ‚ΡŒ ΠΎΡ†Π΅Π½ΠΊΡƒ ΠΌΠ½Π΅ ΠΈ ΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅, Ρ‚ΠΎ Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ Π΅Ρ‘ Π² ΠΌΠΎΠ΅ΠΉ Π³Ρ€ΡƒΠΏΠΏΠ΅: http://vk.com/rusakovmy.

Если Π’Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ Π½Π° сайтС,
Ρ‚ΠΎ Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ Π½Π° обновлСния: ΠŸΠΎΠ΄ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ Π½Π° обновлСния

Если Ρƒ Вас ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ вопросы, Π»ΠΈΠ±ΠΎ Ρƒ Вас Π΅ΡΡ‚ΡŒ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ Π²Ρ‹ΡΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρƒ этой ΡΡ‚Π°Ρ‚ΡŒΠΈ, Ρ‚ΠΎ Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ свой ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π²Π½ΠΈΠ·Ρƒ страницы.

Если Π’Π°ΠΌ понравился сайт, Ρ‚ΠΎ размСститС ссылку Π½Π° Π½Π΅Π³ΠΎ (Ρƒ сСбя Π½Π° сайтС, Π½Π° Ρ„ΠΎΡ€ΡƒΠΌΠ΅, Π² ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅):

Python 3 #8: ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ строк

Как ΠΌΡ‹ ΡƒΠΆΠ΅
Π½Π΅ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ, Π² Python строки ΡΠ²Π»ΡΡŽΡ‚ΡΡ
ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ ΠΈ Ρƒ этих ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π΅ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠ΅
ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ дСйствия:

строка.имя_ΠΌΠ΅Ρ‚ΠΎΠ΄Π°(Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹)

Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°,
ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρƒ нас имССтся такая, ΡƒΠΆΠ΅ классичСская строка:

ΠΈ ΠΌΡ‹ собираСмся
для Π½Π΅Π΅ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄

String.upper()

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

Π’ΠΎΡ‚ ΠΏΠΎ Ρ‚Π°ΠΊΠΎΠΌΡƒ
синтаксису Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ строк. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ, сама пСрСмСнная string ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚
ссылаСтся Π½Π° Ρ‚Ρƒ ΠΆΠ΅ ΡΠ°ΠΌΡƒΡŽ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΡƒΡŽ строку Β«Hello World!Β». Как ΠΌΡ‹ с Π²Π°ΠΌΠΈ
Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ занятии, строки – это нСизмСняСмыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, поэтому
ΠΌΠ΅Ρ‚ΠΎΠ΄ upper Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚
Π½ΠΎΠ²ΡƒΡŽ строку с Π·Π°Π³Π»Π°Π²Π½Ρ‹ΠΌΠΈ Π±ΡƒΠΊΠ²Π°ΠΌΠΈ, Π½Π΅ мСняя ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΉ.

Если Π±Ρ‹ Π½Π°ΠΌ
ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ строку, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ссылаСтся пСрСмСнная string, Ρ‚ΠΎ это ΠΌΠΎΠΆΠ½ΠΎ
ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

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

Π’Π°ΠΊΠΆΠ΅ этот ΠΌΠ΅Ρ‚ΠΎΠ΄
ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ нСпосрСдствСнно Ρƒ строкового Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π°:

Π’Π°ΠΊ Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ
Π΄Π΅Π»Π°Ρ‚ΡŒ.

Ну ΠΈ Ρ€Π°Π· ΡƒΠΆ ΠΌΡ‹
Π·Π°Ρ‚Ρ€ΠΎΠ½ΡƒΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ upper, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ Π±ΡƒΠΊΠ²Ρ‹ Π² Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ
рСгистр, Ρ‚ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½Ρ‹ΠΉ Π΅ΠΌΡƒ ΠΌΠ΅Ρ‚ΠΎΠ΄:

String.lower()

ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ,
Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ всС Π±ΡƒΠΊΠ²Ρ‹ Π² строчныС. НапримСр:

Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚
строку Β«hello world!Β». БоотвСтствСнно, сама строка здСсь остаСтся ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΉ,
ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹ΠΌ являСтся Π½ΠΎΠ²Ρ‹ΠΉ строковый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ lower. По Ρ‚Π°ΠΊΠΎΠΌΡƒ
ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ всС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ строк. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄

String.count(sub[,
start[, end]])

Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ число
ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΉ подстроки sub Π² строкС String. Π”Π²Π°
Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°:


  • start – индСкс, с
    ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ начинаСтся поиск;

  • end – индСкс,
    ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ заканчиваСтся поиск.

Π’ самом простом
случаС, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ для строки

ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ число
ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΉ сочСтаний Β«raΒ»:

ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
2 – ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ данная подстрока встрСчаСтся Π² нашСй строкС.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ
ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ поиск с Π±ΡƒΠΊΠ²Ρ‹ k, ΠΈΠΌΠ΅ΡŽΡ‰Π΅ΠΉ индСкс
4.

Π’ΠΎΠ³Π΄Π° ΠΌΠ΅Ρ‚ΠΎΠ΄
слСдуСт Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ start=4:

ΠΈ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ
Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1. Π”Π°Π»Π΅Π΅, ΡƒΠΊΠ°ΠΆΠ΅ΠΌ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ – индСкс, Π΄ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚
ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒΡΡ поиск. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π΄ΠΎΠΉΡ‚ΠΈ Π΄ΠΎ 10-Π³ΠΎ индСкса ΠΈ
записываСм:

ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ
Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0. ΠŸΠΎΡ‡Π΅ΠΌΡƒ? Π’Π΅Π΄ΡŒ Π½Π° индСксах 9 ΠΈ 10 ΠΊΠ°ΠΊ Ρ€Π°Π· ΠΈΠ΄Π΅Ρ‚ подстрока Β«raΒ»? Но здСсь,
Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ Π² срСзах, послСдний индСкс ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΈΠ· рассмотрСния. Π’ΠΎ Π΅ΡΡ‚ΡŒ, ΠΌΡ‹
Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠΉΡ‚ΠΈ Π΄ΠΎ 10-Π³ΠΎ, Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π΅Π³ΠΎ. А Π²ΠΎΡ‚ Ссли запишСм 11:

Ρ‚ΠΎ послСднСС
Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ найдСтся.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄

String.find(sub[,
start[, end]])

Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚
индСкс ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ вхоТдСния подстроки sub Π² строкС String. А Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ start ΠΈ end Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Ρ‚Π°ΠΊΠΆΠ΅
ΠΊΠ°ΠΊ ΠΈ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ count. НапримСр:

Π²Π΅Ρ€Π½Π΅Ρ‚ 1,
Ρ‚.ΠΊ. ΠΏΠ΅Ρ€Π²ΠΎΠ΅ Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ Β«brΒ» ΠΊΠ°ΠΊ Ρ€Π°Π· начинаСтся с индСкса 1. ΠŸΠΎΡΡ‚Π°Π²ΠΈΠΌ
Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ start=2:

ΠΈ поиск начнСтся
ΡƒΠΆΠ΅ со Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ индСкса. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 8 – индСкс ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ вхоТдСния
подстроки Β«brΒ». Если ΠΌΡ‹
ΡƒΠΊΠ°ΠΆΠ΅ΠΌ подстроку, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π΅Ρ‚ Π² нашСй строкС:

Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ find Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ -1. Π’Ρ€Π΅Ρ‚ΠΈΠΉ
Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ end опрСдСляСт
индСкс Π΄ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ осущСствляСтся поиск ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ count.

ΠœΠ΅Ρ‚ΠΎΠ΄ find ΠΈΡ‰Π΅Ρ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ΅
Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ слСва-Π½Π°ΠΏΡ€Π°Π²ΠΎ. Если трСбуСтся Π΄Π΅Π»Π°Ρ‚ΡŒ поиск Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ:
справа-Π½Π°Π»Π΅Π²ΠΎ, Ρ‚ΠΎ для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄

String.rfind(sub[,
start[, end]])

ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎ всСм
ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ find. НапримСр:

Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚ 8 –
ΠΏΠ΅Ρ€Π²ΠΎΠ΅ Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ справа.

НаконСц, Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ
ΠΌΠ΅Ρ‚ΠΎΠ΄, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ find – это:

String.index(sub[,
start[, end]])

Он Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚
Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ find, Π½ΠΎ с ΠΎΠ΄Π½ΠΈΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ΠΌ: Ссли указанная подстрока sub Π½Π΅ находится Π²
строкС String, Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄
ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ошибкС:

Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ find Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ -1.
Π‘ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ΡΡ: Π·Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ΅Π½ Ρ‚Π°ΠΊΠΎΠΉ ΡƒΡ‰Π΅Ρ€Π±Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ index? Π’
Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ‚Π°ΠΊΠΈΠ΅ ошибки ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈ это Π±Ρ‹Π²Π°Π΅Ρ‚
ΠΏΠΎΠ»Π΅Π·Π½ΠΎ для сохранСния Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹: ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹Π΅ ситуации
ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π΅Π΄ΠΈΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π² Π±Π»ΠΎΠΊΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ. Но, ΠΎΠ±ΠΎ всСм этом Ρ€Π΅Ρ‡ΡŒ ΠΏΠΎΠΉΠ΄Π΅Ρ‚
ΠΏΠΎΠ·ΠΆΠ΅.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄

String.replace(old,
new, count=-1)

ВыполняСт Π·Π°ΠΌΠ΅Π½Ρƒ
подстрок old Π½Π° строку new ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚
ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΡƒΡŽ строку. НапримСр, Π² нашСй строкС, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ всС Π±ΡƒΠΊΠ²Ρ‹ a Π½Π° o:

Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅
ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ строку Β«obrokodobroΒ». Или, Ρ‚Π°ΠΊ:

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ этот
ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ², Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Π°ΠΊ:

Π’Ρ€Π΅Ρ‚ΠΈΠΉ
Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π·Π°Π΄Π°Π΅Ρ‚ максимальноС количСство Π·Π°ΠΌΠ΅Π½. НапримСр:

Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ
ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π΅ Π±ΡƒΠΊΠ²Ρ‹ a: Β«msg.replace(«a», ‘o’, 2)Β». ΠŸΡ€ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ
-1 количСство Π·Π°ΠΌΠ΅Π½ Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎ.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹
ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ: ΠΈΠ· ΠΊΠ°ΠΊΠΈΡ… символов состоит наша строка. НапримСр, ΠΌΠ΅Ρ‚ΠΎΠ΄

String.isalpha()

Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ True, Ссли строка
Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ состоит ΠΈΠ· Π±ΡƒΠΊΠ² ΠΈ False Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ ΠΊΠ°ΠΊ ΠΎΠ½
Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚:

Π²Π΅Ρ€Π½Π΅Ρ‚ True, Ρ‚.ΠΊ. наша
строка содСрТит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±ΡƒΠΊΠ²Π΅Π½Π½Ρ‹Π΅ символы. А Π²ΠΎΡ‚ для Ρ‚Π°ΠΊΠΎΠΉ строки:

ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ False, Ρ‚.ΠΊ. имССтся
символ ΠΏΡ€ΠΎΠ±Π΅Π»Π°.

ΠŸΠΎΡ…ΠΎΠΆΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄

String.isdigit()

Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ True, Ссли строка
Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ состоит ΠΈΠ· Ρ†ΠΈΡ„Ρ€ ΠΈ False Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС. НапримСр:

Ρ‚.ΠΊ. имССтся
символ Ρ‚ΠΎΡ‡ΠΊΠΈ, Π° Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
True. Вакая ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°
ΠΏΠΎΠ»Π΅Π·Π½Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ строки Π² Ρ†Π΅Π»ΠΎΠ΅ число:

dig = input("Π’Π²Π΅Π΄ΠΈΡ‚Π΅ число: ")
if(dig.isdigit()):
Β Β Β dig = int(dig)
Β Β Β  print(dig)
else:
Β Β Β print("Число Π²Π²Π΅Π΄Π΅Π½ΠΎ Π½Π΅Π²Π΅Ρ€Π½ΠΎ")

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄

String.rjust(width[, fillchar = β€˜ β€˜])

Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠ²ΡƒΡŽ
строку с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ числом символов width ΠΈ ΠΏΡ€ΠΈ
нСобходимости слСва добавляСт символы fillchar:

ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ строку
«  abcΒ» с двумя
Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹ΠΌΠΈ слСва ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ. А сама исходная строка ΠΊΠ°ΠΊ Π±Ρ‹ приТимаСтся ΠΊ
ΠΏΡ€Π°Π²ΠΎΠΌΡƒ ΠΊΡ€Π°ΡŽ. Или, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠΌ строку Β«—abcΒ». ΠŸΡ€ΠΈΡ‡Π΅ΠΌ Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ
Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ символ. Если Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ нСсколько, Ρ‚ΠΎ
Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ошибка:

Если ΡˆΠΈΡ€ΠΈΠ½Π° width Π±ΡƒΠ΄Π΅Ρ‚ мСньшС
Π΄Π»ΠΈΠ½Ρ‹ строки:

Ρ‚ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅
измСнится. Аналогично Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄

String.ljust(width[, fillchar = β€˜ β€˜])

ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ
Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠ²ΡƒΡŽ строку с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ числом символов width, Π½ΠΎ добавляСт
символы fillchar ΡƒΠΆΠ΅ справа:

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄

String.split(sep=None,
maxsplit=-1)

Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚
ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ строк, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ разбиваСтся исходная строка String. Π Π°Π·Π±ΠΈΠ²ΠΊΠ°
осущСствляСтся ΠΏΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ сСпаратору sep. НапримСр:

"Иванов Иван Π˜Π²Π°Π½ΠΎΠ²ΠΈΡ‡".split(" ")

ΠœΡ‹ здСсь
Ρ€Π°Π·Π±ΠΈΠ²Π°Π΅ΠΌ строку ΠΏΠΎ ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌ. ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ ΠΈΠ· ЀИО. Π’ΠΎΡ‚ ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚
ΠΈ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π±Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΠ½ Ρ€Π°Π·Π±ΠΈΠ²Π°Π΅Ρ‚ строку
ΠΏΠΎ ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌ:

"Иванов Иван Π˜Π²Π°Π½ΠΎΠ²ΠΈΡ‡".split()

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ
ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°ΠΌΠΈ такая Π·Π°Π΄Π°Ρ‡Π°: ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ список Ρ†ΠΈΡ„Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ записаны
Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ, послС запятой ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π΅Π», Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈ Π½Π΅ Π±Ρ‹Ρ‚ΡŒ.
ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

digs = "1, 2,3, 4,5,6"
digs.replace(" ", "").split(",")

ΠΌΡ‹ сначала
ΡƒΠ±ΠΈΡ€Π°Π΅ΠΌ всС ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΈ для ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΉ строки Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ split, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ
список Ρ†ΠΈΡ„Ρ€.

ΠžΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄

String.join(список)

Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚
строку ΠΈΠ· ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Π½Ρ‹Ρ… элСмСнтов списка, ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ String. НапримСр:

d = digs.replace(" ", "").split(",")
", ".join(d)

ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ строку
Β«1, 2, 3, 4, 5, 6Β». Или Ρ‚Π°ΠΊ, ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π±Ρ‹Π»Π° строка:

fio = "Иванов Иван Π˜Π²Π°Π½ΠΎΠ²ΠΈΡ‡"

ΠΈ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ здСсь
вмСсто ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ² ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ запятыС:

fio2 = ",".join(fio.split())

Π’Π΅ΠΏΠ΅Ρ€ΡŒ fio2 ссылаСтся Π½Π°
строку с запятыми «Иванов,Иван,Π˜Π²Π°Π½ΠΎΠ²ΠΈΡ‡Β».

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄

String.strip()

удаляСт ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹
ΠΈ пСрСносы строк Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΈ ΠΊΠΎΠ½Ρ†Π΅ строки. НапримСр:

"Β Β Β hello worldΒ Β Β Β Β Β Β Β  \n".strip()

Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚
строку Β«hello worldΒ». АналогичныС
ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹:

String.rtrip()
ΠΈ String.ltrip()

ΡƒΠ΄Π°Π»ΡΡŽΡ‚ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹
ΠΈ пСрСносы строк Ρ‚ΠΎΠ»ΡŒΠΊΠΎ справа ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ слСва.

Π’ΠΎΡ‚ Ρ‚Π°ΠΊΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹
строк ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π² Python. Для наглядности Π½ΠΈΠΆΠ΅ ΠΎΠ½ΠΈ прСдставлСны
Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅:


















НазваниС

ОписаниС

String.upper()

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚
строку с Π·Π°Π³Π»Π°Π²Π½Ρ‹ΠΌΠΈ Π±ΡƒΠΊΠ²Π°ΠΌΠΈ

String.lower()

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚
строку с ΠΌΠ°Π»Ρ‹ΠΌΠΈ Π±ΡƒΠΊΠ²Π°ΠΌΠΈ

String.count(sub[, start[, end]])

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚
число Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΉ подстроки Π² строкС

String.find(sub[, start[, end]])

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚
индСкс ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ вхоТдСния

String.rfind(sub[,
start[, end]])

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚
индСкс ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ вхоТдСния ΠΏΡ€ΠΈ поискС справа

String.index(sub[,
start[, end]])

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚
индСкс ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ вхоТдСния

String.replace(old,
new, count=-1)

ЗамСняСт
подстроку old Π½Π° new

String.isalpha()

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚:
состоит Π»ΠΈ строка Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ ΠΈΠ· Π±ΡƒΠΊΠ²Π΅Π½Π½Ρ‹Ρ… символов

String.isdigit()

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚:
состоит Π»ΠΈ строка Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ ΠΈΠ· Ρ†ΠΈΡ„Ρ€

String.rjust(width[,
fillchar = β€˜ β€˜])

Π Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚
строку, добавляя символы слСва

String.ljust(width[,
fillchar = β€˜ β€˜])

Π Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚
строку, добавляя символы справа

String.split(sep=None,
maxsplit=-1)

Π Π°Π·Π±ΠΈΠ²Π°Π΅Ρ‚
строку Π½Π° подстроки

String.join(список)

ΠžΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚
ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ Π² строку

String.strip()

УдаляСт
ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΈ пСрСносы строк справа ΠΈ слСва

String.rstrip()

УдаляСт
ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΈ пСрСносы строк справа

String.ltrip()

УдаляСт
ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΈ пСрСносы строк слСва

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

1. ΠΠ°ΠΏΠΈΡΠ°Ρ‚ΡŒ
ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ коррСктности Π²Π²ΠΎΠ΄Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π½ΠΎΠ³ΠΎ Π½ΠΎΠΌΠ΅Ρ€Π° ΠΏΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ:

x(xxx)xxxxxx

Π³Π΄Π΅ x – любая Ρ†ΠΈΡ„Ρ€Π° ΠΎΡ‚
0 Π΄ΠΎ 9. Π”Π°Π½Π½Ρ‹Π΅ прСдставлСны Π² Π²ΠΈΠ΄Π΅ строки.

2. ΠΠ°ΠΏΠΈΡΠ°Ρ‚ΡŒ
ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ измСнСния строки

«2+3+6.7 +
82 + 5.7 +1″

Π½Π° строку, Π²
ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ всС Β«+Β» Π·Π°ΠΌΠ΅Π½Π΅Π½Ρ‹ Π½Π° Β«-Β» ΠΈ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹ всС ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹

3. ΠΠ°ΠΏΠΈΡΠ°Ρ‚ΡŒ
ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π²Ρ‹Π²ΠΎΠ΄Π° чисСл 0; -100; 5.6; -3 Π² Π²ΠΈΠ΄Π΅ столбца:


	0
	-100
	5.6
	-3

Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ всС
строки Π²Ρ‹Ρ€ΠΎΠ²Π½Π΅Π½Ρ‹ ΠΏΠΎ ΠΏΡ€Π°Π²ΠΎΠΌΡƒ ΠΊΡ€Π°ΡŽ (подсказка: Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ rjust).

4. Π’ строкС «abrakadabra» Π½Π°ΠΉΠ΄ΠΈΡ‚Π΅ всС
индСксы подстроки Β«raΒ» ΠΈ Π²Ρ‹Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΈΡ… (индСксы) Π² консоль.

Python | ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ строк

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ строк

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

Рассмотрим основныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ строк, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π² прилоТСниях:

  • isalpha(): Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ True, Ссли строка состоит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· Π°Π»Ρ„Π°Π²ΠΈΡ‚Π½Ρ‹Ρ… символов

  • islower(): Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ True, Ссли строка состоит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· символов Π² Π½ΠΈΠΆΠ½Π΅ΠΌ рСгистрС

  • isupper(): Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ True, Ссли всС символы строки Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ рСгистрС

  • isdigit(): Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ True, Ссли всС символы строки — Ρ†ΠΈΡ„Ρ€Ρ‹

  • isnumeric(): Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ True, Ссли строка прСдставляСт собой число

  • startswith(str): Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ True, Ссли строка начинаСтся с подстроки str

  • endswith(str): Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ True, Ссли строка заканчиваСтся Π½Π° подстроку str

  • lower(): ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ строку Π² Π½ΠΈΠΆΠ½ΠΈΠΉ рСгистр

  • upper(): ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ строку Π² Π²Π΅Ρ…Π½ΠΈΠΉ рСгистр

  • title(): Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ символы всСх слов Π² строкС пСрСводятся Π² Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ рСгистр

  • capitalize(): ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ Π² Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ рСгистр ΠΏΠ΅Ρ€Π²ΡƒΡŽ Π±ΡƒΠΊΠ²Ρƒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ самого ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ слова строки

  • lstrip(): удаляСт Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΈΠ· строки

  • rstrip(): удаляСт ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΈΠ· строки

  • strip(): удаляСт Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΈΠ· строки

  • ljust(width): Ссли Π΄Π»ΠΈΠ½Π° строки мСньшС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° width, Ρ‚ΠΎ справа ΠΎΡ‚ строки Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ width,
    Π° сама строка выравниваСтся ΠΏΠΎ Π»Π΅Π²ΠΎΠΌΡƒ ΠΊΡ€Π°ΡŽ

  • rjust(width): Ссли Π΄Π»ΠΈΠ½Π° строки мСньшС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° width, Ρ‚ΠΎ слСва ΠΎΡ‚ строки Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ width,
    Π° сама строка выравниваСтся ΠΏΠΎ ΠΏΡ€Π°Π²ΠΎΠΌΡƒ ΠΊΡ€Π°ΡŽ

  • center(width): Ссли Π΄Π»ΠΈΠ½Π° строки мСньшС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° width, Ρ‚ΠΎ слСва ΠΈ справа ΠΎΡ‚ строки Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹,
    Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ width, Π° сама строка выравниваСтся ΠΏΠΎ Ρ†Π΅Π½Ρ‚Ρ€Ρƒ

  • find(str[, start [, end]): Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ индСкс подстроки Π² строкС. Если подстрока Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Π°, возвращаСтся число -1

  • replace(old, new[, num]): замСняСт Π² строкС ΠΎΠ΄Π½Ρƒ подстроку Π½Π° Π΄Ρ€ΡƒΠ³ΡƒΡŽ

  • split([delimeter[, num]]): Ρ€Π°Π·Π±ΠΈΠ²Π°Π΅Ρ‚ строку Π½Π° подстроки Π² зависимости ΠΎΡ‚ раздСлитСля

  • join(strs): ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ строки Π² ΠΎΠ΄Π½Ρƒ строку, вставляя ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ

НапримСр, Ссли ΠΌΡ‹ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌ Π²Π²ΠΎΠ΄ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ числа, Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠΉ строки Π² число ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° isnumeric() Π²Π²Π΅Π΄Π΅Π½ΠΎ Π»ΠΈ Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ число,
ΠΈ Ссли Ρ‚Π°ΠΊ, Ρ‚ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ прСобразования:


string = input("Π’Π²Π΅Π΄ΠΈΡ‚Π΅ число: ")
if string.isnumeric():
    number = int(string)
    print(number)

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°, начинаСтся ΠΈΠ»ΠΈ оканчиваСтся строка Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ подстроку:


file_name = "hello.py"

starts_with_hello = file_name.startswith("hello")   # True
ends_with_exe = file_name.endswith("exe")           # False

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ² Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΈ Π² ΠΊΠΎΠ½Ρ†Π΅ строки:


string = "   hello  world!  "
string = string.strip()
print(string)           # hello  world!

Π”ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ строки ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ ΠΈ Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅:


print("iPhone 7:", "52000".rjust(10))
print("Huawei P10:", "36000".rjust(10))

ΠšΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄:


iPhone 7:      52000
Huawei P10:      36000

Поиск Π² строкС

Для поиска подстроки Π² строкС Π² Python примСняСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ find(), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ индСкс ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ вхоТдСния подстроки Π² строку ΠΈ
ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Ρ€ΠΈ Ρ„ΠΎΡ€ΠΌΡ‹:

  • find(str): поиск подстроки str вСдСтся с Π½Π°Ρ‡Π°Π»Π° строки Π΄ΠΎ Π΅Π΅ ΠΊΠΎΠ½Ρ†Π°

  • find(str, start): ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ start Π·Π°Π΄Π°Π΅Ρ‚ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ индСкс, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ поиск

  • find(str, start, end): ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ end Π·Π°Π΄Π°Π΅Ρ‚ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ индСкс, Π΄ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ΄Ρ‚ΠΈ поиск

Если подстрока Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Π°, ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ -1:


welcome = "Hello world! Goodbye world!"
index = welcome.find("wor")
print(index)       # 6

# поиск с 10-го индСкса
index = welcome.find("wor",10)
print(index)       # 21

# поиск с 10 по 15 индСкс
index = welcome.find("wor",10,15)
print(index)       # -1

Π—Π°ΠΌΠ΅Π½Π° Π² строкС

Для Π·Π°ΠΌΠ΅Π½Ρ‹ Π² строкС ΠΎΠ΄Π½ΠΎΠΉ подстроки Π½Π° Π΄Ρ€ΡƒΠ³ΡƒΡŽ примСняСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ replace():

  • replace(old, new): замСняСт подстроку old Π½Π° new

  • replace(old, new, num): ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ num ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, сколько Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΉ подстроки old Π½Π°Π΄ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π° new


phone = "+1-234-567-89-10"

# Π·Π°ΠΌΠ΅Π½Π° дСфисов Π½Π° ΠΏΡ€ΠΎΠ±Π΅Π»
edited_phone = phone.replace("-", " ")
print(edited_phone)     # +1 234 567 89 10

# ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ дСфисов
edited_phone = phone.replace("-", "")
print(edited_phone)     # +12345678910

# Π·Π°ΠΌΠ΅Π½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ дСфиса
edited_phone = phone.replace("-", "", 1)
print(edited_phone)     # +1234-567-89-10

Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° подстроки

ΠœΠ΅Ρ‚ΠΎΠ΄ split() Ρ€Π°Π·Π±ΠΈΠ²Π°Π΅Ρ‚ строку Π½Π° список подстрок Π² зависимости ΠΎΡ‚ раздСлитСля. Π’ качСствС раздСлитСля ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ любой символ ΠΈΠ»ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ символов.
Π”Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΠΎΡ€ΠΌΡ‹:

  • split(): Π² качСствС раздСлитСля ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΎΠ±Π΅Π»

  • split(delimeter): Π² качСствС раздСлитСля ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ delimeter

  • split(delimeter, num): ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ num ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, сколько Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΉ delimeter ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для раздСлСния. ΠžΡΡ‚Π°Π²ΡˆΠ°ΡΡΡ Ρ‡Π°ΡΡ‚ΡŒ строки добавляСтся
    Π² список Π±Π΅Π· раздСлСния Π½Π° подстроки


text = "Π­Ρ‚ΠΎ Π±Ρ‹Π» ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΉ, Π² Π΄Π²Π° ΠΎΠ±Ρ…Π²Π°Ρ‚Π° Π΄ΡƒΠ±, с ΠΎΠ±Π»ΠΎΠΌΠ°Π½Π½Ρ‹ΠΌΠΈ вСтвями ΠΈ с ΠΎΠ±Π»ΠΎΠΌΠ°Π½Π½ΠΎΠΉ ΠΊΠΎΡ€ΠΎΠΉ"
# Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌ
splitted_text = text.split()
print(splitted_text)
print(splitted_text[6])     # Π΄ΡƒΠ±,

# Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ ΠΏΠΎ запятым
splitted_text = text.split(",")
print(splitted_text)
print(splitted_text[1])     # Π² Π΄Π²Π° ΠΎΠ±Ρ…Π²Π°Ρ‚Π° Π΄ΡƒΠ±

# Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ пяти ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌ
splitted_text = text.split(" ", 5)
print(splitted_text)        
print(splitted_text[5])     # ΠΎΠ±Ρ…Π²Π°Ρ‚Π° Π΄ΡƒΠ±, с ΠΎΠ±Π»ΠΎΠΌΠ°Π½Π½Ρ‹ΠΌΠΈ вСтвями ΠΈ с ΠΎΠ±Π»ΠΎΠΌΠ°Π½Π½ΠΎΠΉ ΠΊΠΎΡ€ΠΎΠΉ

Π‘ΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ строк

ΠŸΡ€ΠΈ рассмотрСнии ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ со строками Π±Ρ‹Π»ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ строки с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ слоТСния. Π”Ρ€ΡƒΠ³ΡƒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ для соСдинСния
строк прСдставляСт ΠΌΠ΅Ρ‚ΠΎΠ΄ join(): ΠΎΠ½ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ список строк. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ тСкущая строка, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ вызываСтся Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² качСствС раздСлитСля:


words = ["Let", "me", "speak", "from", "my", "heart", "in", "English"]

# Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ - ΠΏΡ€ΠΎΠ±Π΅Π»
sentence = " ".join(words)
print(sentence)  # Let me speak from my heart in English

# Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ - Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Π°Ρ Ρ‡Π΅Ρ€Ρ‚Π°
sentence = " | ".join(words)
print(sentence)  # Let | me | speak | from | my | heart | in | English

ВмСсто списка Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ join ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ строку, Ρ‚ΠΎΠ³Π΄Π° Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ символами этой строки:


word = "hello"
joined_word = "|".join(word)
print(joined_word)      # h|e|l|l|o

Ρ‡Ρ‚ΠΎ, Π·Π°Ρ‡Π΅ΠΌ ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ? CODE BLOG

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

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ создадим класса n-ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ магичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠ³Π»Π°ΡΡƒΡŽΡ‚ΡΡ с Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π°Π΄ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ.

Подпишись Π½Π°Β Π³Ρ€ΡƒΠΏΠΏΡƒΒ Π’ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅Β ΠΈΒ Π’Π΅Π»Π΅Π³Ρ€Π°ΠΌ-ΠΊΠ°Π½Π°Π». Π’Π°ΠΌ Π΅Ρ‰Π΅ большС ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° для программистов.
А Π½Π°Β YouTube-ΠΊΠ°Π½Π°Π»Π΅Β Ρ‚Ρ‹ найдСшь ΠΎΠ±ΡƒΡ‡Π°ΡŽΡ‰ΠΈΠ΅ Π²ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ.Β ΠŸΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°ΠΉΡΡ!

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ экзСмпляра класса осущСствляСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² скобки, Π° ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ эти ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ магичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ __init__(). Объявим класс Vector ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ Ρ‚Π°ΠΌ этот ΠΌΠ΅Ρ‚ΠΎΠ΄:

class Vector(object):
    def init(self, *args):   
        if isinstance(args[0], int) or isinstance(args[0], float):
            self.__values = tuple(args)
        else:
            if len(args) != 1:
                 raise ValueError('...')

        self.__values = tuple(args[0])

    self.shape = len(self.__values)

Π’ описании ValueError ΡƒΠΊΠ°Π·Π°Π½ΠΎ Ρ‚Ρ€ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅ лишь ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»Π½ΠΎΠ΅ описаниС ошибки Π½Π΅ Π²Π»Π΅Π·Π΅Ρ‚ Π² Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π°. Π’ ΠΊΠΎΠ½Ρ†Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ Π±ΡƒΠ΄Π΅Ρ‚ оставлСна ссылка Π½Π° исходник, Π³Π΄Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΠ΅ описаниС ошибок.

Π’Π°ΠΊΠΎΠ΅ объявлСниС конструктора класса Π΄Π°Ρ‘Ρ‚ Π½Π°ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ экзСмпляр класса двумя способами:

v = Vector(1, 2, 3)
v = Vector([1, 2, 3])

ПолС shape создано для ΠΈΠΌΠΈΡ‚Π°Ρ†ΠΈΠΈ интСрфСйса NumPy, Π³Π΄Π΅ это ΠΏΠΎΠ»Π΅ присутствуСт Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ экзСмпляра класса numpy.ndarray.

ИспользованиС встроСнных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ нСсколько магичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ встроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.
ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… __len__(), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ функция lenβ€” Π²Ρ‹Π·ΠΎΠ² len(obj) эквивалСнтно конструкции obj.__len__().

def __len__(self):
    return self.shape

ΠŸΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΡƒΠ΅ΠΌ эту Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ:

>>> v.shape, len(v)
(3, 3)

Π”Π°Π»Π΅Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π΅Π³ΠΎ Π΄Π»ΠΈΠ½Ρƒ. Π€ΠΎΡ€ΠΌΡƒΠ»Ρƒ Π΄Π»ΠΈΠ½Ρ‹ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Ρƒ, Π΅Ρ‘ ΠΈ Ρ‚Π°ΠΊ всС Π·Π½Π°ΡŽΡ‚. Ѐункция abs() (Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΎΡ‚ Π°Π½Π³Π». absolute) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ магичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ __abs__(). Объявим этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² нашСм классС:

def __abs__(self):
    return sum(self**2)**0.5
>>> abs(v)
3.7416573867739413

Ѐункция sum() Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. РСализация ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° __iter__().

def __iter__(self):
    return iter(self.__values)

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования:

for el in v:
    print(el)

1
2
3

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ Π² строку ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰ΠΈΠΉ Π·Π° прСдставлСниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π΅.
ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… β€” __str__(), Π²Ρ‚ΠΎΡ€ΠΎΠΉ β€” __repr__ ().

def __str__(self) -> str:
    return '<' + ', '.join([str(v) for v in self]) + '>'


def __repr__(self) -> str:
    return 'Vector(' + self.__str__() + ')'

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ эти ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ print() ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ Python.

>>> print(v)
<1, 2, 3>
>>> v
Vector(<1, 2, 3>)

ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ магичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ займСмся ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² β€” сдСлаСм Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ +, -, /, * ΠΈ Ρ‚.Π΄. ΠΌΠΎΠ³Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ наш класс Π² качСствС ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°.

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

ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Π°, ΠΏΠΎΡ‚ΠΎΠΌΡƒ я ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽ список Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ:

  • __add__() β€” v + 1
  • __sub__() β€” v - 1
  • __mul__() β€” v * 1
  • __div__() β€” v / 1
  • __mod__() β€” v % 1
  • __floordiv__() β€” v / / 1
  • __divmod__() β€” divmod(v, 1)
  • __pow__() β€” v ** 1
  • __lshift__() β€” v << 1
  • __rshift__() β€” v >> 1

Π­Ρ‚ΠΎ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ всС магичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, связанныС с матСматичСскими опСрациями, ΠΎΠ΄Π½Π°ΠΊΠΎ этого Π½Π°ΠΌ Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ Π²ΠΏΠΎΠ»Π½Π΅ достаточно. НиТС Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ всСх этих ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²:

Β Β Β Β defΒ __mul__(self,Β value):
Β Β Β Β Β Β Β Β ifΒ isinstance(value,Β int)Β orΒ isinstance(value,Β float):
Β Β Β Β Β Β Β Β Β Β Β Β returnΒ Vector([valueΒ *Β coorΒ forΒ coorΒ inΒ self])
Β Β Β Β Β Β Β Β elifΒ isinstance(value,Β Vector):
Β Β Β Β Β Β Β Β Β Β Β Β ifΒ value.shapeΒ !=Β self.shape:
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β raiseΒ ValueError(f'...')
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β 
Β Β Β Β Β Β Β Β Β Β Β Β returnΒ Vector([v1Β *Β v1Β forΒ v1,Β v2Β inΒ zip(value,Β self)])
Β Β Β Β Β Β Β Β else:
Β Β Β Β Β Β Β Β Β Β Β Β raiseΒ TypeError(f'...')
Β Β Β Β Β Β Β Β 
Β Β Β Β Β Β Β Β 
Β Β Β Β defΒ __div__(self,Β value):
Β Β Β Β Β Β Β Β ifΒ isinstance(value,Β int)Β orΒ isinstance(value,Β float):
Β Β Β Β Β Β Β Β Β Β Β Β returnΒ Vector([coorΒ /Β valueΒ forΒ coorΒ inΒ self])
Β Β Β Β Β Β Β Β elifΒ isinstance(value,Β Vector):
Β Β Β Β Β Β Β Β Β Β Β Β ifΒ value.shapeΒ !=Β self.shape:
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β raiseΒ ValueError(f'...')
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β 
Β Β Β Β Β Β Β Β Β Β Β Β returnΒ Vector([v1Β /Β v2Β forΒ v1,Β v2Β inΒ zip(self,Β value)])
Β Β Β Β Β Β Β Β else:
Β Β Β Β Β Β Β Β Β Β Β Β Β raiseΒ TypeError(f'...')
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β 
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β 
Β Β Β Β defΒ __add__(self,Β value):
Β Β Β Β Β Β Β Β ifΒ isinstance(value,Β int)Β orΒ isinstance(value,Β float):
Β Β Β Β Β Β Β Β Β Β Β Β returnΒ Vector([coorΒ +Β valueΒ forΒ coorΒ inΒ self])
Β Β Β Β Β Β Β Β elifΒ isinstance(value,Β Vector):
Β Β Β Β Β Β Β Β Β Β Β Β ifΒ value.shapeΒ !=Β self.shape:
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β raiseΒ ValueError(...')
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β 
Β Β Β Β Β Β Β Β Β Β Β Β returnΒ Vector([v1Β +Β v2Β forΒ v1,Β v2Β inΒ zip(self,Β value)])
Β Β Β Β Β Β Β Β else:
Β Β Β Β Β Β Β Β Β Β Β Β Β raiseΒ TypeError(f'...')
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β 
Β Β Β Β 
Β Β Β Β defΒ __sub__(self,Β value):
Β Β Β Β Β Β Β Β ifΒ isinstance(value,Β int)Β orΒ isinstance(value,Β float):
Β Β Β Β Β Β Β Β Β Β Β Β returnΒ Vector([coorΒ -Β valueΒ forΒ coorΒ inΒ self])
Β Β Β Β Β Β Β Β elifΒ isinstance(value,Β Vector):
Β Β Β Β Β Β Β Β Β Β Β Β ifΒ value.shapeΒ !=Β self.shape:
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β raiseΒ ValueError(f'WrongΒ dimensionΒ forΒ operand.Β ExpectedΒ {self.shape},Β gotΒ {value.shape}')
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β 
Β Β Β Β Β Β Β Β Β Β Β Β returnΒ Vector([v1Β -Β v2Β forΒ v1,Β v2Β inΒ zip(self,Β value)])
Β Β Β Β Β Β Β Β else:
Β Β Β Β Β Β Β Β Β Β Β Β Β raiseΒ TypeError(f'...')
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β 
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β 
Β Β Β Β defΒ __mod__(self,Β value):
Β Β Β Β Β Β Β Β ifΒ isinstance(value,Β int)Β orΒ isinstance(value,Β float):
Β Β Β Β Β Β Β Β Β Β Β Β returnΒ Vector([coorΒ %Β valueΒ forΒ coorΒ inΒ self])
Β Β Β Β Β Β Β Β elifΒ isinstance(value,Β Vector):
Β Β Β Β Β Β Β Β Β Β Β Β ifΒ value.shapeΒ !=Β self.shape:
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β raiseΒ ValueError(f'WrongΒ dimensionΒ forΒ operand.Β ExpectedΒ {self.shape},Β gotΒ {value.shape}')
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β 
Β Β Β Β Β Β Β Β Β Β Β Β returnΒ Vector([v1Β %Β v2Β forΒ v1,Β v2Β inΒ zip(self,Β value)])
Β Β Β Β Β Β Β Β else:
Β Β Β Β Β Β Β Β Β Β Β Β Β raiseΒ TypeError(f'...')
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β 
Β Β Β Β 
Β Β Β Β defΒ __floordiv__(self,Β value):
Β Β Β Β Β Β Β Β ifΒ isinstance(value,Β int)Β orΒ isinstance(value,Β float):
Β Β Β Β Β Β Β Β Β Β Β Β returnΒ Vector([coorΒ //Β valueΒ forΒ coorΒ inΒ self])
Β Β Β Β Β Β Β Β elifΒ isinstance(value,Β Vector):
Β Β Β Β Β Β Β Β Β Β Β Β ifΒ value.shapeΒ !=Β self.shape:
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β raiseΒ ValueError(f'...')
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β 
Β Β Β Β Β Β Β Β Β Β Β Β returnΒ Vector([v1Β //Β v2Β forΒ v1,Β v2Β inΒ zip(self,Β value)])
Β Β Β Β Β Β Β Β else:
Β Β Β Β Β Β Β Β Β Β Β Β Β raiseΒ TypeError(f'...')
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β 
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β 
Β Β Β Β defΒ __divmod__(self,Β value):
Β Β Β Β Β Β Β Β raiseΒ TypeError('ThisΒ classΒ doesΒ notΒ supportΒ usingΒ withΒ divmod()Β function.')
Β Β Β Β Β Β Β Β 

Β Β Β Β defΒ __pow__(self,Β value):
Β Β Β Β Β Β Β Β ifΒ isinstance(value,Β int)Β orΒ isinstance(value,Β float):
Β Β Β Β Β Β Β Β Β Β Β Β returnΒ Vector([coorΒ **Β valueΒ forΒ coorΒ inΒ self])
Β Β Β Β Β Β Β Β elifΒ isinstance(value,Β Vector):
Β Β Β Β Β Β Β Β Β Β Β Β ifΒ value.shapeΒ !=Β self.shape:
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β raiseΒ ValueError(f'...')
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β 
Β Β Β Β Β Β Β Β Β Β Β Β returnΒ Vector([v1Β **Β v2Β forΒ v1,Β v2Β inΒ zip(self,Β value)])
Β Β Β Β Β Β Β Β else:
Β Β Β Β Β Β Β Β Β Β Β Β Β raiseΒ TypeError(f'...')
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β 
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β 
Β Β Β Β defΒ __lshift__(self,Β value):
Β Β Β Β Β Β Β Β ifΒ isinstance(value,Β int)Β orΒ isinstance(value,Β float):
Β Β Β Β Β Β Β Β Β Β Β Β returnΒ Vector([coorΒ <<Β valueΒ forΒ coorΒ inΒ self])
Β Β Β Β Β Β Β Β elifΒ isinstance(value,Β Vector):
Β Β Β Β Β Β Β Β Β Β Β Β ifΒ value.shapeΒ !=Β self.shape:
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β raiseΒ ValueError(f'...')
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β 
Β Β Β Β Β Β Β Β Β Β Β Β returnΒ Vector([v1Β <<Β v2Β forΒ v1,Β v2Β inΒ zip(self,Β value)])
Β Β Β Β Β Β Β Β else:
Β Β Β Β Β Β Β Β Β Β Β Β Β raiseΒ TypeError(f'...')


Β Β Β Β defΒ __rshift__(self,Β value):
Β Β Β Β Β Β Β Β ifΒ isinstance(value,Β int)Β orΒ isinstance(value,Β float):
Β Β Β Β Β Β Β Β Β Β Β Β returnΒ Vector([coorΒ >>Β valueΒ forΒ coorΒ inΒ self])
Β Β Β Β Β Β Β Β elifΒ isinstance(value,Β Vector):
Β Β Β Β Β Β Β Β Β Β Β Β ifΒ value.shapeΒ !=Β self.shape:
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β raiseΒ ValueError(f'...')
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β 
Β Β Β Β Β Β Β Β Β Β Β Β returnΒ Vector([v1Β >>Β v2Β forΒ v1,Β v2Β inΒ zip(self,Β value)])
Β Β Β Β Β Β Β Β else:
Β Β Β Β Β Β Β Β Β Β Β Β Β raiseΒ TypeError(f'...')

Наш ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ __divmod__(), Ρ‚.ΠΊ. использованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ divmod() Π½Π΅ совсСм соотвСтствуСт нашСй ΠΈΠ΄Π΅ΠΈ ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ экзСмпляра Vector.

ΠžΠ±Ρ€Π°Ρ‚Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ

Π’Π°ΠΊΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ магичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰ΠΈΠ΅ Π·Π° ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ 1 + v Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ v.__radd__(1).

ВсС эти ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ простыС матСматичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с Π±ΡƒΠΊΠ²ΠΎΠΉ r Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ c __radd__().

Π Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ всС эти ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π² нашСм классС:

Β Β Β Β defΒ __rsub__(self,Β value):
Β Β Β Β Β Β Β Β 
Β Β Β Β Β Β Β Β ifΒ isinstance(value,Β int)Β orΒ isinstance(value,Β float):
Β Β Β Β Β Β Β Β Β Β Β Β returnΒ Vector([valueΒ -Β coorΒ forΒ coorΒ inΒ self])
Β Β Β Β Β Β Β Β elifΒ isinstance(value,Β Vector):
Β Β Β Β Β Β Β Β Β Β Β Β ifΒ value.shapeΒ !=Β self.shape:
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β raiseΒ ValueError(f'...')
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β 
Β Β Β Β Β Β Β Β Β Β Β Β returnΒ Vector([v2Β -Β v1Β forΒ v1,Β v2Β inΒ zip(self,Β value)])
Β Β Β Β Β Β Β Β else:
Β Β Β Β Β Β Β Β Β Β Β Β Β raiseΒ TypeError(f'...')
Β 

Β Β Β Β defΒ __rpow__(self,Β value):
Β Β Β Β Β Β Β Β 
Β Β Β Β Β Β Β Β ifΒ isinstance(value,Β int)Β orΒ isinstance(value,Β float):
Β Β Β Β Β Β Β Β Β Β Β Β returnΒ Vector([valueΒ **Β coorΒ forΒ coorΒ inΒ self])
Β Β Β Β Β Β Β Β elifΒ isinstance(value,Β Vector):
Β Β Β Β Β Β Β Β Β Β Β Β ifΒ value.shapeΒ !=Β self.shape:
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β raiseΒ ValueError(f'...')
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β 
Β Β Β Β Β Β Β Β Β Β Β Β returnΒ Vector([v2Β **Β v1Β forΒ v1,Β v2Β inΒ zip(self,Β value)])
Β Β Β Β Β Β Β Β else:
Β Β Β Β Β Β Β Β Β Β Β Β Β raiseΒ TypeError(f'...')
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β 

Β Β Β Β defΒ __rdiv__(self,Β value):
Β Β Β Β Β Β Β Β 
Β Β Β Β Β Β Β Β ifΒ isinstance(value,Β int)Β orΒ isinstance(value,Β float):
Β Β Β Β Β Β Β Β Β Β Β Β returnΒ Vector([valueΒ /Β coorΒ forΒ coorΒ inΒ self])
Β Β Β Β Β Β Β Β elifΒ isinstance(value,Β Vector):
Β Β Β Β Β Β Β Β Β Β Β Β ifΒ value.shapeΒ !=Β self.shape:
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β raiseΒ ValueError(f'...')
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β 
Β Β Β Β Β Β Β Β Β Β Β Β returnΒ Vector([v2Β /Β v1Β forΒ v1,Β v2Β inΒ zip(self,Β value)])
Β Β Β Β Β Β Β Β else:
Β Β Β Β Β Β Β Β Β Β Β Β Β raiseΒ TypeError(f'...')

Β Β Β Β Β Β Β Β 
Β Β Β Β defΒ __rfloordiv__(self,Β value):
Β Β Β Β Β Β Β Β 
Β Β Β Β Β Β Β Β ifΒ isinstance(value,Β int)Β orΒ isinstance(value,Β float):
Β Β Β Β Β Β Β Β Β Β Β Β returnΒ Vector([valueΒ //Β coorΒ forΒ coorΒ inΒ self])
Β Β Β Β Β Β Β Β elifΒ isinstance(value,Β Vector):
Β Β Β Β Β Β Β Β Β Β Β Β ifΒ value.shapeΒ !=Β self.shape:
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β raiseΒ ValueError(f'...')
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β 
Β Β Β Β Β Β Β Β Β Β Β Β returnΒ Vector([v2Β //Β v1Β forΒ v1,Β v2Β inΒ zip(self,Β value)])
Β Β Β Β Β Β Β Β else:
Β Β Β Β Β Β Β Β Β Β Β Β Β raiseΒ TypeError(f'...')

Β Β Β Β Β Β Β Β Β Β Β Β 
Β Β Β Β defΒ __rmod__(self,Β value):
Β Β Β Β Β Β Β Β 
Β Β Β Β Β Β Β Β ifΒ isinstance(value,Β int)Β orΒ isinstance(value,Β float):
Β Β Β Β Β Β Β Β Β Β Β Β returnΒ Vector([valueΒ %Β coorΒ forΒ coorΒ inΒ self])
Β Β Β Β Β Β Β Β elifΒ isinstance(value,Β Vector):
Β Β Β Β Β Β Β Β Β Β Β Β ifΒ value.shapeΒ !=Β self.shape:
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β raiseΒ ValueError(f'...')
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β 
Β Β Β Β Β Β Β Β Β Β Β Β returnΒ Vector([v2Β %Β v1Β forΒ v1,Β v2Β inΒ zip(self,Β value)])
Β Β Β Β Β Β Β Β else:
Β Β Β Β Β Β Β Β Β Β Β Β Β raiseΒ TypeError(f'...')

Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β 
Β Β Β Β defΒ __rlshift__(self,Β value):
Β Β Β Β Β Β Β Β 
Β Β Β Β Β Β Β Β ifΒ isinstance(value,Β int)Β orΒ isinstance(value,Β float):
Β Β Β Β Β Β Β Β Β Β Β Β returnΒ Vector([valueΒ <<Β coorΒ forΒ coorΒ inΒ self])
Β Β Β Β Β Β Β Β elifΒ isinstance(value,Β Vector):
Β Β Β Β Β Β Β Β Β Β Β Β ifΒ value.shapeΒ !=Β self.shape:
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β raiseΒ ValueError(f'...')
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β 
Β Β Β Β Β Β Β Β Β Β Β Β returnΒ Vector([v2Β <<Β v1Β forΒ v1,Β v2Β inΒ zip(self,Β value)])
Β Β Β Β Β Β Β Β else:
Β Β Β Β Β Β Β Β Β Β Β Β Β raiseΒ TypeError(f'...')
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β 
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β 
Β Β Β Β defΒ __radd__(self,Β value):
Β Β Β Β Β Β Β Β returnΒ self.__add__(value)
Β Β Β Β 
Β Β Β Β 
Β Β Β Β defΒ __rmul__(self,Β value):
Β Β Β Β Β Β Β Β returnΒ self.__mul__(value)

Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β 
Β Β Β Β defΒ __rrshift__(self,Β value):
Β Β Β Β Β Β Β Β 
Β Β Β Β Β Β Β Β ifΒ isinstance(value,Β int)Β orΒ isinstance(value,Β float):
Β Β Β Β Β Β Β Β Β Β Β Β returnΒ Vector([valueΒ >>Β coorΒ forΒ coorΒ inΒ self])
Β Β Β Β Β Β Β Β elifΒ isinstance(value,Β Vector):
Β Β Β Β Β Β Β Β Β Β Β Β ifΒ value.shapeΒ !=Β self.shape:
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β raiseΒ ValueError(f'...')
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β 
Β Β Β Β Β Β Β Β Β Β Β Β returnΒ Vector([v2Β >>Β v1Β forΒ v1,Β v2Β inΒ zip(self,Β value)])
Β Β Β Β Β Β Β Β else:
Β Β Β Β Β Β Β Β Β Β Β Β Β raiseΒ TypeError(f'...')

Π’Π΅ΠΏΠ΅Ρ€ΡŒ протСстируСм Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ матСматичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с нашим Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠΌ
<1, 2, 3>.

>>> v * 2, 3 * v, v * Vector([1, 2, 3])
(Vector(<2, 4, 6>), Vector(<3, 6, 9>), Vector(<1, 4, 9>))
>>> v + 2, v - 1, 1 - v, 1 + v
(Vector(<3, 4, 5>), Vector(<0, 1, 2>), Vector(<0, -1, -2>), Vector(<2, 3, 4>))
>>> v + Vector([1, 2, 3]), v - Vector([0, 1, 0])
(Vector(<2, 4, 6>), Vector(<1, 1, 3>))
>>> v ** 2, 2 ** v, v ** Vector([1, 2, 3])
(Vector(<1, 4, 9>), Vector(<2, 4, 8>), Vector(<1, 4, 27>))
>>> v << 1, v >> 2, 2 >> v, 1 << v
(Vector(<2, 4, 6>), Vector(<0, 0, 0>), Vector(<1, 0, 0>), Vector(<2, 4, 8>))

Если Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Ρ‚ΠΎ ΡΡ‚Π°Ρ‚ΡŒΡ Π²Ρ‹ΠΉΠ΄Π΅Ρ‚ слишком большой, Π½ΠΎ Π³Π»Π°Π²Π½ΡƒΡŽ ΡΡƒΡ‚ΡŒ Π²Ρ‹ ΡƒΠ»ΠΎΠ²ΠΈΠ»ΠΈ.

ΠœΠ°Π³ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ какЛогичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ

Π’ Python Π΅ΡΡ‚ΡŒ Ρ‚Ρ€ΠΈ логичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ β€” И, Π˜Π›Π˜, XOR.

Π‘ΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΈΠΌ магичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹: __and__(), __or__(), __xor__(). Для Π½ΠΈΡ… Ρ‚Π°ΠΊΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ β€” __rand__(), __ror__() ΠΈ __rxor__(). РСализация этих ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π² нашСм классС выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Β Β Β Β defΒ __and__(self,Β value):
Β Β Β Β Β Β Β Β returnΒ bool(value)Β &Β bool(self)
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β 
Β Β Β Β Β Β Β Β 
Β Β Β Β defΒ __or__(self,Β value):
Β Β Β Β Β Β Β Β returnΒ bool(value)Β |Β bool(self)
Β Β Β Β 
Β Β Β Β 
Β Β Β Β defΒ __xor__(self,Β value):
Β Β Β Β Β Β Β Β returnΒ bool(value)Β ^Β bool(self)


Β Β Β Β defΒ __and__(self,Β value):
Β Β Β Β Β Β Β Β returnΒ bool(value)Β &Β bool(self)
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β 
Β Β Β Β Β Β Β Β 
Β Β Β Β defΒ __or__(self,Β value):
Β Β Β Β Β Β Β Β returnΒ bool(value)Β |Β bool(self)
Β Β Β Β 
Β Β Β Β 
Β Β Β Β defΒ __xor__(self,Β value):
Β Β Β Β Β Β Β Β returnΒ bool(value)Β ^Β bool(self)

Π—Π΄Π΅ΡΡŒ Π΅ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ β€” bool(self). Π’.Π΅. ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ bool, ΠΏΠ΅Ρ€Π΅Π΄Π°Π² Π΅ΠΉ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ экзСмпляр класса.

Ѐункция bool ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ магичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ __bool__(), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π±ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊ Π½ΠΈ странно.

Наша Π»ΠΎΠ³ΠΈΠΊΠ° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ β€” Ссли хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ элСмСнт Π²Π΅ΠΊΡ‚ΠΎΡ€Π° Π½Π΅ Ρ€Π°Π²Π΅Π½ 0, Ρ‚ΠΎ Π±ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° Ρ€Π°Π²Π½ΠΎ True, ΠΈ False Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ случаС.

def __bool__(self) -> bool:
     for value in self.__values:
         if value != 0: 
            return True 
    return False

ΠŸΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΡƒΠ΅ΠΌ логичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с нашим Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠΌ:

>>> v & 1, v & 0, v | 1, v ^ 1
(True, False, True, False)
>>> 1 & v, 0 | 1, 0 ^ v
(True, 1, True)

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

БСгодня ΠΌΡ‹ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π»ΠΈ мноТСство магичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΎΠ΄Π½Π°ΠΊΠΎ это Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ всё. Π’ блиТайшСС врСмя Π²Ρ‹ΠΉΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ этой ΡΡ‚Π°Ρ‚ΡŒΠΈ, Π³Π΄Π΅ Π±ΡƒΠ΄ΡƒΡ‚ рассмотрСны Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ конструкторы. Π’Π°ΠΊΠΆΠ΅ ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π», свойствСнный Π²Π΅ΠΊΡ‚ΠΎΡ€Ρƒ β€” ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, скалярноС ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ с Π΄Ρ€ΡƒΠ³ΠΈΠΌ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠΌ.

Бсылка Π½Π° ΠΊΠΎΠ΄ класса ΠΈΠ· ΡΡ‚Π°Ρ‚ΡŒΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ здСсь.

На этом ΡΡ‚Π°Ρ‚ΡŒΡ заканчиваСтся. Если Π²Ρ‹ заинтСрСсованы Π² матСматичСском Π°Π½Π°Π»ΠΈΠ·Π΅, ΡΠΎΠ²Π΅Ρ‚ΡƒΡŽ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Β«ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Π°Ρ. Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ опрСдСлСния ΠΈ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹Β«.

А Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π°Β Π³Ρ€ΡƒΠΏΠΏΡƒ Π’ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅,Β TelegramΒ ΠΈΒ YouTube-ΠΊΠ°Π½Π°Π». Π’Π°ΠΌ Π΅Ρ‰Π΅ большС ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ³ΠΎ ΠΈ интСрСсного для программистов.

ΠŸΠΎΡ…ΠΎΠΆΠ΅Π΅

ΠŸΡ€ΠΎΡΡ‚ΠΎΠ΅ объяснСниС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² класса, экзСмпляра класса ΠΈ статичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π² Python

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΡΡ‚Π°Ρ‚ΡŒΠΈ Β«Python’s Instance, Class, and Static Methods DemystifiedΒ».

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я ΠΏΠΎΡΡ‚Π°Ρ€Π°ΡŽΡΡŒ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ,
Ρ‡Ρ‚ΠΎ стоит Π·Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ
класса, статичСскими
ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ
ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ
экзСмпляра класса
.

Если Π²Ρ‹ смоТСтС Π΄ΠΎΡΡ‚ΠΈΠ³Π½ΡƒΡ‚ΡŒ ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ
понимания Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ этими ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ,
Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ смоТСтС ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ
ΠΊΠΎΠ΄ Π½Π° Python. Π’Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΡ‰Π΅ для понимания,
Π° Π² долгосрочной пСрспСктивС Π΅Π³ΠΎ Π»Π΅Π³Ρ‡Π΅
ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ.

ΠžΠ±Π·ΠΎΡ€ статичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²,
ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² класса ΠΈ экзСмпляра класса

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Ρ‡Π½Π΅ΠΌ с написания класса (Π½Π°
Python 3), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ простыС
ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² всСх Ρ‚Ρ€Π΅Ρ… Π²ΠΈΠ΄ΠΎΠ²:

class MyClass:
    def method(self):
        return 'instance method called', self

    @classmethod
    def classmethod(cls):
        return 'class method called', cls

    @staticmethod
    def staticmethod():
        return 'static method called'

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Python
2
. Π”Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Ρ‹ @staticmethod ΠΈ @classmethod доступны
Π² Python начиная с вСрсии 2.4, Π° Π·Π½Π°Ρ‡ΠΈΡ‚, этот
ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΎΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. ВмСсто
использования простого объявлСния
класса class MyClass: Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ класс
Π½ΠΎΠ²ΠΎΠ³ΠΎ стиля, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒΡΡ
ΠΎΡ‚ object, с синтаксисом class MyClass(object):. ВсС
ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ ΡƒΡ‚ΠΎΡ‡Π½Π΅Π½ΠΈΠΉ.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ экзСмпляра класса

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² MyClass, ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ
method, это ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ экзСмпляра класса.
Π­Ρ‚ΠΎ самый Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ Π²ΠΈΠ΄ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ
Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‡Π°Ρ‰Π΅ всСго. Как
Π²ΠΈΠ΄ΠΈΡ‚Π΅, этот ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½
ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ (self), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°
ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° экзСмпляр MyClass (хотя ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹
ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΈ большС ΠΎΠ΄Π½ΠΎΠ³ΠΎ
ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°).

ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° self ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹
экзСмпляра класса ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ свободный
доступ ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ
Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Благодаря этому ΠΎΠ½ΠΈ Π½Π°
ΠΌΠ½ΠΎΠ³ΠΎΠ΅ способны, ΠΊΠΎΠ³Π΄Π° Ρ€Π΅Ρ‡ΡŒ Π·Π°Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΎ
ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ состояния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ экзСмпляра Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ
доступ ΠΊ самому классу β€” ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ
Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° self.__class__. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ
ΠΌΠΎΠ³ΡƒΡ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒ состояниС Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°,
но и класса.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса

Π”Π°Π²Π°ΠΉΡ‚Π΅ сравним Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΡƒΠ·Π½Π°Π»ΠΈ ΠΎ
ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… экзСмпляра класса, со Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ
ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ β€” MyClass.classmethod. Π― ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡ΠΈΠ» этот
ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Π° @classmethod,
Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Π»ΠΎ Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ это ΠΌΠ΅Ρ‚ΠΎΠ΄ класса.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса вмСсто ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° self
ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ cls. Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€
ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π΅ Π½Π°
экзСмпляр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π° Π½Π° класс.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΠ΅Ρ‚ΠΎΠ΄ класса ΠΈΠΌΠ΅Π΅Ρ‚ доступ
Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρƒ cls, ΠΎΠ½ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ
состояниС экзСмпляра ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Для этого
Π½ΡƒΠΆΠ΅Π½ доступ ΠΊ self. Но, Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹
класса ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ состояниС класса
Π² Ρ†Π΅Π»ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π·Π°Ρ‚Ρ€ΠΎΠ½Π΅Ρ‚ ΠΈ всС экзСмпляры
этого класса.

БтатичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹

Π’Ρ€Π΅Ρ‚ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, MyClass.staticmethod, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½
ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Π° @staticmethod, Ρ‡Ρ‚ΠΎΠ±Ρ‹
ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ этот ΠΌΠ΅Ρ‚ΠΎΠ΄ статичСский.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π½Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ Π²
качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π½ΠΈ self, Π½ΠΈ cls (хотя,
бСзусловно, ΠΎΠ½ΠΈ свободно ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ
Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π² Π»ΡŽΠ±Ρ‹Ρ… количСствах).

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅
ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ состояниС Π½ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°,
Π½ΠΈ класса. Π’ΠΈΠ΄Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚
ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹.
Π­Ρ‚ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ
Π² класс, просто
Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ
Π½Π°Ρ…ΠΎΠ΄ΠΈΠ»ΠΈΡΡŒ Π² пространствС ΠΈΠΌΠ΅Π½ этого
класса, Ρ‚.Β Π΅.,
для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ†Π΅Π»Π΅ΠΉ.

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, ΠΊΠ°ΠΊ всС
это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚!

Пока Ρ‡Ρ‚ΠΎ всС ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ Π±Ρ‹Π»ΠΎ чистой
Ρ‚Π΅ΠΎΡ€ΠΈΠ΅ΠΉ. Но я ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹
Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ ΡƒΠ»Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ
ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅. БСйчас ΠΌΡ‹
Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ нСсколько Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ…
ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ².

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, ΠΊΠ°ΠΊ всС эти ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹
Π²Π΅Π΄ΡƒΡ‚ сСбя, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΈΡ… Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ. НачнСм
с создания экзСмпляра класса, Π° Π·Π°Ρ‚Π΅ΠΌ
Π²Ρ‹Π·ΠΎΠ²Π΅ΠΌ всС Ρ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.

Π’ MyClass рСализация ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°
Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ свСдСния, благодаря ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ
ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, ΠΊ ΠΊΠ°ΠΊΠΈΠΌ частям класса
ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ доступ ΠΌΠ΅Ρ‚ΠΎΠ΄,
Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ происходящСС.

Π’ΠΎΡ‚ Ρ‡Ρ‚ΠΎ происходит ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°
экзСмпляра класса
:

>>> obj = MyClass()
>>> obj.method()
('instance method called', <MyClass instance at 0x101a2f4c8>)

ΠœΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ method (Ρ‚.Β Π΅., ΠΌΠ΅Ρ‚ΠΎΠ΄
экзСмпляра класса) ΠΈΠΌΠ΅Π΅Ρ‚ доступ ΠΊ
экзСмпляру ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° (это Π²ΠΈΠ΄Π½ΠΎ ΠΏΠΎ Π²Ρ‹Π²ΠΎΠ΄Ρƒ
<MyClass instance>) ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°
self.

ΠŸΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Python Π·Π°ΠΌΠ΅Ρ‰Π°Π΅Ρ‚
Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ self экзСмпляром ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° (obj). ΠœΡ‹
ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ синтаксичСский
сахар dot-call синтаксиса (obj.method()) ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ
Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΠΏΠ΅Ρ€Π΅Π΄Π°Π² экзСмпляр
ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ:

>>> MyClass.method(obj)
('instance method called', <MyClass instance at 0x101a2f4c8>)

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ³Π°Π΄Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚,
Ссли Π²Ρ‹ ΠΏΠΎΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ этот ΠΌΠ΅Ρ‚ΠΎΠ΄
Π±Π΅Π· ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ создания экзСмпляра
класса?

ΠšΡΡ‚Π°Ρ‚ΠΈ, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ экзСмпляра класса ΠΏΡ€ΠΈ
ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° self.__class__ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚
ΠΈΠΌΠ΅Ρ‚ΡŒ доступ ΠΈ ΠΊ самому классу. Π­Ρ‚ΠΎ
Π΄Π΅Π»Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ особСнно ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌΠΈ
Π² условиях ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ доступа: ΠΎΠ½ΠΈ
ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ состояниС экзСмпляра
ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈ самого класса.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ испытаСм ΠΌΠ΅Ρ‚ΠΎΠ΄ класса:

>>> obj.classmethod()
('class method called', <class MyClass at 0x101a2f4c8>)

Π’Ρ‹Π·ΠΎΠ² classmethod() ΠΏΠΎΠΊΠ°Π·Π°Π», Ρ‡Ρ‚ΠΎ этот ΠΌΠ΅Ρ‚ΠΎΠ΄
Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ доступа ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ <MyClass
instance>. Но Ρƒ Π½Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ доступ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ
<class MyClass>, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт сам
класс (Π² Python Π²ΠΎΠΎΠ±Ρ‰Π΅ всС являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ,
Π΄Π°ΠΆΠ΅ классы).

Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅
MyClass.classmethod() Python автоматичСски ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚
класс Π² качСствС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°
Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π­Ρ‚ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Python запускаСтся,
Ссли ΠΌΠ΅Ρ‚ΠΎΠ΄ вызываСтся ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ
dot-синтаксиса. Π’ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… экзСмпляра
класса Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€
self.

ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ
эти ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈΠΌΠ΅Π½ΡƒΡŽΡ‚ΡΡ self ΠΈ cls лишь Π²
силу соглашСний. Π‘ Ρ‚Π΅ΠΌ ΠΆΠ΅ успСхом Π²Ρ‹
ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°Π·Π²Π°Ρ‚ΡŒ ΠΈΡ… the_object ΠΈ the_class. Π’Π°ΠΆΠ½ΠΎ
Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΈΠ΄ΡƒΡ‚ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌΠΈ Π² спискС
ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π²Ρ‹Π·ΠΎΠ²Π΅ΠΌ статичСский
ΠΌΠ΅Ρ‚ΠΎΠ΄
:

>>> obj.staticmethod()
'static method called'

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΌΡ‹ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Π»ΠΈ
staticmethod() Ρ‡Π΅Ρ€Π΅Π·
ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. НСкоторыС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ
ΡƒΠ΄ΠΈΠ²Π»ΡΡŽΡ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° ΡƒΠ·Π½Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ
Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π·
экзСмпляр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ статичСского
ΠΌΠ΅Ρ‚ΠΎΠ΄Π° с использованиСм dot-синтаксиса
Π½Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ self ΠΈΠ»ΠΈ cls, Python
примСняСт ограничСния доступа.

Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ статичСскиС
ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ доступа Π½ΠΈ ΠΊ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ
экзСмпляра ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π½ΠΈ ΠΊ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ
класса. Они Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ,
Π½ΠΎ ΠΏΡ€ΠΈ этом относятся ΠΊ пространству
ΠΈΠΌΠ΅Π½ класса (ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π΅Π³ΠΎ экзСмпляра).

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚,
Ссли ΠΌΡ‹ попытаСмся Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ эти ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹
Π² самом классС, Ρ‚.Β Π΅., Π±Π΅Π· ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ
создания экзСмпляра ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°:

>>> MyClass.classmethod()
('class method called', <class MyClass at 0x101a2f4c8>)

>>> MyClass.staticmethod()
'static method called'

>>> MyClass.method()
TypeError: unbound method method() must
    be called with MyClass instance as first
    argument (got nothing instead)

Нам прСкрасно ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ
classmethod() ΠΈ staticmethod() , Π½ΠΎ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ
ΠΌΠ΅Ρ‚ΠΎΠ΄ экзСмпляра класса method() ΠΏΡ€ΠΎΠ²Π°Π»ΠΈΠ»Π°ΡΡŒ
(TypeError).

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

Π­Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅Ρ‚ΠΊΠΎ Ρ€Π°Π·Π³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ
Ρ‚Ρ€ΠΈ Π²ΠΈΠ΄Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². Но я Π½Π° этом Π½Π΅
ΠΎΡΡ‚Π°Π½ΠΎΠ²Π»ΡŽΡΡŒ. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π΄Π²ΡƒΡ… Ρ€Π°Π·Π΄Π΅Π»Π°Ρ…
я Ρ€Π°Π·Π±Π΅Ρ€Ρƒ Π΄Π²Π° Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ рСалистичных
ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° использования Ρ€Π°Π·Π½Ρ‹Ρ… Π²ΠΈΠ΄ΠΎΠ²
ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ².

Мои ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ основаны Π½Π° классС
Pizza:

class Pizza:
    def __init__(self, ingredients):
        self.ingredients = ingredients

    def __repr__(self):
        return f'Pizza({self.ingredients!r})'

>>> Pizza(['cheese', 'tomatoes'])
Pizza(['cheese', 'tomatoes'])

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΊΠΎΠ΄Π°
(Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ…) для форматирования
строки, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠΉ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ __repr__,
ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Python
3.6 f-strings. Π’ Python 2 ΠΈ вСрсиях Python 3 Π΄ΠΎ 3.6
для форматирования строки слСдуСт
ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ выраТСния, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

def __repr__(self):
    return 'Pizza(%r)' % self.ingredients

Π€Π°Π±Ρ€ΠΈΠΊΠΈ вкусной ΠΏΠΈΡ†Ρ†Ρ‹ ΠΈ
@classmethod

НавСрняка Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ сущСствуСт
мноТСство вкусных Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² ΠΏΠΈΡ†Ρ†Ρ‹:

Pizza(['mozzarella', 'tomatoes'])
Pizza(['mozzarella', 'tomatoes', 'ham', 'mushrooms'])
Pizza(['mozzarella'] * 4)

Π˜Ρ‚Π°Π»ΡŒΡΠ½Ρ†Ρ‹ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π»ΠΈ свои Ρ€Π΅Ρ†Π΅ΠΏΡ‚Ρ‹
ΠΏΠΈΡ†Ρ†Ρ‹ столСтия Π½Π°Π·Π°Π΄, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ всС ΠΎΠ½ΠΈ
ΡƒΠΆΠ΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΡƒΡΡ‚ΠΎΡΠ²ΡˆΠΈΠ΅ΡΡ названия.
ΠœΡ‹ этим Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ ΠΈ Π΄Π°Π΄ΠΈΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ
нашСго класса Pizza Π»ΡƒΡ‡ΡˆΠΈΠΉ интСрфСйс для
создания Ρ‚Π΅Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΏΠΈΡ†Ρ†Ρ‹, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ…
ΠΎΠ½ΠΈ ΠΌΠ΅Ρ‡Ρ‚Π°ΡŽΡ‚.

Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ красиво ΠΈ чисто,
ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса Π² качСствС
Ρ„Π°Π±Ρ€ΠΈΡ‡Π½Ρ‹Ρ…
Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для Ρ€Π°Π·Π½Ρ‹Ρ… Π²ΠΈΠ΄ΠΎΠ² ΠΏΠΈΡ†Ρ†Ρ‹:

class Pizza:
    def __init__(self, ingredients):
        self.ingredients = ingredients

    def __repr__(self):
        return f'Pizza({self.ingredients!r})'

    @classmethod
    def margherita(cls):
        return cls(['mozzarella', 'tomatoes'])

    @classmethod
    def prosciutto(cls):
        return cls(['mozzarella', 'tomatoes', 'ham'])

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ
Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ cls Π² Ρ„Π°Π±Ρ€ΠΈΡ‡Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… margherita
ΠΈ prosciutto, Π° Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽ конструктор Pizza
Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот ΠΏΡ€ΠΈΠ΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° DRY (Don’t Repeat Yourself, «НС повторяйся»). Если Π² ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠΌ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Ρ‚ΡŒ этот класс, Π½Π°ΠΌ Π½Π΅ придСтся ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΈ имя конструктора Π²ΠΎ всСх Ρ„Π°Π±Ρ€ΠΈΡ‡Π½Ρ‹Ρ… функциях classmethod.

Π§Ρ‚ΠΎ ΠΆΠ΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ
этих Ρ„Π°Π±Ρ€ΠΈΡ‡Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²? Π”Π°Π²Π°ΠΉΡ‚Π΅ испытаСм
ΠΈΡ…:

>>> Pizza.margherita()
Pizza(['mozzarella', 'tomatoes'])

>>> Pizza.prosciutto()
Pizza(['mozzarella', 'tomatoes', 'ham'])

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

МоТно Π²Π·Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π½Π° это ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅
ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² класса ΠΈ ΠΏΠΎΠ΄ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΡƒΠ³Π»ΠΎΠΌ: ΠΎΠ½ΠΈ
ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²Π°ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅
конструкторы для Π²Π°ΡˆΠΈΡ… классов.

Python допускаСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΌΠ΅Ρ‚ΠΎΠ΄
__init__ для каТдого класса. ИспользованиС
ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² класса позволяСт Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ
ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… конструкторов,
сколько Π½ΡƒΠΆΠ½ΠΎ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅
ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ интСрфСйс Π²Π°ΡˆΠΈΡ… классов
самодокумСнтированным (Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ
стСпСни) ΠΈ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ ΠΈΡ… использованиС.

Когда стоит ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ
статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹

Π—Π΄Π΅ΡΡŒ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ
слоТнСС. Но Π·Π½Π°Π΅Ρ‚Π΅ Ρ‡Ρ‚ΠΎ? Π― просто ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΡƒ
Ρ€Π°ΡΡ‚ΡΠ³ΠΈΠ²Π°Ρ‚ΡŒ аналогию с ΠΏΠΈΡ†Ρ†Π΅ΠΉ.

Π’ΠΎΡ‚ Ρ‡Ρ‚ΠΎ я ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π»:

import math

class Pizza:
    def __init__(self, radius, ingredients):
        self.radius = radius
        self.ingredients = ingredients

    def __repr__(self):
        return (f'Pizza({self.radius!r}, '
                f'{self.ingredients!r})')

    def area(self):
        return self.circle_area(self.radius)

    @staticmethod
    def circle_area(r):
        return r ** 2 * math.pi

Π§Ρ‚ΠΎ здСсь измСнилось? Для Π½Π°Ρ‡Π°Π»Π°, я
ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ» конструктор ΠΈ __repr__, Ρ‡Ρ‚ΠΎΠ±Ρ‹
принимался Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚
radius.

Π’Π°ΠΊΠΆΠ΅ я Π΄ΠΎΠ±Π°Π²ΠΈΠ» ΠΌΠ΅Ρ‚ΠΎΠ΄ экзСмпляра
класса area(), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ вычисляСт ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚
ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ ΠΏΠΈΡ†Ρ†Ρ‹ (это Ρ‚Π°ΠΊΠΆΠ΅ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚
для @property, Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρƒ нас ΠΈΠ³Ρ€ΡƒΡˆΠ΅Ρ‡Π½Ρ‹ΠΉ).

ВмСсто вычислСния ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΈ нСпосрСдствСнно
Π² area(), с использованиСм всСм извСстной
Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΈ ΠΊΡ€ΡƒΠ³Π°, я вынСс Π΅Π³ΠΎ Π²
ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ circle_area().

>>> p = Pizza(4, ['mozzarella', 'tomatoes'])
>>> p
Pizza(4, ['mozzarella', 'tomatoes'])
>>> p.area()
50.26548245743669
>>> Pizza.circle_area(4)
50.26548245743669

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, этот ΠΏΡ€ΠΈΠΌΠ΅Ρ€ нСсколько
простоват, Π½ΠΎ ΠΎΠ½ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ
Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ прСимущСства статичСских
ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ².

Как ΠΌΡ‹ ΡƒΠΆΠ΅ Π·Π½Π°Π΅ΠΌ, статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹
Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ доступа ΠΊ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ класса ΠΈΠ»ΠΈ
ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹
cls ΠΈΠ»ΠΈ self. Π­Ρ‚ΠΎ большоС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅, Π½ΠΎ
Ρ‚Π°ΠΊΠΆΠ΅ ΠΈ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ сигнал, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ,
Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½ΠΈ ΠΎΡ‚ Ρ‡Π΅Π³ΠΎ Π½Π΅ зависит.

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ясно, Ρ‡Ρ‚ΠΎ
circle_area() Π½ΠΈΠΊΠΎΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ
класс ΠΈΠ»ΠΈ экзСмпляр класса. (ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ,
это всСгда ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ
глобальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π½ΠΎ здСсь ΠΌΡ‹ Π½Π΅
Π±ΡƒΠ΄Π΅ΠΌ это Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒ).

Π’Π°ΠΊ Π² Ρ‡Π΅ΠΌ ΠΆΠ΅ польза?

Когда Π²Ρ‹ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² качСствС
статичСского, это Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ подсказываСт
Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŽ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚
ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ класс ΠΈΠ»ΠΈ экзСмпляр
класса β€” это ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΆΠ΅ примСняСтся
срСдой выполнСния Python.

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

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

НаписаниС Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠ· Π²Π°ΡˆΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²
ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ (нСчасто ΠΈ Ρ‚Π°ΠΌ, Π³Π΄Π΅ это
ΠΈΠΌΠ΅Π΅Ρ‚ смысл) ΠΌΠΎΠΆΠ΅Ρ‚ принСсти ΠΏΠΎΠ»ΡŒΠ·Ρƒ Π²
ΠΏΠ»Π°Π½Π΅ поддСрТиваСмости ΠΊΠΎΠ΄Π°. Π’Π°ΠΊΠΆΠ΅ это
сниТаСт Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠ΅
Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ваши классы
Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ.

БтатичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅ΡŽΡ‚
прСимущСство ΠΏΡ€ΠΈ тСстировании ΠΊΠΎΠ΄Π°.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΠ΅Ρ‚ΠΎΠ΄ circle_area() ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ
Π½Π΅ зависит ΠΎΡ‚ ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ класса, Π΅Π³ΠΎ
Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ это
ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠ³ΠΎ тСста,
Π½Π΅ бСспокоясь ΠΎΠ± экзСмплярС класса Π²
Ρ†Π΅Π»ΠΎΠΌ. Π’ΠΎ Π΅ΡΡ‚ΡŒ, этот ΠΌΠ΅Ρ‚ΠΎΠ΄ тСстируСтся,
ΠΊΠ°ΠΊ обычная функция. ΠžΠΏΡΡ‚ΡŒ ΠΆΠ΅, это
ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΊΠΎΠ΄Π° Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ.

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ Π²Ρ‹Π²ΠΎΠ΄Ρ‹

  • Для ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² экзСмпляра класса
    Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ самого экзСмпляра класса
    являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ. Доступ ΠΊ Π½Π΅ΠΌΡƒ
    ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ благодаря ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ
    self.
  • ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса Π² экзСмплярС класса
    Π½Π΅ Π½ΡƒΠΆΠ΄Π°ΡŽΡ‚ΡΡ. Они Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ доступа ΠΊ
    экзСмпляру класса, Π½ΠΎ ΠΈΠΌΠ΅ΡŽΡ‚ доступ ΠΊ
    самому классу благодаря ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ cls.
  • БтатичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ доступа
    ΠΊ cls ΠΈΠ»ΠΈ self. Они Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅
    Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½ΠΎ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ ΠΊ пространству
    имСн класса.
  • БтатичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса
    ΡΠΎΠΎΠ±Ρ‰Π°ΡŽΡ‚ ΠΎ намСрСниях Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°
    ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΈΠ·Π°ΠΉΠ½Π° класса (ΠΈ Π²
    ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ стСпСни ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ
    ΠΈΡ… ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‚). Π­Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ прСимущСства
    ΠΏΠΎ части поддСрТиваСмости ΠΊΠΎΠ΄Π°.

ΠœΠ΅Ρ‚ΠΎΠ΄ Python

— классы, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Python

1. ΠœΠ΅Ρ‚ΠΎΠ΄ Python — Ρ†Π΅Π»ΡŒ

Π’ нашСм послСднСм руководствС ΠΌΡ‹ обсудили Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² Python . БСгодня Π² этом руководствС ΠΏΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ Python ΠΌΡ‹ обсудим, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π° языкС программирования Python. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΡ‹ ΠΈΠ·ΡƒΡ‡ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ класса Python ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Python. Наряду с этим ΠΌΡ‹ ΠΈΠ·ΡƒΡ‡ΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Python.

Π˜Ρ‚Π°ΠΊ, приступим ΠΊ классу ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ Python.

ΠœΠ΅Ρ‚ΠΎΠ΄ Python

2.Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ Python

Π’Ρ‹ вСдь Π·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Python — ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык, Π²Π΅Ρ€Π½ΠΎ? Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с классами ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ для модСлирования Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠΈΡ€Π°. ΠœΠ΅Ρ‚ΠΎΠ΄ Python — это ΠΌΠ΅Ρ‚ΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°; это Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ для этого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Но ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΌΡ‹ Π½Π°Ρ‡Π½Π΅ΠΌ ΡƒΠ³Π»ΡƒΠ±Π»ΡΡ‚ΡŒΡΡ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΊΡ€Π°Ρ‚ΠΊΠΎ рассмотрим классы ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΈ Ссли Ρƒ вас Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ сомнСния Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ Python, спроситС Π² ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ.
Learn: наслСдованиС Python, ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°

3.ΠœΠ΅Ρ‚ΠΎΠ΄ класса Python

Класс Python — это абстрактный Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… (ADT). Π”ΡƒΠΌΠ°ΠΉΡ‚Π΅ ΠΎΠ± этом ΠΊΠ°ΠΊ ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅. Π Π°ΠΊΠ΅Ρ‚Π°, сдСланная ΠΏΠΎ Π΅Π΅ Ρ‡Π΅Ρ€Ρ‚Π΅ΠΆΡƒ, ΠΈΠ΄Π΅Ρ‚ ΠΏΠΎ ΠΏΠ»Π°Π½Ρƒ. Он ΠΈΠΌΠ΅Π΅Ρ‚ всС свойства, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π² ΠΏΠ»Π°Π½Π΅, ΠΈ Π²Π΅Π΄Π΅Ρ‚ сСбя ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ класс — это ΠΏΠ»Π°Π½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΌΡ‹ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ машинС. Класс Β«ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒΒ» содСрТит Ρ‚Π°ΠΊΠΈΠ΅ свойства, ΠΊΠ°ΠΊ ΠΌΠ°Ρ€ΠΊΠ°, модСль, Ρ†Π²Π΅Ρ‚, Ρ‚ΠΎΠΏΠ»ΠΈΠ²ΠΎ ΠΈ Ρ‚. Π”. Он Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠ°ΠΊ start (), halt (), drift (), ускорСниС () ΠΈ turn ().Π’ΠΎΠ³Π΄Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Hyundai Verna ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ свойства.

ΠΌΠ°Ρ€ΠΊΠ°: Β«HyundaiΒ»

модСль: Β«Π’Π΅Ρ€Π½Π°Β»

Ρ†Π²Π΅Ρ‚: Β«Π§Π΅Ρ€Π½Ρ‹ΠΉΒ»

Ρ‚ΠΎΠΏΠ»ΠΈΠ²ΠΎ: Β«Π”ΠΈΠ·Π΅Π»ΡŒΒ»

Π—Π΄Π΅ΡΡŒ это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса Car, ΠΈ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°Π·Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Β«car1Β» ΠΈΠ»ΠΈ Β«blackvernaΒ».

 >>> класс ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ:
          def __init __ (я, ΠΌΠ°Ρ€ΠΊΠ°, модСль, Ρ†Π²Π΅Ρ‚, Ρ‚ΠΎΠΏΠ»ΠΈΠ²ΠΎ):
                  self.brand = Π±Ρ€Π΅Π½Π΄
                  self.model = модСль
                  self.color = Ρ†Π²Π΅Ρ‚
                  я.Ρ‚ΠΎΠΏΠ»ΠΈΠ²ΠΎ = Ρ‚ΠΎΠΏΠ»ΠΈΠ²ΠΎ
           def start (self):
                  ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ
           def halt (self):
                  ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ
           def Π΄Ρ€Π΅ΠΉΡ„ (сам):
                  ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ
           def ускорСниС (ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ):
                  ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ
           def Turn (self):
                  ΠΏΡ€ΠΎΠΉΡ‚ΠΈ 

Learn: Python мноТСствСнноС наслСдованиС — Python MRO (порядок Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²)

4. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Python

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Python — это экзСмпляр класса.Π£ Π½Π΅Π³ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ свойства ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. ΠœΡ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ создали класс Car. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ создадим ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ blackverna ΠΈΠ· этого класса. ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ класс для создания любого количСства ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

 >>> blackverna = ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ ('Hyundai', 'Verna', 'Π§Π΅Ρ€Π½Ρ‹ΠΉ', 'Π”ΠΈΠ·Π΅Π»ΡŒ') 

Π­Ρ‚ΠΎ создаСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Car, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ blackverna, с Π²Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚Ρ‹ΠΌΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ. ΠœΡ‹ сдСлали это, Π²Ρ‹Π·Π²Π°Π² класс ΠΊΠ°ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ (синтаксис). Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ обратимся ΠΊ Π΅Π³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρƒ Ρ‚ΠΎΠΏΠ»ΠΈΠ²Π°. Для этого ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ‚ΠΎΡ‡ΠΊΠΈ Π² Python (.).

 >>> blackverna.fuel 

Β«Π”ΠΈΠ·Π΅Π»ΡŒΒ»

Learn: Python Operator Overloading and Python Magic Methods

5. ΠœΠ΅Ρ‚ΠΎΠ΄ Python

ΠœΠ΅Ρ‚ΠΎΠ΄ Python ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Python, Π½ΠΎ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. И Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² класс. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π² этом классС Car Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΏΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², Π° ΠΈΠΌΠ΅Π½Π½ΠΎ start (), halt (), drift (), speedup () ΠΈ turn (). Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅ΠΌ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ pass Π² ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ…, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π΅Ρ‰Π΅ Π½Π΅ Ρ€Π΅ΡˆΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ.Π”Π°Π²Π°ΠΉΡ‚Π΅ Π²Ρ‹Π·ΠΎΠ²Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ Python drift () Π² blackverna.

 >>> blackverna.drift ()
>>> 

Как ΠΈ функция, ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠΌΠ΅Π΅Ρ‚ имя, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π°. Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ для этого ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

 >>> class ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅:
        def __init __ (сам):
                ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ
        def printhello (я, имя):
                print (f "ΠŸΡ€ΠΈΠ²Π΅Ρ‚, {имя}")
                Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ имя
>>> obj = Try ()
>>> ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.printhello ('Аюши') 

ΠŸΡ€ΠΈΠ²Π΅Ρ‚, Аюши

β€˜Ayushi’

Π—Π΄Π΅ΡΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ printhello () ΠΈΠΌΠ΅Π΅Ρ‚ имя, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

  • Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎΠ΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ — Когда ΠΌΡ‹ Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ класс Car, ΠΌΡ‹ Π½Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π»ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Β«selfΒ» пяти ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ класса. Π­Ρ‚ΠΎ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ, Π½ΠΎ ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ drift () Π² blackverna, ΠΎΠ½ Π²Ρ‹Π΄Π°Π²Π°Π» ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ:

Traceback (послСдний звонок послСдний):

Π€Π°ΠΉΠ» «», строка 1, Π²

blackverna.Π΄Ρ€ΠΈΡ„Ρ‚ ()

TypeError: drift () ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ 0 ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Π½ΠΎ Π΄Π°Π½ΠΎ 1

Π˜ΡΡ…ΠΎΠ΄Ρ ΠΈΠ· этой ошибки, ΠΌΡ‹ ΠΏΡ€ΠΈΡˆΠ»ΠΈ ΠΊ Π²Ρ‹Π²ΠΎΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ Π²ΠΎ всСх этих ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… отсутствуСт ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Β«selfΒ». Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π΅Π³ΠΎ ΠΊΠΎ всСм ΠΈ снова Π²Ρ‹Π·Π²Π°Π»ΠΈ drift () Π² blackverna. Π­Ρ‚ΠΎ всС Π΅Ρ‰Π΅ Π½Π΅ сработало.

НаконСц, ΠΌΡ‹ снова объявили ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ blackverna, Π° Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π·Π²Π°Π»ΠΈ для Π½Π΅Π³ΠΎ drift (). На этот Ρ€Π°Π· всС сработало Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Π‘Π΄Π΅Π»Π°ΠΉΡ‚Π΅ ΠΈΠ· этой ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅.

Learn: Python Counter — Python Collections Type

6.__init __ ()

Если Π²Ρ‹ Π·Π½Π°ΠΊΠΎΠΌΡ‹ с Π»ΡŽΠ±Ρ‹ΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ языком, Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ ΠΎ конструкторах. Π’ C ++ конструктор — это ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ функция с Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΈ класс, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² класса. Π—Π΄Π΅ΡΡŒ Π² Python __init __ () — это ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ для этой Ρ†Π΅Π»ΠΈ. Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° Ρ‡Π°ΡΡ‚ΡŒ __init__ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ класса.

 >>> класс Π–ΠΈΠ²ΠΎΡ‚Π½ΠΎΠ΅:
       def __init __ (я, вид, пол):
                 self.species = разновидности
                 я.пол = пол
>>> ΠΏΡƒΡˆΠΈΡΡ‚Ρ‹ΠΉ = Π–ΠΈΠ²ΠΎΡ‚Π½ΠΎΠ΅ ('Π‘ΠΎΠ±Π°ΠΊΠ°', 'Π‘Π°ΠΌΠΊΠ°')
>>> ΠΏΡƒΡˆΠΈΡΡ‚Ρ‹ΠΉ.Π³Π΅Π½Π΄Π΅Ρ€ 

«ЖСнский»

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ использовали __init__ для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² Β«Π²ΠΈΠ΄Β» ΠΈ Β«ΠΏΠΎΠ»Β».

Однако Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Ссли ΠΎΠ½Π° Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½Π° Π² вашСм ΠΊΠΎΠ΄Π΅.

 >>> класс Try2:
        def ΠΏΡ€ΠΈΠ²Π΅Ρ‚ (сам):
            print ("ΠŸΡ€ΠΈΠ²Π΅Ρ‚")
>>> obj2 = Try2 ()
>>> obj2.hello () 

Init — это магичСский ΠΌΠ΅Ρ‚ΠΎΠ΄, поэтому ΠΏΠ΅Ρ€Π΅Π΄ ΠΈ послС Π½Π΅Π³ΠΎ стоит Π΄Π²ΠΎΠΉΠ½ΠΎΠ΅ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅.ΠœΡ‹ ΡƒΠ·Π½Π°Π΅ΠΌ ΠΎ магичСских ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ этой ΡΡ‚Π°Ρ‚ΡŒΠΈ.

ΠžΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅: Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ Π² Python

7. БобствСнныС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Python

Π”ΠΎ сих ΠΏΠΎΡ€ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ использовали ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Β«selfΒ» Π²ΠΎ всСх ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ…, Π΄Π°ΠΆΠ΅ Π² __init __ (). Π­Ρ‚ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρƒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ. Π­Ρ‚ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово this Π² Java. Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

 >>> класс Π€Ρ€ΡƒΠΊΡ‚Ρ‹:
        def printstate (сСбя, состояниС):
               print (f "АпСльсин {состояниС}")
>>> апСльсин = Π€Ρ€ΡƒΠΊΡ‚Ρ‹ ()
>>> ΠΎΡ€Π°Π½ΠΆΠ΅Π²Ρ‹ΠΉ.printstate ("спСлый") 

АпСльсин спСлый

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Β«selfΒ» сказал ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΡ€Π°Π½ΠΆΠ΅Π²Ρ‹ΠΌ. Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

 >>> class Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:
            def __init __ (я, Ρ„ΠΈΠ·, химия, ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ°):
                          self.phy = phy
                          self.chem = chem
                          self.math = ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ°
            def printavg (сам):
                          print (f "Π‘Ρ€Π΅Π΄Π½Π΅Π΅ = {(self.phy + self.chem + self.math) / 3} ")
>>> rollone = Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ (86,95,85)
>>> rollone.chem 

95

 >>> rollone.printavg () 

Π‘Ρ€Π΅Π΄Π½Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = 88,66666666666667

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

 >>> класс LED:
        def __init __ (сам):
                  self.lit = Π›ΠΎΠΆΡŒ
>>> obj = LED ()
>>> obj.lit 

Π›ΠΎΠΆΡŒ

НаконСц, ΠΌΡ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π±Ρ‹ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ «я» Π½Π΅ являСтся ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом.ВмСсто Π½Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ любоС имя, ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ это Π½Π΅ Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово ΠΈ ΡΠΎΠ±Π»ΡŽΠ΄Π°ΡŽΡ‚ΡΡ ΠΏΡ€Π°Π²ΠΈΠ»Π° имСнования ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ².

 >>> класс Try3:
         def __init __ (thisobj, имя):
                   thisobj.name = имя
>>> obj1 = Try3 ('Π›Π΅Π²')
>>> obj1.name 

Β«Π›Π΅Π²Β»

Π­Ρ‚ΠΎ всС ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ Python Self

Learn: ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ сравнСния Π² Python с синтаксисом ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ

Π•ΡΡ‚ΡŒ Π΅Ρ‰Π΅ сомнСния Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ Python? ΠŸΡ€ΠΎΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅, поТалуйста.

8. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Python ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄

ΠœΡ‹ Π΄ΡƒΠΌΠ°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΊ настоящСму Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΡƒΠ·Π½Π°Π»ΠΈ достаточно ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ…, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΡ… с функциями. Ѐункция отличаСтся ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

  1. Пока для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° вызываСтся ΠΌΠ΅Ρ‚ΠΎΠ΄, функция являСтся ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠΉ.
  2. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΎΠ½ связан с Π½ΠΈΠΌ. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ Π²Π½ΡƒΡ‚Ρ€ΠΈ класса ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π½ΠΈΠΌΠΈ.
  3. ΠœΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ состояниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°; функция Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ пСрСдаСтся Π΅ΠΉ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°.ΠœΡ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ это Π² нашСм руководствС ΠΏΠΎ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°ΠΌ.

9. ΠœΠ°Π³ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Python

Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° конструкция, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ прСдоставляСт Π½Π°ΠΌ Python, — это магичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Python. Π’Π°ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ обозначаСтся Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄ Π΅Π³ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΠΈ послС Π½Π΅Π³ΠΎ. Π”Ρ€ΡƒΠ³ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ магичСского ΠΌΠ΅Ρ‚ΠΎΠ΄Π° — Π΄Π°Π½Π΄Π΅Ρ€.

ΠœΠ°Π³ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ нСльзя ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄. __init __ () — Π½Π΅ СдинствСнный Π²ΠΎΠ»ΡˆΠ΅Π±Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² Python; ΠΌΡ‹ ΡƒΠ·Π½Π°Π΅ΠΌ ΠΎΠ± этом большС Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ ΡƒΡ€ΠΎΠΊΠ΅.Но ΠΏΠΎΠΊΠ° ΠΌΡ‹ просто Π½Π°Π·ΠΎΠ²Π΅ΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· магичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²:

__Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ__ для +

__sub__ для —

__mul__ для *

__and__ для &

Однако список Π½Π° этом Π½Π΅ заканчиваСтся.

Learn: Π Π°Π±ΠΎΡ‚Π° Π² Python — возмоТности ΠΊΠ°Ρ€ΡŒΠ΅Ρ€Π½ΠΎΠ³ΠΎ роста Π² Python

Π­Ρ‚ΠΎ всС ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ Python.

10. Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅: ΠΌΠ΅Ρ‚ΠΎΠ΄ Python

ΠœΠ΅Ρ‚ΠΎΠ΄ Python, ΠΊΠ°ΠΊΠΈΠΌ ΠΌΡ‹ Π΅Π³ΠΎ Π·Π½Π°Π΅ΠΌ, ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ Ρ„Π°ΠΊΡ‚Π°, Ρ‡Ρ‚ΠΎ ΠΎΠ½ связан с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ.Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ __init__ ΠΈ self-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π΅Π³ΠΎ Π½Π°Π·Π²Π°Ρ‚ΡŒ. НС Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ обсуТдали Π² Π½Π°ΡˆΠΈΡ… руководствах ΠΏΠΎ . Python пСрСчисляСт , ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ, , строк, , устанавливаСт ΠΈ словарСй Π² python . Если Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ сомнСния ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Python, спроситС.

НомСр ссылки

.

Π‘Ρ‚Ρ€ΠΎΠΊΠΎΠ²Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Python

Python ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π°Π±ΠΎΡ€ встроСнных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для строк.

ΠœΠ΅Ρ‚ΠΎΠ΄ ОписаниС
capitalize () ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ
символ Π² Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ рСгистр
casefold () ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ строку Π²
Π½ΠΈΠΆΠ½ΠΈΠΉ рСгистр
ΠΏΠΎ Ρ†Π΅Π½Ρ‚Ρ€Ρƒ () Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠΎ Ρ†Π΅Π½Ρ‚Ρ€Ρƒ
строка
count () Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ количСство
Ρ€Π°Π· ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ встрСчаСтся Π² строкС
encode () Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ
вСрсия строки
endwith () Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ true, Ссли
строка заканчиваСтся ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ
expandtabs () УстанавливаСт
Ρ€Π°Π·ΠΌΠ΅Ρ€ табуляции строки
find () Π˜Ρ‰Π΅Ρ‚ Π² строкС
ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ, Π³Π΄Π΅ ΠΎΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ
Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ () Π£ΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹
значСния Π² строкС
format_map () Π£ΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹
значСния Π² строкС
index () Π˜Ρ‰Π΅Ρ‚ строку
для ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ значСния ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ, Π³Π΄Π΅ ΠΎΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ
isalnum () Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ True, Ссли всС
символы Π² строкС Π±ΡƒΠΊΠ²Π΅Π½Π½ΠΎ-Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π΅
isalpha () Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ True, Ссли всС
символы Π² строкС находятся Π² Π°Π»Ρ„Π°Π²ΠΈΡ‚Π΅
isdecimal () Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ True, Ссли всС
символы Π² строкС дСсятичныС
isdigit () Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ True, Ссли всС
символы Π² строкС — это Ρ†ΠΈΡ„Ρ€Ρ‹
isidentifier () Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ True, Ссли
строка — это ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€
islower () Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ True, Ссли всС
символы Π² строкС строчныС
isnumeric () Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ True, Ссли
всС символы Π² строкС числовыС
isprintable () Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ True, Ссли
всС символы Π² строкС ΠΏΠ΅Ρ‡Π°Ρ‚Π°ΡŽΡ‚ΡΡ
isspace () Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ True, Ссли всС
символы Π² строкС — это ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹
Π½Π°Π·Π²Π°Π½ΠΈΠ΅ () Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ True, Ссли строка соотвСтствуСт ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ
Π½Π°Π·Π²Π°Π½ΠΈΠ΅
isupper () Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ True, Ссли всС
символы Π² строкС прописныС
join () ΠŸΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ элСмСнты
итСрация Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° строки
ljust () Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π²Ρ‹Ρ€ΠΎΠ²Π½Π΅Π½Π½Ρ‹ΠΉ ΠΏΠΎ Π»Π΅Π²ΠΎΠΌΡƒ ΠΊΡ€Π°ΡŽ
вСрсия строки
lower () ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ строку Π²
Π½ΠΈΠΆΠ½ΠΈΠΉ рСгистр
lstrip () Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π»Π΅Π²ΡƒΡŽ ΠΎΠ±Ρ€Π΅Π·ΠΊΡƒ
вСрсия строки
maketrans () Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚
Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΎΠ² для использования Π² ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π°Ρ…
partition () Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ
Π³Π΄Π΅ струна Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π° Π½Π° Ρ‚Ρ€ΠΈ части
replace () Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ строку
Π³Π΄Π΅ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ замСняСтся ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ
rfind () Π˜Ρ‰Π΅Ρ‚ строку для
ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ послСднюю ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ, Π³Π΄Π΅ ΠΎΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ
rindex () Π˜Ρ‰Π΅Ρ‚ Π² строкС
ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ послСднюю ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ, Π³Π΄Π΅ ΠΎΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ
rjust () Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ ΠΏΡ€Π°Π²ΠΎΠΌΡƒ ΠΊΡ€Π°ΡŽ
вСрсия строки
rpartition () Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ
Π³Π΄Π΅ струна Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π° Π½Π° Ρ‚Ρ€ΠΈ части
rsplit () Π Π°Π·Π±ΠΈΠ²Π°Π΅Ρ‚ строку Π½Π°
ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ список
rstrip () Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΡ€Π°Π²ΡƒΡŽ ΠΎΠ±ΡˆΠΈΠ²ΠΊΡƒ
вСрсия строки
split () Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ строки Π½Π°
ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ список
splitlines () Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ строки
ΠΏΡ€ΠΈ пСрСносС строки ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ список
начинаСтся с () Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ истину, Ссли
строка начинаСтся с ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ значСния
strip () Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±Ρ€Π΅Π·Π°Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ строки
Бвоп-кСйс () Бвоп-кСйс, ниТний
рСгистр становится прописным ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚
Π½Π°Π·Π²Π°Π½ΠΈΠ΅ () ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ΅
символ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ слова Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ рСгистрС
translate () Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚
пСрСвСдСнная строка
Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ () ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ строку
Π² Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ рСгистр
zfill () ЗаполняСт строку
ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ количСство 0 Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² Π½Π°Ρ‡Π°Π»Π΅

.

ΠœΠ°Π³ΠΈΡ‡Π΅ΡΠΊΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π² Python

  • ΠŸΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π° нас