π₯ Mutable vs Immutable Π² Python
Π Python Π²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ β ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΈ ΠΎΠ½ΠΈ Π΄Π΅Π»ΡΡΡΡ Π½Π° ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ (mutable) ΠΈ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ (immutable).
πΉ ΠΠ΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ (immutable): Π½Π΅Π»ΡΠ·Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ
β
πΉ ΠΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ (mutable): ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π±Π΅Π· ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
β
β οΈ ΠΠ°ΠΆΠ½ΡΠΉ Π½ΡΠ°Π½Ρ
ΠΠ΅ΡΠ΅Π΄Π°ΡΠ° ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π² ΡΡΠ½ΠΊΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΡΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌ:
β ΠΡΠ²ΠΎΠ΄:
Π Python Π²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ β ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΈ ΠΎΠ½ΠΈ Π΄Π΅Π»ΡΡΡΡ Π½Π° ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ (mutable) ΠΈ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ (immutable).
πΉ ΠΠ΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ (immutable): Π½Π΅Π»ΡΠ·Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ
β
int
, float
, str
, tuple
, frozenset
x = "hello"
x += " world" # Π‘ΠΎΠ·Π΄Π°Π΅ΡΡΡ Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, Π° Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΡΠ°ΡΡΠΉ
πΉ ΠΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ (mutable): ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π±Π΅Π· ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
β
list
, dict
, set
, bytearray
lst = [1, 2, 3]
lst.append(4) # Π‘ΠΏΠΈΡΠΎΠΊ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π² ΡΠΎΠΉ ΠΆΠ΅ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΏΠ°ΠΌΡΡΠΈ
β οΈ ΠΠ°ΠΆΠ½ΡΠΉ Π½ΡΠ°Π½Ρ
ΠΠ΅ΡΠ΅Π΄Π°ΡΠ° ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π² ΡΡΠ½ΠΊΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΡΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌ:
def modify_list(lst):
lst.append(99) # ΠΠ·ΠΌΠ΅Π½ΡΠ΅Ρ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ!
my_list = [1, 2, 3]
modify_list(my_list)
print(my_list) # [1, 2, 3, 99]
β ΠΡΠ²ΠΎΠ΄:
β’
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ tuple
, Π΅ΡΠ»ΠΈ Π΄Π°Π½Π½ΡΠ΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡΡ.β’
ΠΡΠ΄ΡΡΠ΅ ΠΎΡΡΠΎΡΠΎΠΆΠ½Ρ Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ Π² ΡΡΠ½ΠΊΡΠΈΠΈ.β’
ΠΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ .copy()
ΠΈΠ»ΠΈ deepcopy()
.βοΈ Π Π°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ
πΉ
πΉ
πΉ ΠΠΎ Π΄Π»Ρ immutable-ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,
β ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅
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
Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ, ΡΡΡΠ»Π°ΡΡΡΡ Π»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡΠ΅ΠΊΡ Π² ΠΏΠ°ΠΌΡΡΠΈ!β Π§ΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄
ΠΠ΅ΡΠΎΠ΄
β ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ:
Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ
new
Π² Python ΠΈ ΠΊΠΎΠ³Π΄Π° Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ?ΠΠ΅ΡΠΎΠ΄
new
ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΠΊΠ»Π°ΡΡΠ° ΠΏΠ΅ΡΠ΅Π΄ Π΅Π³ΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Π² init
. ΠΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΡΠ»ΡΡΠ°ΡΡ
, ΠΊΠΎΠ³Π΄Π° Π½ΡΠΆΠ½ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΠΈΠ½Π³Π»ΡΠΎΠ½Π°Ρ
ΠΈΠ»ΠΈ ΠΏΡΠΈ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ
ΡΠΈΠΏΠΎΠ² (int
, str
, tuple
).β ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ:
class Singleton:
_instance = None
def new(cls, *args, **kwargs):
if cls._instance is None:
cls._instance = super().new(cls)
return cls._instance
obj1 = Singleton()
obj2 = Singleton()
print(obj1 is obj2) # True (ΠΎΠ±Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ° β ΠΎΠ΄Π½Π° ΠΈ ΡΠ° ΠΆΠ΅ ΡΡΡΠ»ΠΊΠ°)
Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ
init
, new
ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΡΠ΅Ρ ΡΠ°ΠΌ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΠΎΠ»Π΅Π·Π΅Π½ Π΄Π»Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΡΠΈΡΠ»Π° ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² ΠΈ ΡΠ°Π±ΠΎΡΡ Ρ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΌΠΈ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ.π₯ Mutable vs Immutable Π² Python
Π Python Π²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ β ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΈ ΠΎΠ½ΠΈ Π΄Π΅Π»ΡΡΡΡ Π½Π° ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ (mutable) ΠΈ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ (immutable).
πΉ ΠΠ΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ (immutable): Π½Π΅Π»ΡΠ·Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ
β
πΉ ΠΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ (mutable): ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π±Π΅Π· ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
β
β οΈ ΠΠ°ΠΆΠ½ΡΠΉ Π½ΡΠ°Π½Ρ
ΠΠ΅ΡΠ΅Π΄Π°ΡΠ° ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π² ΡΡΠ½ΠΊΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΡΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌ:
β ΠΡΠ²ΠΎΠ΄:
Π Python Π²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ β ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΈ ΠΎΠ½ΠΈ Π΄Π΅Π»ΡΡΡΡ Π½Π° ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ (mutable) ΠΈ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ (immutable).
πΉ ΠΠ΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ (immutable): Π½Π΅Π»ΡΠ·Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ
β
int
, float
, str
, tuple
, frozenset
x = "hello"
x += " world" # Π‘ΠΎΠ·Π΄Π°Π΅ΡΡΡ Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, Π° Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΡΠ°ΡΡΠΉ
πΉ ΠΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ (mutable): ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π±Π΅Π· ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
β
list
, dict
, set
, bytearray
lst = [1, 2, 3]
lst.append(4) # Π‘ΠΏΠΈΡΠΎΠΊ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π² ΡΠΎΠΉ ΠΆΠ΅ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΏΠ°ΠΌΡΡΠΈ
β οΈ ΠΠ°ΠΆΠ½ΡΠΉ Π½ΡΠ°Π½Ρ
ΠΠ΅ΡΠ΅Π΄Π°ΡΠ° ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π² ΡΡΠ½ΠΊΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΡΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌ:
def modify_list(lst):
lst.append(99) # ΠΠ·ΠΌΠ΅Π½ΡΠ΅Ρ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ!
my_list = [1, 2, 3]
modify_list(my_list)
print(my_list) # [1, 2, 3, 99]
β ΠΡΠ²ΠΎΠ΄:
β’
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ tuple
, Π΅ΡΠ»ΠΈ Π΄Π°Π½Π½ΡΠ΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡΡ.β’
ΠΡΠ΄ΡΡΠ΅ ΠΎΡΡΠΎΡΠΎΠΆΠ½Ρ Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ Π² ΡΡΠ½ΠΊΡΠΈΠΈ.β’
ΠΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ .copy()
ΠΈΠ»ΠΈ deepcopy()
.βοΈ Π Π°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ
πΉ
πΉ
πΉ ΠΠΎ Π΄Π»Ρ immutable-ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,
β ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅
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
Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ, ΡΡΡΠ»Π°ΡΡΡΡ Π»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡΠ΅ΠΊΡ Π² ΠΏΠ°ΠΌΡΡΠΈ!β Π§ΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄
ΠΠ΅ΡΠΎΠ΄
β ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ:
Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ
new
Π² Python ΠΈ ΠΊΠΎΠ³Π΄Π° Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ?ΠΠ΅ΡΠΎΠ΄
new
ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΠΊΠ»Π°ΡΡΠ° ΠΏΠ΅ΡΠ΅Π΄ Π΅Π³ΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Π² init
. ΠΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΡΠ»ΡΡΠ°ΡΡ
, ΠΊΠΎΠ³Π΄Π° Π½ΡΠΆΠ½ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΠΈΠ½Π³Π»ΡΠΎΠ½Π°Ρ
ΠΈΠ»ΠΈ ΠΏΡΠΈ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ
ΡΠΈΠΏΠΎΠ² (int
, str
, tuple
).β ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ:
class Singleton:
_instance = None
def new(cls, *args, **kwargs):
if cls._instance is None:
cls._instance = super().new(cls)
return cls._instance
obj1 = Singleton()
obj2 = Singleton()
print(obj1 is obj2) # True (ΠΎΠ±Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ° β ΠΎΠ΄Π½Π° ΠΈ ΡΠ° ΠΆΠ΅ ΡΡΡΠ»ΠΊΠ°)
Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ
init
, new
ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΡΠ΅Ρ ΡΠ°ΠΌ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΠΎΠ»Π΅Π·Π΅Π½ Π΄Π»Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΡΠΈΡΠ»Π° ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² ΠΈ ΡΠ°Π±ΠΎΡΡ Ρ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΌΠΈ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ.π₯ Mutable vs Immutable Π² Python
Π Python Π²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ β ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΈ ΠΎΠ½ΠΈ Π΄Π΅Π»ΡΡΡΡ Π½Π° ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ (mutable) ΠΈ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ (immutable).
πΉ ΠΠ΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ (immutable): Π½Π΅Π»ΡΠ·Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ
β
πΉ ΠΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ (mutable): ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π±Π΅Π· ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
β
β οΈ ΠΠ°ΠΆΠ½ΡΠΉ Π½ΡΠ°Π½Ρ
ΠΠ΅ΡΠ΅Π΄Π°ΡΠ° ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π² ΡΡΠ½ΠΊΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΡΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌ:
β ΠΡΠ²ΠΎΠ΄:
Π Python Π²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ β ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΈ ΠΎΠ½ΠΈ Π΄Π΅Π»ΡΡΡΡ Π½Π° ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ (mutable) ΠΈ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ (immutable).
πΉ ΠΠ΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ (immutable): Π½Π΅Π»ΡΠ·Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ
β
int
, float
, str
, tuple
, frozenset
x = "hello"
x += " world" # Π‘ΠΎΠ·Π΄Π°Π΅ΡΡΡ Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, Π° Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΡΠ°ΡΡΠΉ
πΉ ΠΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ (mutable): ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π±Π΅Π· ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
β
list
, dict
, set
, bytearray
lst = [1, 2, 3]
lst.append(4) # Π‘ΠΏΠΈΡΠΎΠΊ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π² ΡΠΎΠΉ ΠΆΠ΅ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΏΠ°ΠΌΡΡΠΈ
β οΈ ΠΠ°ΠΆΠ½ΡΠΉ Π½ΡΠ°Π½Ρ
ΠΠ΅ΡΠ΅Π΄Π°ΡΠ° ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π² ΡΡΠ½ΠΊΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΡΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌ:
def modify_list(lst):
lst.append(99) # ΠΠ·ΠΌΠ΅Π½ΡΠ΅Ρ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ!
my_list = [1, 2, 3]
modify_list(my_list)
print(my_list) # [1, 2, 3, 99]
β ΠΡΠ²ΠΎΠ΄:
β’
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ tuple
, Π΅ΡΠ»ΠΈ Π΄Π°Π½Π½ΡΠ΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡΡ.β’
ΠΡΠ΄ΡΡΠ΅ ΠΎΡΡΠΎΡΠΎΠΆΠ½Ρ Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ Π² ΡΡΠ½ΠΊΡΠΈΠΈ.β’
ΠΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ .copy()
ΠΈΠ»ΠΈ deepcopy()
.βοΈ Π Π°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ
πΉ
πΉ
πΉ ΠΠΎ Π΄Π»Ρ immutable-ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,
β ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅
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
Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ, ΡΡΡΠ»Π°ΡΡΡΡ Π»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡΠ΅ΠΊΡ Π² ΠΏΠ°ΠΌΡΡΠΈ!π Π’ΠΈΠΏΠΈΠ·Π°ΡΠΈΡ Π² Python
Python β Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΡΠ΅ΠΌΡΠΉ ΡΠ·ΡΠΊ, Π½ΠΎ Ρ Π²Π΅ΡΡΠΈΠΈ 3.5+ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ ΡΠΈΠΏΠΎΠ². ΠΡΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ ΡΠ·ΡΠΊ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ, Π½ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Ρ Π°Π²ΡΠΎΠ΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ, ΠΎΡΠ»Π°Π΄ΠΊΠΎΠΉ ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΉ.
β‘οΈ ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ:
ΠΠ½Π½ΠΎΡΠ°ΡΠΈΠΈ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½Ρ, Π½ΠΎ Π΄Π΅Π»Π°ΡΡ ΠΊΠΎΠ΄ ΡΠΈΡΠ΅ ΠΈ ΠΏΠΎΠ½ΡΡΠ½Π΅Π΅, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π² Π±ΠΎΠ»ΡΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ .
Python β Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΡΠ΅ΠΌΡΠΉ ΡΠ·ΡΠΊ, Π½ΠΎ Ρ Π²Π΅ΡΡΠΈΠΈ 3.5+ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ ΡΠΈΠΏΠΎΠ². ΠΡΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ ΡΠ·ΡΠΊ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ, Π½ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Ρ Π°Π²ΡΠΎΠ΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ, ΠΎΡΠ»Π°Π΄ΠΊΠΎΠΉ ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΉ.
β‘οΈ ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ:
def greet(name: str, times: int) -> str:
return (f"Hello, {name}! " * times).strip()
print(greet("Alice", 2)) # Hello, Alice! Hello, Alice!
ΠΠ½Π½ΠΎΡΠ°ΡΠΈΠΈ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½Ρ, Π½ΠΎ Π΄Π΅Π»Π°ΡΡ ΠΊΠΎΠ΄ ΡΠΈΡΠ΅ ΠΈ ΠΏΠΎΠ½ΡΡΠ½Π΅Π΅, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π² Π±ΠΎΠ»ΡΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ .
βοΈ Python: ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ
Π Python ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΏΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. Π’ΠΈΠΏ Π΄Π°Π½Π½ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ.
βοΈ ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠΈΠΏΡ:
β’
β’
β’
β’
β‘οΈ ΠΡΠΈΠΌΠ΅Ρ:
β ΠΠ°ΠΏΠΎΠΌΠ½ΠΈ: ΡΠΈΠΏ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΠ΅ΡΠ΅Π· type().
Π Python ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΏΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. Π’ΠΈΠΏ Π΄Π°Π½Π½ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ.
βοΈ ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠΈΠΏΡ:
β’
int
β ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎβ’
float
β ΡΠΈΡΠ»ΠΎ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉβ’
str
β ΡΡΡΠΎΠΊΠ°β’
bool
β Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠΈΠΏ (True
ΠΈΠ»ΠΈ False
)β‘οΈ ΠΡΠΈΠΌΠ΅Ρ:
age = 25 # int
height = 1.75 # float
name = "Alice" # str
is_active = True # bool
print(type(age), type(name))
β ΠΠ°ΠΏΠΎΠΌΠ½ΠΈ: ΡΠΈΠΏ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΠ΅ΡΠ΅Π· type().
β Π§Π΅ΠΌ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ mutable ΠΈ immutable ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ
Π² Python ΠΈ ΠΊΠ°ΠΊ ΡΡΠΎ Π²Π»ΠΈΡΠ΅Ρ Π½Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°?
Π Python ΠΎΠ±ΡΠ΅ΠΊΡΡ Π΄Π΅Π»ΡΡΡΡ Π½Π° ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ (mutable) ΠΈ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ (immutable). ΠΡΠΎ ΠΊΠ»ΡΡΠ΅Π²Π°Ρ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²Π»ΠΈΡΠ΅Ρ Π½Π° ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ, Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡΠΌΠΈ.
β ΠΡΠΈΠΌΠ΅Ρ:
π Π‘ΠΏΠΈΡΠΊΠΈ β ΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΉ ΡΠΈΠΏ. Π€ΡΠ½ΠΊΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»Π° ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠΉ ΠΊΠ°ΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ. ΠΡΠ»ΠΈ Π±Ρ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΠΊΠΎΡΡΠ΅ΠΆ (immutable), ΡΠ°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π²ΡΠ·Π²Π°Π»ΠΎ Π±Ρ ΠΎΡΠΈΠ±ΠΊΡ.
ΠΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ ΡΠΈΠΏΡ:
ΠΠ΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅:
Π Python ΠΎΠ±ΡΠ΅ΠΊΡΡ Π΄Π΅Π»ΡΡΡΡ Π½Π° ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ (mutable) ΠΈ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ (immutable). ΠΡΠΎ ΠΊΠ»ΡΡΠ΅Π²Π°Ρ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²Π»ΠΈΡΠ΅Ρ Π½Π° ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ, Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡΠΌΠΈ.
β ΠΡΠΈΠΌΠ΅Ρ:
def add_item(lst):
lst.append(100)
my_list = [1, 2, 3]
add_item(my_list)
print(my_list) # [1, 2, 3, 100]
π Π‘ΠΏΠΈΡΠΊΠΈ β ΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΉ ΡΠΈΠΏ. Π€ΡΠ½ΠΊΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»Π° ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠΉ ΠΊΠ°ΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ. ΠΡΠ»ΠΈ Π±Ρ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΠΊΠΎΡΡΠ΅ΠΆ (immutable), ΡΠ°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π²ΡΠ·Π²Π°Π»ΠΎ Π±Ρ ΠΎΡΠΈΠ±ΠΊΡ.
ΠΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ ΡΠΈΠΏΡ:
list
, dict
, set
, bytearray
ΠΠ΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅:
int
, float
, str
, tuple
, frozenset
β οΈ ΠΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΡΠΎΠΉ ΡΠ°Π·Π½ΠΈΡΡ Π²Π°ΠΆΠ½ΠΎ ΠΏΡΠΈ:
β’ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ (Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅),
β’ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΡ API,
β’ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ»ΠΎΠ²Π°ΡΠ΅ΠΉ ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ² (ΠΊΠ»ΡΡΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ immutable).
β€1
ΠΠΎΠ΄ΡΠ»Ρ
dataclasses
ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π±ΡΡΡΡΠΎ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ ΠΊΠ»Π°ΡΡΡ-Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Π΄Π°Π½Π½ΡΡ
Π±Π΅Π· Π»ΠΈΡΠ½Π΅Π³ΠΎ ΡΠ°Π±Π»ΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.from dataclasses import dataclass
@dataclass
class User:
name: str
age: int = 0
u = User("ΠΠ½Π½Π°", 25)
print(u) # User(name='ΠΠ½Π½Π°', age=25)
β’
ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎΠ·Π΄Π°ΡΡ __init__
, __repr__
, __eq__
β’
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡβ’
ΠΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΊΠ°ΠΊ Π² ΠΎΠ±ΡΡΠ½ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅ΠΠ΄Π΅Π°Π»ΡΠ½ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² β Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ API, ΠΊΠΎΠ½ΡΠΈΠ³Π°ΠΌΠΈ ΠΈΠ»ΠΈ ΠΌΠΎΠ΄Π΅Π»ΡΠΌΠΈ
Please open Telegram to view this post
VIEW IN TELEGRAM
@dataclass
ΠΈΠ· ΠΌΠΎΠ΄ΡΠ»Ρ dataclasses
Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎΠ·Π΄Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ __init__
, __repr__
, __eq__
ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ ΠΏΠΎΠ»Π΅ΠΉ.from dataclasses import dataclass
@dataclass
class User:
name: str
age: int
u = User("ΠΠ½Π½Π°", 25)
print(u) # User(name='ΠΠ½Π½Π°', age=25)
π Π£Π΄ΠΎΠ±Π½ΠΎ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ : ΠΌΠ΅Π½ΡΡΠ΅ ΡΠ°Π±Π»ΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π±ΠΎΠ»ΡΡΠ΅ ΡΠΈΡΠ°Π΅ΠΌΠΎΡΡΠΈ.
Please open Telegram to view this post
VIEW IN TELEGRAM