π Π£ΠΊΡΡ ΠΏΠΈΡΠΎΠ½Π° π
ΠΡΠΊΡΡΡΡ Π² Telegram
π ΠΠ°Π½Π°Π» ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° ΡΠ·ΡΠΊΠ΅ Python. Π’Π΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΠΎΠΊΠΈ ΠΈ Π»Π°ΠΉΡΡ Π°ΠΊΠΈ. π½ ΠΠ΄ΠΌΠΈΠ½ - @tg_adminisrator π ΠΡΠΏΠΈΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΡ: https://telega.in/c/byteofpython π Π§Π°Ρ: @abyteofpython π ΠΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ Ρ Π΄ΡΡΠ·ΡΡΠΌΠΈ: @byteofpython
ΠΠΎΠ»ΡΡΠ΅2 334
ΠΠΎΠ΄ΠΏΠΈΡΡΠΈΠΊΠΈ
ΠΠ΅Ρ Π΄Π°Π½Π½ΡΡ
24 ΡΠ°ΡΠ°
-117 Π΄Π½Π΅ΠΉ
-3730 Π΄Π½Π΅ΠΉ
ΠΡΡ
ΠΈΠ² ΠΏΠΎΡΡΠΎΠ²
π₯ Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅
slots Π² Python ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΎΠ½ Π½ΡΠΆΠ΅Π½?
slots ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² ΠΊΠ»Π°ΡΡΠ°, ΡΠΊΠΎΠ½ΠΎΠΌΡ ΠΏΠ°ΠΌΡΡΡ Π·Π° ΡΡΠ΅Ρ ΠΎΡΠΊΠ°Π·Π° ΠΎΡ dict.
β
ΠΠ±ΡΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ Π±Π΅Π· slots:
class Person:
def init(self, name, age):
self.name = name
self.age = age
p = Person("Alice", 25)
p.city = "New York" # ΠΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π½ΠΎΠ²ΡΠΉ Π°ΡΡΠΈΠ±ΡΡ
β
ΠΠ»Π°ΡΡ Ρ slots:
class Person:
slots = ("name", "age") # Π Π°Π·ΡΠ΅ΡΠ΅Π½Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΈ Π°ΡΡΠΈΠ±ΡΡΡ
def init(self, name, age):
self.name = name
self.age = age
p = Person("Alice", 25)
p.city = "New York" # β AttributeError: 'Person' object has no attribute 'city'
β ΠΠ»ΡΡΡ slots
β’ ΠΠΊΠΎΠ½ΠΎΠΌΠΈΡ ΠΏΠ°ΠΌΡΡΡ (Π½Π΅ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ dict)
β’ Π£ΡΠΊΠΎΡΡΠ΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΊ Π°ΡΡΠΈΠ±ΡΡΠ°ΠΌ
β’ ΠΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π»ΠΈΡΠ½ΠΈΡ
Π°ΡΡΠΈΠ±ΡΡΠΎΠ²
β‘οΈ ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ slots, Π΅ΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ΄Π½ΠΎΡΠΈΠΏΠ½ΡΡ
ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈ Π²Π°ΠΆΠ½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ!Π§ΡΠΎ Π΄Π΅Π»Π°Π΅Ρ
@property Π² Python?
@property ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° Π² ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ Π½Π΅ΠΌΡ Π±Π΅Π· ΡΠΊΠΎΠ±ΠΎΠΊ.
ΠΡΠΈΠΌΠ΅Ρ:
class Person:
def init(self, name):
self._name = name
@property
def name(self):
return self._name
p = Person("Alice")
print(p.name) # Alice (ΠΊΠ°ΠΊ Π°ΡΡΠΈΠ±ΡΡ, Π½ΠΎ Ρ Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ)
ΠΠ°ΡΠ΅ΠΌ Π½ΡΠΆΠ½ΠΎ?
β’ ΠΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΊΠ°ΠΊ Π°ΡΡΠΈΠ±ΡΡΡ
β’ ΠΠ°ΡΠΈΡΠ°Π΅Ρ Π΄Π°Π½Π½ΡΠ΅ ΠΎΡ ΠΏΡΡΠΌΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ
β’ ΠΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π»ΠΎΠ³ΠΈΠΊΡ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°
β‘οΈ @property Π΄Π΅Π»Π°Π΅Ρ ΠΊΠΎΠ΄ ΡΠΈΡΠ΅ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π΅Π΅, ΡΠ»ΡΡΡΠ°Ρ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΡΡΠΈΡ!ΠΠ΅ΠΌΠ½ΠΎΠΆΠΊΠΎ ΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ set Π² Python
ΠΠΎΡΠ΅ΠΌΡ
set Π² Python Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΡΠ°ΠΊΠΎΠΉ Ρ
Π°ΠΎΡΠΈΡΠ½ΡΠΉ, ΠΊΠ°ΠΊ ΠΊΠ°ΠΆΠ΅ΡΡΡ? Π Π°Π·Π±ΠΈΡΠ°Π΅ΠΌΡΡ, ΠΊΠ°ΠΊ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΡΡΡΡΠΎΠ΅Π½Ρ ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ
ΡΡ-ΡΠ°Π±Π»ΠΈΡΡ ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΈΠ½ΠΎΠ³Π΄Π° ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΡΠΌ.βοΈ Π Π°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ
is ΠΈ == Π² Python
πΉ == (ΡΠ°Π²Π΅Π½ΡΡΠ²ΠΎ) ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ, ΡΠ°Π²Π½Ρ Π»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²:
a = [1, 2, 3]
b = [1, 2, 3]
print(a == b) # True (Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠ΅)
πΉ is (ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎΡΡΡ) ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡ Π² ΠΏΠ°ΠΌΡΡΠΈ:
print(a is b) # False (ΡΠ°Π·Π½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ)
πΉ ΠΠΎ Π΄Π»Ρ immutable-ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, int, str, tuple) Python ΠΊΠ΅ΡΠΈΡΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ:
x = 256
y = 256
print(x is y) # True (ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡΠ΅ΠΊΡ)
β
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ == Π΄Π»Ρ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΈ is Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ, ΡΡΡΠ»Π°ΡΡΡΡ Π»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡΠ΅ΠΊΡ Π² ΠΏΠ°ΠΌΡΡΠΈ!π₯
*args ΠΈ **kwargs Π² Python
πΉ *args β ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½Π½ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΊΠ°ΠΊ ΠΊΠΎΡΡΠ΅ΠΆ:
def add_numbers(*args):
return sum(args)
print(add_numbers(1, 2, 3)) # 6
πΉ **kwargs β ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΊΠ°ΠΊ ΡΠ»ΠΎΠ²Π°ΡΡ:
def greet(**kwargs):
print(kwargs)
greet(name="Alice", age=25) # {'name': 'Alice', 'age': 25}
β
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ *args Π΄Π»Ρ ΡΠΏΠΈΡΠΊΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΈ **kwargs Π΄Π»Ρ Π³ΠΈΠ±ΠΊΠΈΡ
ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²!π₯ lambda β ΠΊΠΎΡΠΎΡΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π² Python
lambda β ΡΡΠΎ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π² ΠΎΠ΄Π½Ρ ΡΡΡΠΎΠΊΡ ΠΈ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ def. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ°ΠΌ, Π³Π΄Π΅ Π½ΡΠΆΠ½Π° ΠΏΡΠΎΡΡΠ°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π±Π΅Π· ΠΈΠΌΠ΅Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ.
β
ΠΡΠΈΠΌΠ΅Ρ (ΠΎΠ±ΡΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ vs. lambda):
def square(x):
return x ** 2
square_lambda = lambda x: x ** 2
print(square(5)) # 25
print(square_lambda(5)) # 25
πΉ ΠΠ΄Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ?
1οΈβ£ map() β ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊ ΡΠΏΠΈΡΠΊΡ
nums = [1, 2, 3, 4]
squared = list(map(lambda x: x ** 2, nums))
print(squared) # [1, 4, 9, 16]
2οΈβ£ filter() β Π€ΠΈΠ»ΡΡΡΠ°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ
even = list(filter(lambda x: x % 2 == 0, nums))
print(even) # [2, 4]
3οΈβ£ sorted() β Π‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΠΏΠΎ ΠΊΠ»ΡΡΡ
pairs = [(1, 'one'), (3, 'three'), (2, 'two')]
pairs.sort(key=lambda x: x[0])
print(pairs) # [(1, 'one'), (2, 'two'), (3, 'three')]
β‘οΈ ΠΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ lambda?
β’ ΠΠΎΠ³Π΄Π° ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΎΡΡΠ°Ρ ΠΈ ΠΊΠΎΡΠΎΡΠΊΠ°Ρ
β’ ΠΠΎΠ³Π΄Π° ΠΎΠ½Π° Π½ΡΠΆΠ½Π° ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·
β ΠΠ΅ ΡΡΠΎΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ lambda, Π΅ΡΠ»ΠΈ Π»ΠΎΠ³ΠΈΠΊΠ° ΡΠ»ΠΎΠΆΠ½Π°Ρ β Π»ΡΡΡΠ΅ ΠΏΠΈΡΠ°ΡΡ def.