Π Π°Π·Π½ΠΎΠ΅

Python нСизмСняСмыС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…: Бинтаксис Python: измСняСмыС ΠΈ нСизмСняСмыС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… | PyNSK

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

Бинтаксис Python: измСняСмыС ΠΈ нСизмСняСмыС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… | PyNSK

ВсС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² Python относятся ΠΊ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· 2-Ρ… ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ: измСняСмыС (mutable) ΠΈ нСизмСняСмыС (unmutable).

МногиС ΠΈΠ· ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… Python β€” это Ρ‚ΠΈΠΏΡ‹ нСизмСняСмых ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²:

  • числовыС Π΄Π°Π½Π½Ρ‹Π΅ (int, float, complex)
  • ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ строки (class ‘str’)
  • ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ (tuple)

Π”Ρ€ΡƒΠ³ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΠΊΠ°ΠΊ измСняСмыС:

  • списки (list)
  • мноТСства (set)
  • словари (dict).

Π’Π½ΠΎΠ²ΡŒ опрСдСляСмыС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Ρ‚ΠΈΠΏΡ‹ (классы) ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΠΊΠ°ΠΊ нСизмСняСмыС ΠΈΠ»ΠΈ измСняСмыС.

Π˜Π·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° являСтся ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎ Π²Π°ΠΆΠ½ΠΎΠΉ характСристикой, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π΅ΠΉ, ΠΌΠΎΠΆΠ΅Ρ‚ Π»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ Π² качСствС ΠΊΠ»ΡŽΡ‡Π° для словарСй (dict) ΠΈΠ»ΠΈ Π½Π΅Ρ‚.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΏΠΎ ссылкС — https://www. ibm.com/developerworks/ru/library/l-python_details_02/

Date

Categories

Бинтаксис Python

Tags

Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…

Share on Twitter
Share on Facebook


ΠŸΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ:

Бписки Π² Python: ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΡΡ‚ΡŒ, доступ ΠΊ элСмСнтам

Бписок прСдставляСт собой ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π² Python. Π‘Π»ΠΎΠ²Π°Ρ€Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ списка β€” Β«Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ количСство связанных элСмСнтов ΠΈΠ»ΠΈ ΠΈΠΌΠ΅Π½, написанных ΠΈΠ»ΠΈ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΒ».

ΠœΡ‹ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ списки ΠΈ Π² повсСднСвной ΠΆΠΈΠ·Π½ΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, составлСниС списка ΠΏΠΎΠΊΡƒΠΏΠΎΠΊ), ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, созданиС списка простых чисСл). ΠœΡ‹ составляСм списки всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠ³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ элСмСнты ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ критСриям.

Бписок Π² Python прСдоставляСт Ρ‚Π΅ ΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ возмоТности, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ элСмСнты с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ доступа ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту, измСнСния ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта, добавлСния ΠΈΠ»ΠΈ удалСния элСмСнта ΠΈΠ· Π½Π΅Π³ΠΎ.

Π˜Ρ‚Π°ΠΊ, Π½Π°Ρ‡Π½Π΅ΠΌ с создания списка.

list1 = [1,2,3,4,5]
>>> list1
[1, 2, 3, 4, 5]
>>> type(list1)
<type 'list'>

type() β€” это функция Π² Python, которая Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚ΠΈΠΏ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ список Π² Python ΠΎΡ‡Π΅Π½ΡŒ просто. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это двумя способами. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ: Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки элСмСнты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅. Π”Ρ€ΡƒΠ³ΠΎΠΉ β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ list().

>>> list1 = list([1,2,3,4,5])
>>> list1
[1, 2, 3, 4, 5]
>>> type(list1)
<type 'list'>

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

# id() function returns the object id. 
>>> id(list1)
4426491160
>>> list2 = list1
>>> id(list2)
4426491160

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

Доступ ΠΊ элСмСнтам

Python Π½Π°Π·Π½Π°Ρ‡Π°Π΅Ρ‚ индСкс ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΈΠ· элСмСнтов списка, нумСрация ΠΈΠ΄Π΅Ρ‚ с нуля. Π˜Ρ‚Π°ΠΊ, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ элСмСнту Π² спискС, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Π½Π΅ΠΌΡƒ ΠΏΠΎ Π΅Π³ΠΎ индСксу. Для этого Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π½Π°Ρ‚ΡŒ индСкс элСмСнта. Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, Π΄Π°ΠΆΠ΅ Ссли Π²Ρ‹ этого Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅, Π½Π΅ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΉΡ‚Π΅ΡΡŒ, для этого Π΅ΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅. Но ΠΏΠΎΠΊΠ° Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ элСмСнтам ΠΏΠΎ ΠΈΡ… индСксу.

>>> list1
[1, 2, 3, 4, 5]
>>> print(list1[0])
1
>>> print(list1[2])
3
>>> print(list1[1])
2

Python выбросит IndexError, Ссли Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΄ΠΈΡ‚Π΅ индСкс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ связан со списком, ΠΈΠ»ΠΈ Ссли этот индСкс Π½Π΅ ссылаСтся Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

>>> list1
[1, 2, 3, 4, 5]
>>> print(list1[9])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
>>>

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

>>> list1
[1, 2, 3, 4, 5]
>>> list1.index(2)
1 // index of 2

ПовСдСниС списков ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ

Бписок ΠΊΠ°ΠΊ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… относится ΠΊ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ измСняСмых структур Π΄Π°Π½Π½Ρ‹Ρ…. Π‘Π»ΠΎΠ²ΠΎ «измСняСмый» ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Π½ΠΎΡΠΈΡ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ измСнСния Π² структуру Π΄Π°Π½Π½Ρ‹Ρ… Π΄Π°ΠΆΠ΅ послС Π΅Π΅ опрСдСлСния. Π˜Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊΠΈΠ΅ измСнСния Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ произвСсти ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ списку? Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ, Π΄ΠΎΠ±Π°Π²ΠΈ

Π˜Π·ΠΌΠ΅Π½ΡΠ΅ΠΌΡ‹Π΅ ΠΈ нСизмСняСмыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² Python

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΡΡ‚Π°Ρ‚ΡŒΠΈ Mutable vs Immutable Objects in Python.

ВсС значСния Π² Python это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ дСлятся Π½Π° измСняСмыС ΠΈ нСизмСняСмыС.

КаТдая пСрСмСнная ссылаСтся Π½Π° экзСмпляр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. ΠŸΡ€ΠΈ создании, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ присваиваСтся ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ (object id) ΠΈ Ρ‚ΠΈΠΏ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π’ΠΈΠΏ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π΅ мСняСтся послС создания, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ измСнится состояниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π˜Π·ΠΌΠ΅Π½ΡΠ΅ΠΌΡ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΌΠ΅Π½ΡΡŽΡ‚ своё состояниС послС создания, Π° нСизмСняСмыС ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π² Ρ‚ΠΎΠΌ Π²ΠΈΠ΄Π΅ Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±Ρ‹Π»ΠΈ созданы.

ВстроСнныС нСизмСняСмыС Ρ‚ΠΈΠΏΡ‹: int, float, bool, str, tuple, unicode. ВстроСнныС измСняСмыС Ρ‚ΠΈΠΏΡ‹ list, set, dict. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ классы ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ измСняСмы. Для имитирования нСизмСняСмости ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ измСнСния ΠΈ удалСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π»ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ ссылаСтся Π»ΠΈ пСрСмСнная Π½Π° измСняСмый ΠΈΠ»ΠΈ нСизмСняСмый рассмотрим ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ id() ΠΈ type().

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ id ΠΈ type

ВстроСнная функция id() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ числовой ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это число соотвСтствуСт мСсту нахоТдСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² памяти, ΠΎΠ΄Π½Π°ΠΊΠΎ это относится ΠΊ особСнностям Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° Python ΠΈ зависит ΠΎΡ‚ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ is сравниваСт ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Π΄Π²ΡƒΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

ВстроСнная функция type() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚ΠΈΠΏ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Рассмотрим Π΄Π²Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°.

# ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1
>>> x = «Holberton»
>>> y = «Holberton»
>>> id(x)
140135852055856
>>> id(y)
140135852055856
>>> print(x is y) »’comparing the types»’
True



# ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1

>>> x = «Holberton»

>>> y = «Holberton»

>>> id(x)

140135852055856

>>> id(y)

140135852055856

>>> print(x is y) »’comparing the types»’

True

# ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2
>>> a = 50
>>> type(a)
<class: β€˜int’>
>>> b = «Holberton»
>>> type(b)
<class: ‘string’>



# ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2

>>> a = 50

>>> type(a)

<class: β€˜int’>

>>> b = «Holberton»

>>> type(b)

<class: ‘string’>

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этих Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ измСняСмыми, Π° ΠΊΠ°ΠΊΠΈΠ΅ Π½Π΅Ρ‚.

Π˜Π·ΠΌΠ΅Π½ΡΠ΅ΠΌΡ‹Π΅ ΠΈ нСизмСняСмыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹

Π˜Π·ΠΌΠ΅Π½ΡΠ΅ΠΌΡ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ своС состояниС ΠΈΠ»ΠΈ содСрТимоС, нСизмСняСмыС Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚. ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΡΡ‚ΡŒ:

Python для Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€ΠΈΠΈ | Π˜Π·ΠΌΠ΅Π½ΡΠ΅ΠΌΡ‹Π΅ ΠΈ нСизмСняСмыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹

ΠΎΡ‚ АкилСса ΠšΠ°Ρ€Π°Ρ‚Ρ‚ΠΈΠ½ΠΎ

23 августа 2018 Π³.

ΠΈΠ·ΠΌΠ΅Π½Ρ‡ΠΈΠ²Ρ‹ΠΉ

ΡƒΠΏ

Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ΠΉ

ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹

Π›ΡŽΠ΄ΠΈ, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Python, быстро ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°ΡŽΡ‚ сущСствованиС списков ΠΈ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ. Оба ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ ΠΈ выглядят ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ. Иногда ΠΎΠ½ΠΈ Π΄Π°ΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ взаимозамСняСмыС. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΉ вопрос: ΠΏΠΎΡ‡Π΅ΠΌΡƒ Ρƒ нас Π΅ΡΡ‚ΡŒ Π΄Π²Π° Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠ° элСмСнтов для ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ Ρ†Π΅Π»ΠΈ? ΠžΡ‚Π²Π΅Ρ‚ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ измСняСмыми ΠΈ нСизмСняСмыми Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² Python.

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

Бписки ΠΈ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ

Π’ Python, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ список, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

  >>> var1 = [1, 2, 3]  

И ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ элСмСнты ΠΏΠΎ ΠΈΡ… полоТСнию:

  >>> var1 [0]
1
>>> var [1]
2  

Если ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ элСмСнта, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

  >>> var1 [0] = 0
>>> var1 [0]
0  

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎ ΠΆΠ΅ самоС с ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΌ, Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ () вмСсто [] :

  >>> var2 = (1, 2, 3)
>>> var2 [0]
1  

Однако, Ссли ΠΌΡ‹ попытаСмся ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ элСмСнта, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΎΡˆΠΈΠ±ΠΊΡƒ:

  >>> var2 [0] = 0
ΠžΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ (послСдний Π²Ρ‹Π·ΠΎΠ² послСдний):
  Π€Π°ΠΉΠ» "", строка 1, Π² 
TypeError: ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ 'tuple' Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ присвоСниС элСмСнта  

Π­Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ Π²Π°ΠΆΠ½ΠΎΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ списком ΠΈ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΌ. ПослС опрСдСлСния ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ свои значСния, Π½ΠΎ списки ΠΌΠΎΠ³ΡƒΡ‚. Π’ этом смыслС ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ — это нСизмСняСмых , Π° списки — измСняСмыС . РСшСниС ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‚ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ прилоТСния. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅: ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΎΡ‡Π΅Π½ΡŒ быстро, ΠΊΠΎΠ³Π΄Π° Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΈΡ… значСниям. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, списки Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ эффСктивнСС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΏΠ°ΠΌΡΡ‚ΡŒ, Ссли Π½Π°ΠΌ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ понадобится ΠΈΡ… Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½Π΅ΠΌ этапС.

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ послС Π΅Π΅ опрСдСлСния — Π²ΠΎΡ‚ Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ измСняСмыми ΠΈΠ»ΠΈ нСизмСняСмыми.ΠšΠΎΡ€Ρ‚Π΅ΠΆΠΈ ΠΈ списки — это Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π³Π»ΡƒΠ±ΠΆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Python.

Π˜Π·ΠΌΠ΅Π½ΡΠ΅ΠΌΡ‹Π΅ ΠΈ нСизмСняСмыС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…

Π’Π΄ΠΎΡ…Π½ΠΎΠ²Π»Π΅Π½Π½Ρ‹Π΅ прСвосходной ΡΡ‚Π°Ρ‚ΡŒΠ΅ΠΉ, написанной Π›ΡƒΡ‡Π°Π½ΠΎ Рамальо, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² Python ΠΊΠ°ΠΊ ΠΌΠ΅Ρ‚ΠΊΠΈ, Π° Π½Π΅ ΠΊΠ°ΠΊ Π±Π»ΠΎΠΊΠΈ. Π’ Python пСрСмСнная — это ΠΌΠ΅Ρ‚ΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ присваиваСм ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ; это Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ‹, люди, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ это ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Однако Π²Π°ΠΆΠ½Ρ‹ Π΄Π°Π½Π½Ρ‹Π΅, Π»Π΅ΠΆΠ°Ρ‰ΠΈΠ΅ Π² основС ΠΌΠ΅Ρ‚ΠΊΠΈ, Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ Ρ‚ΠΈΠΏ.

ΠŸΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ инструмСнтом для понимания этой ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ являСтся функция id .ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΊ любой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΈ ΠΎΠ½Π° Π²Π΅Ρ€Π½Π΅Ρ‚ свою ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ. Если ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π΅ΠΌ Π΄Π΅Π»ΠΎ с ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ Π»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ id . ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

  >>> var1 = [1, 2, 3]
>>> var2 = (1, 2, 3)
>>> ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ (var1)
44045192
>>> ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ (var2)
43989032  

Π›Π΅Π³ΠΊΠΎ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ идСнтичности. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ список ΠΈ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π½ΠΎΠ²Ρ‹ΠΌΠΈ значСниями ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚ Π»ΠΈ ΠΈΡ… ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹:

  >>> var1 + = [4, 5]
>>> var2 + = (4, 5)
>>> print (var1)
[1, 2, 3, 4, 5]
>>> print (var2)
(1, 2, 3, 4, 5)
>>> ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ (var1)
44045192
>>> ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ (var2)
30323024  

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄ ΡƒΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠΎΠ΅-Ρ‡Ρ‚ΠΎ интСрСсноС: ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ значСния ΠΊΠ°ΠΊ ΠΊ списку ( var1, ), Ρ‚Π°ΠΊ ΠΈ ΠΊ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΡƒ ( var2 ). Однако, Ссли ΠΌΡ‹ спросим ΠΈΡ… ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ var1 Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ» свой ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, Π° var2 ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΠ»ΠΈ список, Π½ΠΎ создали ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ. Π­Ρ‚ΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· ΠΏΡ€ΠΈΡ‡ΠΈΠ½, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ Π±ΠΎΠ»Π΅Π΅ эффСктивно для списков, Ρ‡Π΅ΠΌ для ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ пытаСмся ΠΈΡ… Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ.

ΠšΠΎΡ€Ρ‚Π΅ΠΆΠΈ — Π½Π΅ СдинствСнный нСизмСняСмый Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π² Python. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌ инструмСнтом для изучСния, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ со списками, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ.Π”Ρ€ΡƒΠ³ΠΈΠ΅ нСизмСняСмыС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…:

  1. Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ
  2. ΠΏΠΎΠΏΠ»Π°Π²ΠΎΠΊ
  3. дСсятичноС
  4. комплСкс
  5. Π±ΡƒΠ»Π΅Π²
  6. строка
  7. ΠΊΠΎΡ€Ρ‚Π΅ΠΆ
  8. Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½
  9. ΠΌΠΎΡ€ΠΎΠ·ΠΈΠ»ΡŒΠ½ΠΈΠΊ
  10. Π±Π°ΠΉΡ‚ΠΎΠ²

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΌΡ‹ Π½Π΅ Π΄ΡƒΠΌΠ°Π»ΠΈ ΠΎΠ± этом Ρ€Π°Π½ΡŒΡˆΠ΅, Π½ΠΎ ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ присваиваСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ†Π΅Π»ΠΎΠ΅ число, число с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой ΠΈ Ρ‚. Π”., Π•Π΅ нСльзя Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ это, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ² этот ΠΊΠΎΠ΄:

  >>> var1 = 1
>>> ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ (var1)
1644063776
>>> var1 + = 1
>>> ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ (var1)
1644063808  

Π’Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½ΠΎΠ²Ρ‹ΠΉ var1 создаСтся, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ добавляСм Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ самому сСбС; ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π΅Π³ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ мСняСтся. Π’ΠΎ ΠΆΠ΅ самоС ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ со всСми Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, пСрСчислСнными Π²Ρ‹ΡˆΠ΅.

Π˜Π·ΠΌΠ΅Π½ΡΠ΅ΠΌΡ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ , с Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅:

  1. список
  2. ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ
  3. ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚
  4. массив Π±Π°ΠΉΡ‚ΠΎΠ²
  5. ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ классы

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

  >>> var1 = {'a': 1, 'b': 2}
>>> ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ (var1)
140711021092288
>>> var1 ['b'] = 3
>>> ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ (var1)
140711021092288
>>>  

Π”Π²Π΅ ΠΌΠ΅Ρ‚ΠΊΠΈ для ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π·Π΅Ρ† Π΄Π°Π΅Ρ‚ Π΄Π²Π° ΠΈΠΌΠ΅Π½ΠΈ (Ρ‚.Π΅. Π΄Π²Π΅ ΠΌΠ΅Ρ‚ΠΊΠΈ) ΠΊ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

  >>> var1 = [0, 1, 2]
>>> var2 = var1
>>> ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ (var1)
44372872
>>> ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ (var2)
44372872  

И var1 ΠΈ var2 ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΌΠ΅Ρ‚ΠΊΠ°ΠΌΠΈ для ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π’ Python ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ это, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ is вмСсто сравнСния идСнтичности:

  >>> var1 - это var2
ΠŸΡ€Π°Π²Π΄Π°  

А Ссли ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ var1 :

  >>> var1 + = [3, 4, 5]
>>> print (var2)
[0, 1, 2, 3, 4, 5]
>>> var1 - это var2
ΠŸΡ€Π°Π²Π΄Π°  

ΠœΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ послС обновлСния значСния var1 Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ var2 Ρ‚Π°ΠΊΠΆΠ΅ измСнилось.Π­Ρ‚ΠΎ происходит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с измСняСмыми Ρ‚ΠΈΠΏΠ°ΠΌΠΈ. Π‘ нСизмСняСмыми ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ создаСтся для обновлСния значСния, ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ имя Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Π’ΠΎΡ‚ ΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎ ΠΈ Ρ€Π°Π½ΡŒΡˆΠ΅, Π½ΠΎ с ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°ΠΌΠΈ:

  >>> var1 = (1, 2)
>>> var2 = var1
>>> var1 - это var2
ΠŸΡ€Π°Π²Π΄Π°
>>> var1 + = (3, 4)
>>> var1 - это var2
Π›ΠΎΠΆΡŒ
>>> var2
(1, 2)  

ΠžΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹

Иногда Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ, ΠΈΠΌΠ΅ΡŽΡ‚ Π»ΠΈ Π΄Π²Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ значСния, Π° Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π»ΠΈ ΠΎΠ½ΠΈ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ == для сравнСния содСрТимого, Π° Π½Π΅ идСнтичности ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΄Π²Π° списка с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ значСниями:

  >>> var1 = [1, 2, 3]
>>> var2 = [1, 2, 3]  

Если ΠΌΡ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ var1 ΠΈ var2 , ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ, Ρ‡Ρ‚ΠΎ это Ρ€Π°Π·Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹:

  >>> var1 - это var2
Π›ΠΎΠΆΡŒ  

Π₯отя ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ (ΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ значСния), это Π΄Π²Π° Ρ€Π°Π·Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.Если ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ значСния вмСсто идСнтичностСй, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ
ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

  >>> var1 == var2
ΠŸΡ€Π°Π²Π΄Π°  

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹ΡˆΠ΅ Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Ссли ΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ Π±Ρ‹ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ вмСсто списков. Π’ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ содСрТимоС ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ, нСдостаточно, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π½Π°Ρ‚ΡŒ, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

Π‘ΠΈΠ½Π³Π»Ρ‚ΠΎΠ½Ρ‹

НС вдаваясь Π² подробности, стоит ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ сущСствуСт Ρ‚ΠΈΠΏ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ синглтоном.По ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ, это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, любая ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π°Ρ Π½Π° Π½ΠΈΡ… пСрСмСнная Π΄ΠΎΠ»ΠΆΠ½Π° ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° быстрый ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с использованиСм Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ†Π΅Π»Ρ‹Ρ… чисСл:

  >>> Π° = 1
>>> b = 1
>>> Π° Ρ€Π°Π²Π½ΠΎ 1
ΠŸΡ€Π°Π²Π΄Π°
>>> Π° это Π±
ΠŸΡ€Π°Π²Π΄Π°
>>> Π° == Π±
ΠŸΡ€Π°Π²Π΄Π°  

Π’ Python Ρ†Π΅Π»Ρ‹Π΅ числа ΠΎΡ‚ -5 Π΄ΠΎ 256 ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹ΠΌΠΈ. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π°Ρ Π½Π° любой ΠΈΠ· Π½ΠΈΡ…, Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, Ρ‡Ρ‚ΠΎ ΠΈ любая другая пСрСмСнная, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π°Ρ Π½Π° Ρ‚ΠΎ ΠΆΠ΅ число.Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π³Π΅Π½ΠΈΠ°Π»Π΅Π½ для экономии памяти, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρƒ нас Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ Ρ†Π΅Π»ΠΎΠ΅ число ΠΈ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, сколько ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π° Π½Π΅Π³ΠΎ. Но Ρ†Π΅Π»Ρ‹Π΅ числа — Π½Π΅ СдинствСнныС ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹Π΅ числа. НапримСр, логичСскиС значСния ΠΈ None Ρ‚Π°ΠΊΠΆΠ΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ синглСтонами:

  >>> a = Π’Π΅Ρ€Π½ΠΎ
>>> Π° Π²Π΅Ρ€Π½ΠΎ
ΠŸΡ€Π°Π²Π΄Π°
>>> b = НСт
>>> b - НСт
ΠŸΡ€Π°Π²Π΄Π°
>>> b == НСт
ΠŸΡ€Π°Π²Π΄Π°  

ИспользованиС - это вмСсто == ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ прСимущСства. ΠŸΠ΅Ρ€Π²ΠΎΠ΅ — это ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ.ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

  python -m timeit "1 == 1"  

А ΠΏΠΎΡ‚ΠΎΠΌ:

  python -m timeit "1 Ρ€Π°Π²Π½ΠΎ 1"  

Π’ срСднСм ΠΏΠ΅Ρ€Π²ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠΊΠΎΠ»ΠΎ 20 наносСкунд, Π° Π²Ρ‚ΠΎΡ€ΠΎΠ΅ — ΠΎΠΊΠΎΠ»ΠΎ 17 наносСкунд. Π‘ΠΈΠ½Π³Π»Ρ‚ΠΎΠ½Ρ‹ — это Ρ‚Π΅ΠΌΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ нСзависимо, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ свои собствСнныС.

Π˜Π·ΠΌΠ΅Π½ΡΠ΅ΠΌΡ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

ΠœΡ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ Π²ΠΈΠ΄Π΅Π»ΠΈ, Ρ‡Ρ‚ΠΎ Ссли Ρƒ нас Π΅ΡΡ‚ΡŒ Π΄Π²Π° измСняСмых ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ, это ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.Если ΠΌΡ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ ΠΎΠ΄Π½ΠΎ, ΠΌΡ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. Π’ΠΎ ΠΆΠ΅ самоС ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с функциями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ измСняСмыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π½Π° Π²Ρ…ΠΎΠ΄ список, Π΄Π΅Π»ΠΈΡ‚ всС свои Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π½Π° Π΄Π²Π°, Π° Π·Π°Ρ‚Π΅ΠΌ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ срСднСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Ѐункция Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

  def div_and_average (var):
    для i в диапазонС (len (var)):
        var [i] / = 2
    avg = сумма (var) / len (var)
    Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ Π² срСднСм  

ΠžΡ‡Π΅Π½ΡŒ интСрСсно ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ происходит, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ:

  my_list = [1, 2, 3]
ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ_ΠΈ_срСднСС (ΠΌΠΎΠΉ_лист))
ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (ΠΌΠΎΠΉ_лист)  

Π’Ρ‹Π²ΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚:

  1. 0
[0,5, 1,0, 1,5]  

Когда ΠΌΡ‹ выполняСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΌΡ‹ мСняСм значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ my_list . Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠΎΡ‰Π½ΠΎ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ позволяСт Π½Π°ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ элСмСнты списка Π½Π° мСстС , ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ Π΄Ρ€ΡƒΠ³ΠΎΠΉ элСмСнт. Однако ΠΈΠ½ΠΎΠ³Π΄Π° ΠΌΡ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΠΌ этого Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΈ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ исходного списка. ΠœΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΈΠ΄Π΅Π΅ΠΉ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ. НапримСр:

  def div_and_average (var1):
    var = var1
    [...]  

Однако ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ это Π½Π΅ мСняСт Π²Ρ‹Π²ΠΎΠ΄. Как ΠΌΡ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ Ρ€Π°Π½Π΅Π΅, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ var ΠΈ var1 Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ это, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ копию ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ модуля copy :

  импортная копия

def div_and_average (var1):
    var = copy.copy (var1)
[...]  

ΠœΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ исходная пСрСмСнная my_list Π½Π΅ измСнилась. Π’ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ сдСлали, называСтся ΠΌΠ΅Π»ΠΊΠΎΠΉ ΠΊΠΎΠΏΠΈΠ΅ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.Π’Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ копию Π½Π° Π³Π»ΡƒΠ±ΠΈΠ½Ρƒ , Π½ΠΎ ΠΌΡ‹ оставим Π΅Π΅ послСдствия для Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π“Π»ΡƒΠ±ΠΎΠΊΠΈΠ΅ ΠΈ Π½Π΅Π³Π»ΡƒΠ±ΠΎΠΊΠΈΠ΅ ΠΊΠΎΠΏΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π°Ρ….

АргумСнты ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² функциях

РаспространСнной ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠΉ ΠΏΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ являСтся присвоСниС Π΅Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π‘ ΠΎΠ΄Π½ΠΎΠΉ стороны, это позволяСт Π½Π°ΠΌ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π±Π΅Π· измСнСния ΠΊΠΎΠ΄Π° нисходящСго ΠΏΠΎΡ‚ΠΎΠΊΠ°. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΎΠ½ Ρ‚Π°ΠΊΠΆΠ΅ позволяСт Π½Π°ΠΌ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ с мСньшим количСством Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Ρ‡Ρ‚ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ использованиС.Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
элСмСнты списка. Код Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

  def Π£Π²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ_значСния (var1 = [1, 1], Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = 0):
    Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ + = 1
    var1 [0] + = Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
    var1 [1] + = Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
    Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ var1  

Если ΠΌΡ‹ Π²Ρ‹Π·ΠΎΠ²Π΅ΠΌ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π±Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ [1, 1] для списка ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ увСличСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ 0 . Π§Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚, Ссли ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π΄Π²Π°ΠΆΠ΄Ρ‹ Π±Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²?

  ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ_значСния ())
ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅_значСния ())  

Π’ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π°Π· ΠΎΠ½ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ [2, 2] , ΠΊΠ°ΠΊ оТидалось, Π½ΠΎ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ€Π°Π· ΠΎΠ½ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ [3, 3] . Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ мСняСтся ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π΅Π΅ запускаСм. Когда ΠΌΡ‹ запускаСм скрипт, Python ΠΎΡ†Π΅Π½ΠΈΠ²Π°Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΈ создаСт список ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ списки измСняСмы, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΌΡ‹ мСняСм Π΅Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Однако Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ , Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ являСтся Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΈ остаСтся Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ΠΌ для всСх ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ вопрос: ΠΊΠ°ΠΊ этого Π½Π΅ Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ? ΠšΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ ΠΎΡ‚Π²Π΅Ρ‚ — ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСизмСняСмыС Ρ‚ΠΈΠΏΡ‹ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.ΠœΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ НСт , Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

  def Π£Π²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ_значСния (var1 = None, value = 0):
    Ссли var1 Ρ€Π°Π²Π½ΠΎ None:
        var1 = [1, 1]
    ...  

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

  def Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ (var1, var2, cache = {}):
    ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ:
        Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = кСш [var1, var2]
    ΠΊΡ€ΠΎΠΌΠ΅ KeyError:
        Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = Π΄ΠΎΡ€ΠΎΠ³ΠΎ_вычислСниС (пСрСмСнная1, пСрСмСнная2)
        кСш [var1, var2] = Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
    Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅  

Когда ΠΌΡ‹ запускаСм Calculate Π² ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π°Π·, Π² словарС cache Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ. Когда ΠΌΡ‹ выполняСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Π°, cache Π½Π°Ρ‡Π½Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ, добавляя Π½ΠΎΠ²Ρ‹Π΅ значСния.Если ΠΌΡ‹ Π² ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, ΠΎΠ½ΠΈ станут Ρ‡Π°ΡΡ‚ΡŒΡŽ словаря, ΠΈ сохранСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΎ. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ явным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, сущСствуСт Π»ΠΈ ΡƒΠΆΠ΅ комбинация Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² памяти.

Наши Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹

Python ΠΎΡ‡Π΅Π½ΡŒ Π³ΠΈΠ±ΠΊΠΈΠΉ, ΠΈ ΠΎΠ½ Π΄Π°Π΅Ρ‚ Π½Π°ΠΌ большой ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π°Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· списка Π² Π½Π°Ρ‡Π°Π»Π΅ этой ΡΡ‚Π°Ρ‚ΡŒΠΈ, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ классы ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ ΠΊ измСняСмым Ρ‚ΠΈΠΏΠ°ΠΌ.Но Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚, Ссли ΠΌΡ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ нСизмСняСмыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹? ΠžΡ‚Π²Π΅Ρ‚ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ класса ΠΏΡ€ΠΈ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ², Ρ‡Π΅Π³ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ, ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ __setattr__ .

  класс MyImmutable:
    def __setattr __ (я, ΠΊΠ»ΡŽΡ‡, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅):
        Raise TypeError ('MyImmutable Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ послС создания экзСмпляра')  

Если ΠΌΡ‹ создадим экзСмпляр класса ΠΈ попытаСмся ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΅Π³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρƒ, появится ошибка:

  >>> my_immutable = MyImmutable ()
>>> my_immutable.var1 = 2
ΠžΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ (послСдний Π²Ρ‹Π·ΠΎΠ² послСдний):
  Π€Π°ΠΉΠ» ". \ AE_custom_objects.py", строка 14, Π² 
    my_immutable.var1 = 2
  Π€Π°ΠΉΠ» ". \ AE_custom_objects.py", строка 7, Π² __setattr__
    ΠΏΠΎΠ΄Π½ΡΡ‚ΡŒ TypeError ('MyImmutable Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ послС создания экзСмпляра')
TypeError: MyImmutable Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ послС создания экзСмпляра  

Π£ нас Π΅ΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ послС создания экзСмпляра. Но это Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ с этим ΠΏΠΎΠ΄Π΅Π»Π°Ρ‚ΡŒ. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ значСния.Если ΠΌΡ‹ создадим стандартный ΠΌΠ΅Ρ‚ΠΎΠ΄ __init__ , ΠΎΠ½ ΠΏΠΎΡ‚Π΅Ρ€ΠΏΠΈΡ‚ Π½Π΅ΡƒΠ΄Π°Ρ‡Ρƒ:

  класс MyImmutable:
    def __init __ (self, var1, var2):
        self.var1 = var1
        self.var2 = var2
    [...]  

Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΡ‹ попытаСмся ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ экзСмпляр этого класса, Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½Π° ошибка TypeError . Π”Π°ΠΆΠ΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ самого класса присвоСниС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ достигаСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° __setattr__ . Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ это, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ super () :

  класс MyImmutable:
    def __init __ (self, var1, var2):
        супСр().__setattr __ ('пСрСмСнная1', пСрСмСнная1)
        super () .__ setattr __ ('пСрСмСнная2', пСрСмСнная2)

    def __setattr __ (я, ΠΊΠ»ΡŽΡ‡, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅):
        ΠΏΠΎΠ΄Π½ΡΡ‚ΡŒ TypeError ('MyImmutable Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ послС создания экзСмпляра')

    def __str __ (сам):
        Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ 'MyImmutable var1: {}, var2: {}'.  format (self.var1, self.var2)  

Π§Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

  >>> my_immutable = MyImmutable (1, 2)
>>> ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (my_immutable)
MyImmutable var1: 1, var2: 2
>>> my_immutable.var1 = 2
[...]
TypeError: MyImmutable Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ послС создания экзСмпляра  

Π­Ρ‚ΠΎ своСго Ρ€ΠΎΠ΄Π° ΠΎΠ±Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡƒΡ‚ΡŒ, Π½ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΌΡ‹ смоТСм Π½Π°ΠΉΡ‚ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ этому Ρ‚ΠΈΠΏΡƒ шаблона. Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ интСрСсный рСсурс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ стоит ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ — это [namedtuple] https://docs.python.org/3/library/collections.html#collections. namedtuple). Как слСдуСт ΠΈΠ· названия, ΠΎΠ½ позволяСт Π½Π°ΠΌ ΠΈΠΌΠ΅Ρ‚ΡŒ нСизмСняСмыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ с ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ. Π•Π³ΠΎ исходный ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌ источником вдохновСния для понимания Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Python.

Π’Ρ‹Π²ΠΎΠ΄Ρ‹

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

ΠžΡ‚ сСбя Π»ΠΈΡ‡Π½ΠΎ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ» Ρ‚Π°ΠΊΡƒΡŽ β€‹β€‹ΠΎΡˆΠΈΠ±ΠΊΡƒ, проводя слоТный экспСримСнт с микроскопом. Π― Ρ…ΠΎΡ‚Π΅Π» ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ автоматичСски ΠΏΠ΅Ρ€Π΅Ρ„ΠΎΠΊΡƒΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ярких Ρ‚ΠΎΡ‡ΠΊΠ°Ρ… послС получСния изобраТСния.ΠŸΠ΅Ρ€Π²ΠΎΠ΅ врСмя Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π» Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ. Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ€Π°Π· всС Π±Ρ‹Π»ΠΎ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ, Π½ΠΎ Π² Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π°ΠΆΠ΅ Π±Π»ΠΈΠ·ΠΊΠΎ Π½Π΅ подошли ΠΊ ΠΆΠ΅Π»Π°Π΅ΠΌΡ‹ΠΌ значСниям. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π»Π°ΡΡŒ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° для сканирования Π² Π²ΠΈΠ΄Π΅ списка ΠΈ Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π΅Π³ΠΎ Π½Π° коэффициСнт послС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° доступСн Π½Π° Github

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

Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Python

Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… опрСдСляСт Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π±ΡƒΠ΄ΡŒ Ρ‚ΠΎ цСлочислСнная пСрСмСнная, строковая пСрСмСнная, ΠΊΠΎΡ€Ρ‚Π΅ΠΆ, ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ, список ΠΈ Ρ‚. Π”. Π’ этом руководствС Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ ΠΎ Ρ‚ΠΈΠΏΠ°Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΈΡ… использовании Π² Python.

Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Python

Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…

Python дСлятся Π½Π° Π΄Π²Π΅ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ: измСняСмыС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ нСизмСняСмыС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ….

НСизмСняСмыС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² Python
1. Числовой
2. Π‘Ρ‚Ρ€ΠΎΠΊΠ°
3.ΠšΠΎΡ€Ρ‚Π΅ΠΆ

Π˜Π·ΠΌΠ΅Π½ΡΠ΅ΠΌΡ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² Python
1. Бписок
2. Π‘Π»ΠΎΠ²Π°Ρ€ΡŒ
3. Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ

1. Числовой Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π² Python

Integer — Π’ Python 3 Π½Π΅Ρ‚ Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ для Ρ†Π΅Π»ΠΎΠ³ΠΎ числа, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠΌΠ΅Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ большоС, насколько позволяСт наша систСмная ΠΏΠ°ΠΌΡΡ‚ΡŒ.

 # Π¦Π΅Π»ΠΎΠ΅ число
число = 100
ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (число)
print ("Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ num Ρ€Π°Π²Π½ΠΎ", type (num)) 

Π’Ρ‹Ρ…ΠΎΠ΄:

Long — Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Long Π½Π΅ рСкомСндуСтся Π² Python 3, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π² Π½Π΅ΠΌ Π½Π΅Ρ‚ нСобходимости, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ†Π΅Π»ΠΎΠ΅ число Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ ΠΏΡ€Π΅Π΄Π΅Π»Π°, Π½Π΅Ρ‚ смысла ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ допускаСт больший Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ ΠΏΡ€Π΅Π΄Π΅Π», Ρ‡Π΅ΠΌ Ρ†Π΅Π»Ρ‹Π΅ числа.

Float — ЗначСния с дСсятичной Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ ΡΠ²Π»ΡΡŽΡ‚ΡΡ значСниями с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой, ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π² Python Π½Π΅ трСбуСтся. Он автоматичСски опрСдСляСтся Π½Π° основС значСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΡ‹ присваиваСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. НапримСр, здСсь fnum — это Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой.

 # число с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой
fnum = 34,45
ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (fnum)
print ("Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ fnum Ρ€Π°Π²Π΅Π½", type (fnum)) 

Π’Ρ‹Ρ…ΠΎΠ΄:

КомплСксноС число — Числа с Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈ ΠΌΠ½ΠΈΠΌΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ комплСксными числами.Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… языков программирования, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Java, Python ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ эти комплСксныС числа со значСниями. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅ΠΌ Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ cnum, ΠΎΠ½ пСчатаСтся ΠΊΠ°ΠΊ комплСксноС число.

 # комплСксноС число
cnum = 3 + 4j
ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (cnum)
print ("Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ cnum Ρ€Π°Π²Π΅Π½", type (cnum)) 

Π’Ρ‹Π²ΠΎΠ΄:

9. ΠœΡƒΡ‚Π°Ρ†ΠΈΡ — докумСнтация Python Tips 0.1

Π˜Π·ΠΌΠ΅Π½ΡΠ΅ΠΌΡ‹Π΅ ΠΈ нСизмСняСмыС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² Python Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΌΠ½ΠΎΠ³ΠΎ Π³ΠΎΠ»ΠΎΠ²Π½ΠΎΠΉ Π±ΠΎΠ»ΠΈ
для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… программистов.ΠŸΡ€ΠΎΡ‰Π΅ говоря, ΠΈΠ·ΠΌΠ΅Π½Ρ‡ΠΈΠ²Ρ‹ΠΉ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ «Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ измСнСния».
Π° нСизмСняСмый ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ «постоянный». Π₯ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρƒ вас Π·Π°ΠΊΡ€ΡƒΠΆΠΈΠ»Π°ΡΡŒ Π³ΠΎΠ»ΠΎΠ²Π°? Π£Ρ‡Ρ‚ΠΈ это
ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

 foo = ['ΠΏΡ€ΠΈΠ²Π΅Ρ‚']
ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (foo)
# Π’Ρ‹Π²ΠΎΠ΄: ['ΠΏΡ€ΠΈΠ²Π΅Ρ‚']

bar = foo
bar + = ['ΠΏΠΎΠΊΠ°']
ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (foo)
# Π’Ρ‹Π²ΠΎΠ΄: ['ΠΏΡ€ΠΈΠ²Π΅Ρ‚', 'ΠΏΠΎΠΊΠ°']
 

Π§Ρ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ? ΠœΡ‹ этого Π½Π΅ ΠΎΠΆΠΈΠ΄Π°Π»ΠΈ! ΠœΡ‹ ΠΆΠ΄Π°Π»ΠΈ
ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

 foo = ['ΠΏΡ€ΠΈΠ²Π΅Ρ‚']
ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (foo)
# Π’Ρ‹Π²ΠΎΠ΄: ['ΠΏΡ€ΠΈΠ²Π΅Ρ‚']

bar = foo
bar + = ['ΠΏΠΎΠΊΠ°']

ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (foo)
# ΠžΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: ['ΠΏΡ€ΠΈΠ²Π΅Ρ‚']
# Π’Ρ‹Π²ΠΎΠ΄: ['ΠΏΡ€ΠΈΠ²Π΅Ρ‚', 'ΠΏΠΎΠΊΠ°']

ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (полоса)
# Π’Ρ‹Π²ΠΎΠ΄: ['ΠΏΡ€ΠΈΠ²Π΅Ρ‚', 'ΠΏΠΎΠΊΠ°']
 

Π­Ρ‚ΠΎ Π½Π΅ ошибка.Π­Ρ‚ΠΎ ΠΈΠ·ΠΌΠ΅Π½Ρ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ Π² дСйствии. Всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π½Π°Π·Π½Π°Ρ‡Π°Π΅Ρ‚Π΅
Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ измСняСмого Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…, Π»ΡŽΠ±Ρ‹Π΅ измСнСния
Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ ΠΎΠ±Π΅ΠΈΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ. Новая пСрСмСнная — это просто псСвдоним
для старой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Π­Ρ‚ΠΎ Π²Π΅Ρ€Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для измСняСмых Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…. Π’ΠΎΡ‚
Попался, связанный с функциями ΠΈ измСняСмыми Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…:

 def add_to (число, Ρ†Π΅Π»ΡŒ = []):
    target.append (число)
    Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ†Π΅Π»ΡŒ

add_to (1)
# Π’Ρ‹Π²ΠΎΠ΄: [1]

add_to (2)
# Π’Ρ‹Π²ΠΎΠ΄: [1, 2]

add_to (3)
# Π’Ρ‹Π²ΠΎΠ΄: [1, 2, 3]
 

Π’Ρ‹ ΠΌΠΎΠ³Π»ΠΈ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ вСсти сСбя ΠΈΠ½Π°Ρ‡Π΅.Π’Ρ‹ ΠΌΠΎΠ³Π»ΠΈ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ
Ρ‡Ρ‚ΠΎ Π½ΠΎΠ²Ρ‹ΠΉ список Π±ΡƒΠ΄Π΅Ρ‚ создан ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ add_to ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

 def add_to (число, Ρ†Π΅Π»ΡŒ = []):
    target.append (число)
    Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ†Π΅Π»ΡŒ

add_to (1)
# Π’Ρ‹Π²ΠΎΠ΄: [1]

add_to (2)
# Π’Ρ‹Π²ΠΎΠ΄: [2]

add_to (3)
# Π’Ρ‹Π²ΠΎΠ΄: [3]
 

И снова эту боль Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½Ρ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ списков. Π’
Python Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΡ†Π΅Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° функция
опрСдСляСтся Π½Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° функция вызываСтся. Π’Ρ‹ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ
Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ измСняСмого Ρ‚ΠΈΠΏΠ°, Ссли Π²Ρ‹ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚Π΅.Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ этого:

 def add_to (element, target = None):
    Ссли Ρ†Π΅Π»ΡŒ - НСт:
        target = []
    target.append (элСмСнт)
    Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ†Π΅Π»ΡŒ
 

Π’Π΅ΠΏΠ΅Ρ€ΡŒ всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π±Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° target ,
Π½ΠΎΠ²Ρ‹ΠΉ список создан. НапримСр:

 add_to (42)
# Π’Ρ‹Π²ΠΎΠ΄: [42]

add_to (42)
# Π’Ρ‹Π²ΠΎΠ΄: [42]

add_to (42)
# Π’Ρ‹Π²ΠΎΠ΄: [42]
 

Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Python

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