🐍 Укус ΠΏΠΈΡ‚ΠΎΠ½Π° 🐍
2.48K subscribers
1.06K photos
23 videos
285 links
🐍 Канал ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° языкС Python. ВСматичСскиС ΡƒΡ€ΠΎΠΊΠΈ ΠΈ Π»Π°ΠΉΡ„Ρ…Π°ΠΊΠΈ.

πŸ‘½ Админ - @it_dashka
πŸ”Š ΠšΡƒΠΏΠΈΡ‚ΡŒ Ρ€Π΅ΠΊΠ»Π°ΠΌΡƒ: https://telega.in/c/byteofpython

πŸ‘‰ Π§Π°Ρ‚: @abyteofpython
πŸ‘‰ ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ с Π΄Ρ€ΡƒΠ·ΡŒΡΠΌΠΈ: @byteofpython
Download Telegram
Π§Ρ‚ΠΎ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ ΠΊΠΎΠ΄?
πŸ‘©β€πŸ’» enumerate β€” индСксы Π±Π΅Π· лишнСго ΠΊΠΎΠ΄Π°

enumerate() добавляСт индСкс ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Π§Π°Ρ‰Π΅ всСго ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Ρ†ΠΈΠΊΠ»Π°Ρ… вмСсто range(len(...)).


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

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

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

1 яблоко
2 Π±Π°Π½Π°Π½
3 Π³Ρ€ΡƒΡˆΠ°


πŸ“Œ Код становится Ρ‡ΠΈΡ‰Π΅ ΠΈ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠ΅Π΅, особСнно ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ со списками ΠΈ строками
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ‘©β€πŸ’» ΠœΡƒΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ 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) ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

πŸ“Œ ПониманиС ΠΌΡƒΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ β€” ΠΊΠ»ΡŽΡ‡ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π»ΠΎΠΌΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Β«ΠΏΠΎ ссылкС» ΠΈ ΠΏΠΈΡΠ°Ρ‚ΡŒ прСдсказуСмый ΠΊΠΎΠ΄
Please open Telegram to view this post
VIEW IN TELEGRAM
Π§Ρ‚ΠΎ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ ΠΊΠΎΠ΄?
πŸ‘©β€πŸ’» Как 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 Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ: присваиваниС Π½Π΅ ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅, Π° лишь создаёт Π½ΠΎΠ²ΡƒΡŽ ссылку.
ΠžΡ‚ΡΡŽΠ΄Π° Ρ€ΠΎΠΆΠ΄Π°ΡŽΡ‚ΡΡ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Β«Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹Ρ…Β» Π±Π°Π³ΠΎΠ² Ρƒ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ²
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ‘©β€πŸ’» Замыкания (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 ΠΊ "питонистому" ΠΊΠΎΠ΄Ρƒ
Please open Telegram to view this post
VIEW IN TELEGRAM
Π§Ρ‚ΠΎ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ ΠΊΠΎΠ΄?
πŸ‘©β€πŸ’» Как 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 ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² ΠΈΠΌΡ‘Π½ ΠΈ Π±Π°Π³ΠΎΠ² ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с функциями ΠΈ замыканиями
Please open Telegram to view this post
VIEW IN TELEGRAM