🐍 15 самых часто Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… вопросов Π½Π° собСсСдовании ΠΏΡ€ΠΎ Python

Π Π°Π·Π±ΠΎΡ€ 15 самых часто Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… вопросов для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…, Π° Ρ‚Π°ΠΊΠΆΠ΅ для ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Ρ… Python-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ².

1. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ PEP 8?

PEP - Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ΡΡ ΠΊΠ°ΠΊ Python Enhancement Proposal. Π­Ρ‚ΠΎ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ сообщСству Python ΠΈ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π½ΠΎΠ²ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для Python ΠΈΠ»ΠΈ Π΅Π³ΠΎ процСссов. PEP 8 Π²Π°ΠΆΠ΅Π½, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ руководящиС ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ стиля для ΠΊΠΎΠ΄Π° Python. Π’ΠΎ Π΅ΡΡ‚ΡŒ, для написания ΠΊΠΎΠ΄Π° Π²Π²Π΅Π»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ рСкомСндуСтся ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ.

2. Scope Π² Python – ΠΊΠ°ΠΊΠΈΠ΅ Π±Ρ‹Π²Π°ΡŽΡ‚?

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Π² Python Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΡƒΠ΅Ρ‚ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… области видимости. ΠžΠ±Π»Π°ΡΡ‚ΡŒ видимости – это Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² Python остаСтся Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌ. ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²Π° ΠΈΠΌΠ΅Π½ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‚ всС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Однако эти пространства ΠΈΠΌΠ΅Π½ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ для Π½ΠΈΡ… ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π±Π΅Π· прСфикса. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΎ нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² областСй видимости, создаваСмых Π²ΠΎ врСмя выполнСния ΠΊΠΎΠ΄Π° Π² Python:

  • Local scope – относится ΠΊ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ, доступным Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.
  • Global scope – относится ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ, доступным Π²ΠΎ врСмя выполнСния ΠΊΠΎΠ΄Π° с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° ΠΈΡ… создания.
  • Module-level scope - относится ΠΊ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ модуля, доступным Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅.
  • Outermost – относится ΠΊΠΎ всСм встроСнным ΠΈΠΌΠ΅Π½Π°ΠΌ, Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΌ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² этой области видимости ищутся Π² послСднюю ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ имя, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΡΡΡ‹Π»Π°ΡŽΡ‚ΡΡ.

3. List ΠΈ Tuples – Π·Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ½Ρ‹ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ отличия?

List ΠΈ Tuples - это Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хранят ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² Python. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, хранящиСся Π² ΠΎΠ±Π΅ΠΈΡ… ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡΡ…, ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…. List прСдставлСны ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹ΠΌΠΈ скобками ['sara', 6, 0.19], Π° tuples - ΠΊΡ€ΡƒΠ³Π»Ρ‹ΠΌΠΈ скобками ('max', 5, 0.97). ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ list являСтся измСняСмым, tuples, Π½Π°ΠΏΡ€ΠΎΡ‚ΠΈΠ², являСтся нСизмСняСмым ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ Π² list ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ ΠΈΠ»ΠΈ Π½Π°Ρ€Π΅Π·Π°Π½Ρ‹ Π½Π° Ρ…ΠΎΠ΄Ρƒ, Π° Π² tuples ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹ Π½ΠΈΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования list ΠΈ tuples Π² Python
tuple_example = ('max', 6, 5, 0.97)
list_example = ['max', 6, 5, 0.97]
print(tuple_example [0])     # Π²Ρ‹Π²ΠΎΠ΄ => 'max'
print(list_example [0])     # Π²Ρ‹Π²ΠΎΠ΄ => 'max'
tuple_example [0] = 'andrey'    # ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ tuple => Ρ‚ΡƒΡ‚ вызвСтся ошибка
list_example [0] = 'andrey'    # ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ list => list modified
print(tuple_example [0])     # Π²Ρ‹Π²ΠΎΠ΄ => 'max'
print(list_example [0])     # Π²Ρ‹Π²ΠΎΠ΄ => 'andrey'
Π‘ΠΎΠ»ΡŒΡˆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Π½Π° нашСм Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° питониста»

4. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ pass Π² Python?

Pass - прСдставляСт собой Π½ΡƒΠ»Π΅Π²ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ Π² Python. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для заполнСния пустых Π±Π»ΠΎΠΊΠΎΠ² ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π²ΠΎ врСмя исполнСния. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅, Π±Π΅Π· ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° pass ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒΡΡ с ошибкой ΠΊΠ°ΠΊ <<IndentationError>> Π²ΠΎ врСмя выполнСния ΠΊΠΎΠ΄Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования pass Π² Python
def myEmptyFunc():
   #функция Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚
   pass
myEmptyFunc()
# Ссли ΠΆΠ΅ ΡƒΠ±Ρ€Π°Ρ‚ΡŒ pass Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΡ‚ такая ошибка
# File "<stdin>", line 3
# IndentationError: expected an indented block

5. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π² Python?

ΠœΠΎΠ΄ΡƒΠ»ΠΈ - это Ρ„Π°ΠΉΠ»Ρ‹ Python с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ <<.py>>, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π½Π°Π±ΠΎΡ€Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, классов ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Они ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° import. Если трСбуСтся частичная Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ классы ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° from foo import bar.

ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ иСрархичСски ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ пространство ΠΈΠΌΠ΅Π½ модуля с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚ΠΎΡ‡Π΅Ρ‡Π½ΠΎΠΉ Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ. Как ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ столкновСний ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊ ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ столкновСний ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ. Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚ просто, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΈΡΡƒΡ‰ΡƒΡŽ систСмС Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ структуру. ΠŸΠ°ΠΊΠ΅Ρ‚ создаСтся ΠΊΠ°ΠΊ ΠΏΠ°ΠΏΠΊΠ° Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС ΠΈ помСщаСтся Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ (Ρ„Π°ΠΉΠ» python). Π˜ΠΌΠΏΠΎΡ€Ρ‚ модуля ΠΈΠ»ΠΈ Π΅Π³ΠΎ содСрТимого ΠΈΠ· ΠΏΠ°ΠΊΠ΅Ρ‚Π° Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ имя ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π±Ρ‹Π» прСфиксом ΠΊ ΠΈΠΌΠ΅Π½ΠΈ модуля, соСдинСнным Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Π½Π° здСсь.

ΠΏΡ€ΠΈΠΌΠ΅Ρ€ импортирования ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΈ модуля Π² Python
from myclass import MyClass
from foo.bar.yourclass import YourClass

ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ – это Π΄Π²Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Python. ΠœΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ нСсколько прСимущСств:

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

6. КакиС отличия ΠΌΠ΅ΠΆΠ΄Ρƒ массивом ΠΈ списком Π² Python?

ΠœΠ°ΡΡΠΈΠ²Ρ‹ содСрТат Ρ‚ΠΎΠ»ΡŒΠΊΠΎ элСмСнты ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… массива Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹ΠΌ. ΠœΠ°ΡΡΠΈΠ²Ρ‹ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡŽΡ‚ мСньшС памяти.

Бписки содСрТат элСмСнты Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… списков ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΎΠ΄Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹ΠΌ. Π˜Ρ… нСдостатком являСтся ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ большого объСма памяти.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования массива ΠΈ списка:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования array ΠΈ list Π² Python
import array
array_example = array.array('i', [1, 2, 3])
for i in array_example:
    print(i, end=' ')    #Π²Ρ‹Π²ΠΎΠ΄: 1 2 3
array_example = array.array('i', [1, 2, 'string'])    #Π²Ρ‹Π²ΠΎΠ΄: TypeError: an integer is required (got type str)
list_example = [1, 2, 'string']
for i in list_example:
   print(i, end=' ')    #Π²Ρ‹Π²ΠΎΠ΄: 1 2 string

7. ΠžΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ индСксов Π² Python

ΠžΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ индСксов Π² Python являСтся популярным использованиСм slicing (Π²Ρ‹Ρ€Π΅Π·ΠΎΠΊ) ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ ΠΈ массивов. Π’ΠΎ Π΅ΡΡ‚ΡŒ индСксациСй ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для создания Π²Ρ‹Ρ€Π΅Π·ΠΎΠΊ ΠΈΠ· ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ.

Бинтаксис – [start : stop : step]:

  • start – с ΠΊΠ°ΠΊΠΎΠ³ΠΎ индСкса Π½ΡƒΠΆΠ½ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ (ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ)
  • stop – Π½Π° ΠΊΠ°ΠΊΠΎΠΌ мСстС остановится
  • step – количСство шагов для ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π°. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ 1.
ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования slicing Π² Python
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(numbers[1::2]) 
print(numbers[-1::2]) #Π½Π°Ρ‡Π½Π΅Ρ‚ с послСднСго значСния.
print(numbers[3:-2:2]) #Π½Π°Ρ‡Π½Π΅Ρ‚ с индСкса 3 ΠΈ Π΄ΠΎΠΉΠ΄Π΅Ρ‚ Π΄ΠΎ 2 элСмСнта, 
											 #Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π΄ΠΎΠΉΠ΄Π΅Ρ‚ Π΄ΠΎ послСднСго элСмСнта ΠΈ Π½Π°Ρ‡Π½Π΅Ρ‚ сначало Ρ‡Ρ‚ΠΎΠ±Ρ‹
											 #Π΄ΠΎΠΉΡ‚ΠΈ Π΄ΠΎ индСкса 2

8. Как управляСтся ΠΏΠ°ΠΌΡΡ‚ΡŒ Π² Python?

Π’ Python ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ присваивания (=) Π½Π΅ ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. ВмСсто этого ΠΎΠ½ создаСт связь ΠΌΠ΅ΠΆΠ΄Ρƒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ ΠΈ ΠΈΠΌΠ΅Π½Π΅ΠΌ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠΏΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² Python, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ copy. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, сущСствуСт Π΄Π²Π° способа создания ΠΊΠΎΠΏΠΈΠΉ для Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ модуля copy.

  1. Shallow Copy – это побитовая копия ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ скопированный ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΡ‡Π½ΡƒΡŽ копию Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² исходном ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅. Если ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ являСтся ссылкой Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΊΠΎΠΏΠΈΡ€ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ адрСса ссылок Π½Π° Π½ΠΈΡ….
  2. Deep Copy – рСкурсивно ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ всС значСния ΠΎΡ‚ исходного ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΊ Ρ†Π΅Π»Π΅Π²ΠΎΠΌΡƒ, Ρ‚. Π΅. Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΠ΅Ρ‚ Π΄Π°ΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ссылаСтся исходный ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования сopy ΠΈ deepcopy:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования copy ΠΈ deepcopy Π² Python
from copy import copy, deepcopy
list_1 = [1, 2, [3, 5], 4]

## shallow copy
list_2 = copy(list_1) 
list_2[3] = 7
list_2[2].append(6)
list_2    # Π²Ρ‹Π²ΠΎΠ΄ => [1, 2, [3, 5, 6], 7]
list_1    # Π²Ρ‹Π²ΠΎΠ΄ => [1, 2, [3, 5, 6], 4]

## deep copy
list_3 = deepcopy(list_1)
list_3[3] = 8
list_3[2].append(7)
list_3    # Π²Ρ‹Π²ΠΎΠ΄ => [1, 2, [3, 5, 6, 7], 8]
list_1    # Π²Ρ‹Π²ΠΎΠ΄ => [1, 2, [3, 5, 6], 4]

10. Как дСлаСтся ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π² Python?

ΠŸΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° – это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π² классах, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚, Π² зависимости ΠΎΡ‚ контСкста. Π’ Python Π΅ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ: слоТСниС, Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅ ΠΈ Ρ‚. Π΄., ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ для класса.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π² Python
class Vector: 
	def __init__(self, x, y):
		self.x = x
		self.y = y
	
	def __add__(self, vector): 
		return Vector(self.x + vector.x, self.y + vector.y)
	
	def __sub__(self, vector):
    return Vector(self.x - vector.x, self.y - vector.y)

v1 = Vector(1,2)
v2 = Vector(3,4)

print(v1+v2) #Π²Ρ‹Π²ΠΎΠ΄ => Vector(4, 6)
print(v1-v2) #Π²Ρ‹Π²ΠΎΠ΄ => Vector(-2, -2)

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ использованиС ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ². Π”Π°Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, Π½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ встроСнными функциями ΠΈΠ»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ.

11. Как ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ – значСния ΠΈΠ»ΠΈ ссылка?

Π’ Python Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ ΠΏΠΎ ссылкС, Ρ‚. Π΅. пСрСдаСтся ссылка Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Но Π΅ΡΡ‚ΡŒ Π΄Π²Π° Π²ΠΈΠ΄Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ….

По Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ: ΠŸΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ΡΡ копия Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. ИзмСнСниС значСния ΠΊΠΎΠΏΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ измСнСнию значСния исходного ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

По ссылкС: ΠŸΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ΡΡ ссылка Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. ИзмСнСниС значСния Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ исходного ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² Python
def appendNumber(arr):
   arr.append(4)
arr = [1, 2, 3]
print(arr)  #Π²Ρ‹Π²ΠΎΠ΄: => [1, 2, 3]
appendNumber(arr)
print(arr)  #Π²Ρ‹Π²ΠΎΠ΄: => [1, 2, 3, 4]

12. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ *args ΠΈ *kwargs?

*args – это ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ синтаксис, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹.

* – ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ, Π° args – это Π½Π°Π·Π²Π°Π½ΠΈΠ΅ принятоС Π² PEP 8, Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ любоС Π΄Ρ€ΡƒΠ³ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования *args Π² Python
def multiply(a, b, *argv):
   mul = a * b
   for num in argv:
       mul *= num
   return mul
print(multiply(1, 2, 3, 4, 5)) #Π²Ρ‹Π²ΠΎΠ΄: 120

**kwargs – это ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ синтаксис, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹ с ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌΠΈ словами. На самом Π΄Π΅Π»Π΅, это dictionary ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ key ΠΈ value.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования **kwargs Π² Python
def tellArguments(**kwargs):
   for key, value in kwargs.items():
       print(key + ": " + value)
tellArguments(arg1 = "argument 1", arg2 = "argument 2", arg3 = "argument 3")
#Π²Ρ‹Π²ΠΎΠ΄:
# arg1: argument 1
# arg2: argument 2
# arg3: argument 3

13. ΠŸΡƒΡΡ‚ΠΎΠΉ класс ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ?

ΠŸΡƒΡΡ‚ΠΎΠΉ класс – класс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈΠ»ΠΈ ΠΆΠ΅ свойств. ΠŸΡ€ΠΈ пустом классС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово pass для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π²Ρ‹Π΄Π°Π²Π°Π»ΠΎ ошибок.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования пустого класса Π² Python
class EmptyClassDemo:
   pass
obj=EmptyClassDemo()
obj.name="Proglib"
print("Name of class = ",obj.name)

14. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π»ΠΈ Π² python спСцификаторы доступа?

Python Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ спСцификаторы доступа, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ private, public, protected ΠΈ Ρ‚. Π΄. Однако, Π² Π½Π΅ΠΌ Π΅ΡΡ‚ΡŒ концСпция ΠΈΠΌΠΈΡ‚Π°Ρ†ΠΈΠΈ повСдСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΏΡƒΡ‚Π΅ΠΌ использования ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ (protected) ΠΈΠ»ΠΈ Π΄Π²ΠΎΠΉΠ½ΠΎΠ³ΠΎ подчСркивания (private) Π² качСствС прСфикса ΠΊ ΠΈΠΌΠ΅Π½Π°ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π±Π΅Π· подчСркивания ΡΠ²Π»ΡΡŽΡ‚ΡΡ общСдоступными.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования спСцификаторы доступов Π² Python
class User:
   
    # protected - доступСн Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² классС ΠΈΠ»ΠΈ ΠΆΠ΅ Ρ‚Π΅ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌ классам
    _emp_name = None
    _age = None
    
    # private - доступСн Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² самом классС
    __branch = None
    
    # конструктор
    def __init__(self, emp_name, age, branch): 
         self._emp_name = emp_name
         self._age = age
         self.__branch = branch
    
    # ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ - общСдоступный ΠΌΠ΅Ρ‚ΠΎΠ΄
    def display():
        print(self._emp_name +" "+self._age+" "+self.__branch)

15. ΠΠ°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ (нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ²)

  • ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ для объСдинСния Π΄Π²ΡƒΡ… Ρ€Π°Π·Π½Ρ‹Ρ… словарСй. ΠŸΡ€ΠΈ объСдинСнии, Ссли Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ ΠΊΠ»ΡŽΡ‡ΠΈ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ значСния этих ΠΊΠ»ΡŽΡ‡Π΅ΠΉ. Π’Ρ‹Π²Π΅Π΄ΠΈΡ‚Π΅ Π½ΠΎΠ²Ρ‹ΠΉ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ
РСализация Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π½Π° Python
from collections import Counter
d1 = {'ΠΊΠ»ΡŽΡ‡1': 50, 'ΠΊΠ»ΡŽΡ‡2': 100, 'ΠΊΠ»ΡŽΡ‡3':200}
d2 = {'ΠΊΠ»ΡŽΡ‡1': 200, 'ΠΊΠ»ΡŽΡ‡2': 100, 'ΠΊΠ»ΡŽΡ‡4':300}
new_dict = Counter(d1) + Counter(d2)
print(new_dict)
  • ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° ΠΏΠ°Ρ€ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ массива A, суммарноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€Π°Π²Π½ΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ N.
РСализация Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π½Π° Python
def print_pairs(arr, N):
   # hash set
   hash_set = set()
    
   for i in range(0, len(arr)):
       val = N-arr[i]
       if (val in hash_set):
           print("ΠŸΠ°Ρ€Π°: " + str(arr[i]) + ", " + str(val))
       hash_set.add(arr[i])

arr = [1, 2, 40, 3, 9, 4]
N = 3
print_pairs(arr, N)
***

ΠœΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

Π›Π£Π§Π¨Π˜Π• БВАВЬИ ПО Π’Π•ΠœΠ•

admin
11 дСкабря 2018

ООП Π½Π° Python: ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ, ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Python допускаСт Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΈ, Π½ΠΎ Π² Π΅Π³ΠΎ основС...
admin
28 июня 2018

3 самых Π²Π°ΠΆΠ½Ρ‹Ρ… сфСры примСнСния Python: возмоТности языка

БущСствуСт мноТСство областСй примСнСния Python, Π½ΠΎ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ½ особСнно...
admin
13 фСвраля 2017

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Python: ΠΎΡ‚ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ° Π΄ΠΎ профСссионала

Пошаговая инструкция для всСх, ΠΊΡ‚ΠΎ Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒΒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Python...