ru
Feedback
🐍 Укус ΠΏΠΈΡ‚ΠΎΠ½Π° 🐍

🐍 Укус ΠΏΠΈΡ‚ΠΎΠ½Π° 🐍

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π² Telegram

🐍 Канал ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° языкС Python. ВСматичСскиС ΡƒΡ€ΠΎΠΊΠΈ ΠΈ Π»Π°ΠΉΡ„Ρ…Π°ΠΊΠΈ. πŸ‘½ Админ - @tg_adminisrator πŸ”Š ΠšΡƒΠΏΠΈΡ‚ΡŒ Ρ€Π΅ΠΊΠ»Π°ΠΌΡƒ: https://telega.in/c/byteofpython πŸ‘‰ Π§Π°Ρ‚: @abyteofpython πŸ‘‰ ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ с Π΄Ρ€ΡƒΠ·ΡŒΡΠΌΠΈ: @byteofpython

Π‘ΠΎΠ»ΡŒΡˆΠ΅
2 334
ΠŸΠΎΠ΄ΠΏΠΈΡΡ‡ΠΈΠΊΠΈ
НСт Π΄Π°Π½Π½Ρ‹Ρ…24 часа
-117 Π΄Π½Π΅ΠΉ
-3730 дСнь
Архив постов
photo content

πŸ‘©β€πŸ’» Как Python ΠΈΡ‰Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ (LEGB Rule) Когда Ρ‚Ρ‹ ΠΎΠ±Ρ€Π°Ρ‰Π°Π΅ΡˆΡŒΡΡ ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Python ΠΈΡ‰Π΅Ρ‚ Π΅Ρ‘ Π½Π΅ Ρ…Π°ΠΎΡ‚ΠΈΡ‡Π½ΠΎ, Π° строго ΠΏΠΎ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ΅ LEGB: Local β†’ Enclosing β†’ Global β†’ Built-in ➑️ ΠŸΡ€ΠΈΠΌΠ΅Ρ€:
x = "глобальная"

def outer():
    x = "Π·Π°ΠΌΡ‹ΠΊΠ°Π½ΠΈΠ΅"
    def inner():
        x = "локальная"
        print(x)
    inner()

outer()

локальная
Если ΡƒΠ±Ρ€Π°Ρ‚ΡŒ x = "локальная", Python Π²ΠΎΠ·ΡŒΠΌΡ‘Ρ‚ x ΠΈΠ· блиТайшСй внСшнСй области β€” "Π·Π°ΠΌΡ‹ΠΊΠ°Π½ΠΈΠ΅". Если ΠΈ Ρ‚Π°ΠΌ Π½Π΅Ρ‚ β€” ΠΈΠ· глобальной.
πŸ“Œ ПониманиС LEGB ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² ΠΈΠΌΡ‘Π½ ΠΈ Π±Π°Π³ΠΎΠ² ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с функциями ΠΈ замыканиями

ΠžΡ‚Π²Π΅Ρ‚:
Anonymous voting

Π§Ρ‚ΠΎ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ ΠΊΠΎΠ΄?
Π§Ρ‚ΠΎ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ ΠΊΠΎΠ΄?

photo content

πŸ‘©β€πŸ’» Замыкания (closures) β€” Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ помнят контСкст Π’ Python функция ΠΌΠΎΠΆΠ΅Ρ‚ Β«Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒΒ» значСния ΠΈΠ· внСшнСй области, Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ½Π° ΡƒΠΆΠ΅ Π½Π΅ сущСствуСт.
Π­Ρ‚ΠΎ ΠΈ Π΅ΡΡ‚ΡŒ Π·Π°ΠΌΡ‹ΠΊΠ°Π½ΠΈΠ΅ β€” ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ инструмСнт для инкапсуляции Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π±Π΅Π· классов
➑️ ΠŸΡ€ΠΈΠΌΠ΅Ρ€:
def make_multiplier(factor):
    def multiply(x):
        return x * factor
    return multiply

double = make_multiplier(2)
print(double(5))  # 10
multiply ΠΏΠΎΠΌΠ½ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ factor, Π΄Π°ΠΆΠ΅ послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ make_multiplier. Π’ΠΎ Π΅ΡΡ‚ΡŒ double β€” это функция, Π·Π°ΠΌΠΊΠ½ΡƒΠ²ΡˆΠ°Ρ Π²Π½ΡƒΡ‚Ρ€ΠΈ сСбя factor = 2.
πŸ“Œ Замыкания Π»Π΅ΠΆΠ°Ρ‚ Π² основС Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ΠΎΠ², Ρ„Π°Π±Ρ€ΠΈΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ Π»Π΅Π½ΠΈΠ²Ρ‹Ρ… вычислСний. ПониманиС этой ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ β€” шаг ΠΎΡ‚ простого Python ΠΊ "питонистому" ΠΊΠΎΠ΄Ρƒ

πŸ‘©β€πŸ’» Как Python Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅: ссылки, Π° Π½Π΅ значСния Π’ Python ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ β€” это Π½Π΅ β€œΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ с данными”, Π° ΠΈΠΌΠ΅Π½Π°, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² памяти.
Когда Ρ‚Ρ‹ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡˆΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, создаётся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π° имя просто ссылаСтся Π½Π° Π½Π΅Π³ΠΎ.
➑️ ΠŸΡ€ΠΈΠΌΠ΅Ρ€:
x = [1, 2, 3]
y = x
y.append(4)

print(x)  # [1, 2, 3, 4]
print(x is y)  # True
x ΠΈ y ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ β€” измСнСния ΠΎΡ‚Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π² ΠΎΠ±ΠΎΠΈΡ…. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡƒΡŽ копию, Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ copy() ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ copy.
πŸ“Œ Π’ Python Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ: присваиваниС Π½Π΅ ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅, Π° лишь создаёт Π½ΠΎΠ²ΡƒΡŽ ссылку. ΠžΡ‚ΡΡŽΠ΄Π° Ρ€ΠΎΠΆΠ΄Π°ΡŽΡ‚ΡΡ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Β«Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹Ρ…Β» Π±Π°Π³ΠΎΠ² Ρƒ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ²

ΠžΡ‚Π²Π΅Ρ‚:
Anonymous voting

Π§Ρ‚ΠΎ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ ΠΊΠΎΠ΄?
Π§Ρ‚ΠΎ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ ΠΊΠΎΠ΄?

photo content

πŸ‘©β€πŸ’» ΠœΡƒΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ vs Π˜ΠΌΠΌΡƒΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π² Python Π’ Python ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ дСлятся Π½Π° измСняСмыС (mutable) ΠΈ нСизмСняСмыС (immutable).
Π­Ρ‚ΠΎ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚ β€” ΠΎΡ‚ Π½Π΅Π³ΠΎ зависят ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ списков, ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ ΠΈ Π΄Π°ΠΆΠ΅ ошибки с «копиями»
➑️ ΠŸΡ€ΠΈΠΌΠ΅Ρ€:
a = [1, 2, 3]
b = a
b.append(4)

print(a)  # [1, 2, 3, 4]
print(a is b)  # True
b Π½Π΅ копия, Π° ссылка Π½Π° Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² памяти. Π˜Π·ΠΌΠ΅Π½ΡΠ΅ΠΌΡ‹Π΅ Ρ‚ΠΈΠΏΡ‹ (list, dict, set) Π²Π΅Π΄ΡƒΡ‚ сСбя ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ. А Π²ΠΎΡ‚ нСизмСняСмыС (int, str, tuple) ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.
πŸ“Œ ПониманиС ΠΌΡƒΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ β€” ΠΊΠ»ΡŽΡ‡ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π»ΠΎΠΌΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Β«ΠΏΠΎ ссылкС» ΠΈ ΠΏΠΈΡΠ°Ρ‚ΡŒ прСдсказуСмый ΠΊΠΎΠ΄

πŸ‘©β€πŸ’» enumerate β€” индСксы Π±Π΅Π· лишнСго ΠΊΠΎΠ΄Π° enumerate() добавляСт индСкс ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.
Π§Π°Ρ‰Π΅ всСго ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Ρ†ΠΈΠΊΠ»Π°Ρ… вмСсто range(len(...)).
➑️ ΠŸΡ€ΠΈΠΌΠ΅Ρ€:
fruits = ["яблоко", "Π±Π°Π½Π°Π½", "Π³Ρ€ΡƒΡˆΠ°"]

for i, fruit in enumerate(fruits, start=1):
    print(i, fruit)

1 яблоко  
2 Π±Π°Π½Π°Π½  
3 Π³Ρ€ΡƒΡˆΠ°
πŸ“Œ Код становится Ρ‡ΠΈΡ‰Π΅ ΠΈ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠ΅Π΅, особСнно ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ со списками ΠΈ строками

ΠžΡ‚Π²Π΅Ρ‚:
Anonymous voting

Π§Ρ‚ΠΎ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ ΠΊΠΎΠ΄?
Π§Ρ‚ΠΎ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ ΠΊΠΎΠ΄?

❓ Π—Π°Ρ‡Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ get() Ρƒ словарСй Π² Python ΠΈ ΠΊΠΎΠ³Π΄Π° Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ? ΠœΠ΅Ρ‚ΠΎΠ΄ get() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ, Ссли ΠΎΠ½ сущСствуСт, ΠΈ бСзопасно Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Ссли ΠΊΠ»ΡŽΡ‡ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½. Π­Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ошибки ΠΏΡ€ΠΈ доступС ΠΊ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΊΠ»ΡŽΡ‡Π°ΠΌ. βœ…ΠŸΡ€ΠΈΠΌΠ΅Ρ€:
user = {"name": "Alice", "age": 25}

print(user.get("age"))          # ➜ 25
print(user.get("city", "N/A"))  # ➜ N/A
πŸ“ŒΠ’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ get() бСзопасно Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ "N/A", Ссли ΠΊΠ»ΡŽΡ‡ city отсутствуСт.
get() ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ· API, JSON, конфигурациями ΠΈΠ»ΠΈ Π±Π°Π·Π°ΠΌΠΈ, Π³Π΄Π΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠ»ΡŽΡ‡ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ. Π­Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠ΄ Π½Π°Π΄Ρ‘ΠΆΠ½Π΅Π΅ ΠΈ Ρ‡ΠΈΡ‰Π΅, Ρ‡Π΅ΠΌ использованиС прямого доступа Ρ‡Π΅Ρ€Π΅Π· []

photo content

πŸ‘©β€πŸ’» collections.Counter β€” подсчёт элСмСнтов Counter ΠΈΠ· модуля collections автоматичСски считаСт количСство Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΉ элСмСнтов Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ. ➑️ ΠŸΡ€ΠΈΠΌΠ΅Ρ€:
from collections import Counter

fruits = ["яблоко", "Π±Π°Π½Π°Π½", "яблоко", "Π³Ρ€ΡƒΡˆΠ°", "Π±Π°Π½Π°Π½", "яблоко"]
count = Counter(fruits)

print(count)          # Counter({'яблоко': 3, 'Π±Π°Π½Π°Π½': 2, 'Π³Ρ€ΡƒΡˆΠ°': 1})
print(count.most_common(1))  # [('яблоко', 3)]
πŸ“Œ Π£Π΄ΠΎΠ±Π½ΠΎ для Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π°Π½Π½Ρ‹Ρ…, статистики ΠΈ поиска самых частых элСмСнтов

ΠžΡ‚Π²Π΅Ρ‚:
Anonymous voting

Π§Ρ‚ΠΎ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ ΠΊΠΎΠ΄?
Π§Ρ‚ΠΎ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ ΠΊΠΎΠ΄?

photo content