πŸ” ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ debug Π² Python ΠΈ ΠΊΠ°ΠΊ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ?

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ debug Π² python?

Debugging - это процСсс обнаруТСния ΠΈ исправлСния ошибок Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅. Π’ Python Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ встроСнный ΠΌΠΎΠ΄ΡƒΠ»ΡŒ pdb для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΊΠΎΠ΄Π°. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования:


import pdb

def add_numbers(a, b):
    result = a + b
    pdb.set_trace() # ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° выполнСния ΠΊΠΎΠ΄Π° ΠΈ запуск ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ консоли ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ°
    return result

print(add_numbers(5, 3))

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ добавляСт числа 5 ΠΈ 3, Π° Π·Π°Ρ‚Π΅ΠΌ останавливаСт Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ консоль ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ°. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° для Π°Π½Π°Π»ΠΈΠ·Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, выполнСния шагов ΠΈ контроля выполнСния ΠΊΠΎΠ΄Π°. ПослС ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ошибки ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ваш ΠΊΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Π°Π» ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ.

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ debug Π² Python?

ΠžΡ‚Π»Π°ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ (debug) - это процСсс нахоТдСния ΠΈ исправлСния ошибок Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅. Π’ Python сущСствуСт нСсколько инструмСнтов для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ программистам ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΈ ΠΈΡΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ошибки Π±ΠΎΠ»Π΅Π΅ эффСктивно.

ΠŸΠ΅Ρ‡Π°Ρ‚ΡŒ (Print)

Одним ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ простых способов ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Π² Python являСтся использованиС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ print для Π²Ρ‹Π²ΠΎΠ΄Π° ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ². ΠŸΡƒΡ‚Π΅ΠΌ размСщСния Π²Ρ‹Π²ΠΎΠ΄Π° print Π² Ρ€Π°Π·Π½Ρ‹Ρ… частях ΠΊΠΎΠ΄Π° ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹Π΅ значСния. Рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

x = 5
y = 7
z = x + y

print("Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ x:", x)
print("Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ y:", y)
print("Π‘ΡƒΠΌΠΌΠ° x ΠΈ y:", z)

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ выполнСния этого ΠΊΠΎΠ΄Π° ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π²ΠΎΠ΄:

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ x: 5
Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ y: 7
Π‘ΡƒΠΌΠΌΠ° x ΠΈ y: 12

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ print ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ значСния x ΠΈ y, Π° Ρ‚Π°ΠΊΠΆΠ΅ сумму x ΠΈ y, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π½Π°ΠΌ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ эти ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π²Π΅Ρ€Π½ΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ.

Врассировка (Traceback)

Π’ Python ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ трассировку (traceback) для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Когда Π² ΠΊΠΎΠ΄Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ошибка, Python Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ трассировку, которая ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ мСсто, Π³Π΄Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»Π° ошибка, Π° Ρ‚Π°ΠΊΠΆΠ΅ стСк Π²Ρ‹Π·ΠΎΠ²ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ²Π΅Π» ΠΊ Π΄Π°Π½Π½ΠΎΠΉ ошибкС. Рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

def divide(a, b):
    return a / b

x = 10
y = 0
z = divide(x, y)

ΠŸΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ дСлСния Π½Π° ноль ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π²ΠΎΠ΄ с трассировкой:

Traceback (most recent call last):
  File "<stdin>", line 5, in <module>
  File "<stdin>", line 2, in divide
ZeroDivisionError: division by zero

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

ΠžΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ (Debugger)

Python Ρ‚Π°ΠΊΠΆΠ΅ прСдоставляСт ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ (debugger), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся ΠΌΠΎΡ‰Π½Ρ‹ΠΌ инструмСнтом для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΊΠΎΠ΄Π°. ΠžΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ позволяСт Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ пошагово, Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ выполнСния ΠΈ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΠΈ останова для Π±ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°. Рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

def calculate_sum(a, b):
    result = a + b
    return result

x = 5
y = 3
z = calculate_sum(x, y)

Для запуска ΠΊΠΎΠ΄Π° Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ pdb Π² Python ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

import pdb

pdb.set_trace()

def calculate_sum(a, b):
    result = a + b
    return result

x = 5
y = 3
z = calculate_sum(x, y)

ПослС запуска ΠΊΠΎΠ΄Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ°, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ интСрфСйс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π½Π°ΠΌ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ n (ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ строка), s (Π²Ρ…ΠΎΠ΄ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ), c (ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹), p (Π²Ρ‹Π²ΠΎΠ΄ значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ) ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ для Π°Π½Π°Π»ΠΈΠ·Π° значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ понимания процСсса выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π’Ρ‹Π²ΠΎΠ΄

Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрСли Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ ΠΊ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ Π² Python. ΠŸΠ΅Ρ‡Π°Ρ‚ΡŒ (print), трассировка (traceback) ΠΈ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ (debugger) ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌΠΈ инструмСнтами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ программистам Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈ ΠΈΡΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ошибки Π² своСм ΠΊΠΎΠ΄Π΅. Π’Ρ‹Π±ΠΎΡ€ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° зависит ΠΎΡ‚ слоТности ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Ρ‚ΠΈΠΏΠ° ошибки, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ. ИспользованиС ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ этих инструмСнтов ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΡΡ‚Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ эффСктивным Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ Python.

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

PYCHARM Π”Π›Π― PYTHON. 2 ЧАБВЬ. DEBUGGER

Π£Ρ€ΠΎΠΊΠΈ Python / Как ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π² ΠŸΠ°ΠΉΡ‚ΠΎΠ½ / ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

ΠžΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ (debugger) Π² PyCharm. Π§Π°ΡΡ‚ΡŒ 2

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

πŸ” Как Π½Π°ΠΉΡ‚ΠΈ максимум Π² словарС python: простой способ с ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΌ объяснСниСм

πŸ”₯ Начни сСйчас: Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ свои ΠΌΠΎΠ΄Ρ‹ для Minecraft Π½Π° Python!

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Python Π½Π΅ запускаСтся Π½Π° Windows 7? 🐍❌

πŸ” ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ debug Π² Python ΠΈ ΠΊΠ°ΠΊ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ?

Как ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ сайт python? Π£Π·Π½Π°ΠΉΡ‚Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этих совСтов!

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ digit python ΠΈ ΠΊΠ°ΠΊ ΠΈΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ 🐍 | ΠŸΠΎΠ½ΡΡ‚Π½ΠΎΠ΅ объяснСниС

Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ else Π² Python: ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ объяснСниС ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π°