πŸ”Ž Как эффСктивно Π΄Π΅Π±Π°ΠΆΠΈΡ‚ΡŒ Π² Python: Π»ΡƒΡ‡ΡˆΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ инструмСнты 🧰

Как Π΄Π΅Π±Π°ΠΆΠΈΡ‚ΡŒ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅?

Для Π΄Π΅Π±Π°Π³Π° ΠΊΠΎΠ΄Π° Π² Python Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ использованиС модуля pdb. Π’ΠΎΡ‚ ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ:


import pdb

def функция():
    пСрСмСнная = 5
    pdb.set_trace()
    # остановка выполнСния ΠΊΠΎΠ΄Π° ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π² pdb-Ρ€Π΅ΠΆΠΈΠΌ
    Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = пСрСмСнная * 2
    print(Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚)

функция()

ПослС запуска ΠΊΠΎΠ΄Π°, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ остановлСно Π½Π° строкС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ pdb.set_trace(). Π—Π°Ρ‚Π΅ΠΌ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для Π΄Π΅Π±Π°Π³Π°:

  • h(elp): ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ список доступных ΠΊΠΎΠΌΠ°Π½Π΄ Π² pdb.
  • w(here): ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ ΠΊΠΎΠ΄Π°.
  • n(ext): ВыполняСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ строку ΠΊΠΎΠ΄Π°.
  • c(ontinue): ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π±Π΅Π· остановки.
  • q(uit): Π’Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΈΠ· pdb-Ρ€Π΅ΠΆΠΈΠΌΠ° ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ остановки прямо Π² ΠΊΠΎΠ΄Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ pdb.set_trace(). Π­Ρ‚ΠΎ позволяСт Π²Π°ΠΌ Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠΎ ΠΊΠΎΠ΄Ρƒ поэтапно для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΈ исправлСния ошибок.

Π£Π΄Π°Ρ‡Π½ΠΎΠ³ΠΎ Π΄Π΅Π±Π°Π³Π°!

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

Как Π΄Π΅Π±Π°ΠΆΠΈΡ‚ΡŒ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅

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

1. Π’Ρ‹Π²ΠΎΠ΄ Π½Π° экран

ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΌ способом Π΄Π΅Π±Π°Π³Π³ΠΈΠ½Π³Π° являСтся Π²Ρ‹Π²ΠΎΠ΄ Π½Π° экран. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ print() для Π²Ρ‹Π²ΠΎΠ΄Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, сообщСний ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.


# ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹Π²ΠΎΠ΄Π° значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ
x = 10
print(x)  # Π’Ρ‹Π²Π΅Π΄Π΅Ρ‚: 10

# ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠ³ΠΎ сообщСния
print("Π—Π΄Π΅ΡΡŒ происходит ошибка!")

Π’Ρ‹Π²ΠΎΠ΄ Π½Π° экран ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ ΠΏΡ€ΠΈ просмотрС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² Ρ€Π°Π·Π½Ρ‹Ρ… частях ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅, достигаСтся Π»ΠΈ опрСдСлСнная Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°.

2. ИспользованиС ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° pdb

Python ΠΈΠΌΠ΅Π΅Ρ‚ встроСнный ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ°, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ pdb, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π½Π°ΠΌ Π±ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ pdb, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ pdb ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΠΈ останова Π² ваш ΠΊΠΎΠ΄, Π³Π΄Π΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π½Π°Ρ‡Π°Ρ‚ΡŒ Π°Π½Π°Π»ΠΈΠ·. ПослС этого Π²Ρ‹ смоТСтС Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ свой ΠΊΠΎΠ΄ ΠΏΠΎ шагам ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…


import pdb

# ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° pdb
def my_function():
    x = 10
    y = 5
    result = x + y
    pdb.set_trace()  # Π’ΠΎΡ‡ΠΊΠ° останова
    return result

print(my_function())

ПослС добавлСния Ρ‚ΠΎΡ‡ΠΊΠΈ остановки с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ pdb.set_trace(), Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ остановится, ΠΈ Π²Ρ‹ смоТСтС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ°, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ step (ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ строкС), next (ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ Π²Ρ‹Π·ΠΎΠ²Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ) ΠΈΠ»ΠΈ print (вывСсти Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ).

3. ИспользованиС ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… срСд Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… срСд Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ (IDE), Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ PyCharm, Visual Studio Code ΠΈ PyDev, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ встроСнныС инструмСнты Π΄Π΅Π±Π°Π³Π³ΠΈΠ½Π³Π°. Они ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ интСрфСйсом ΠΈ ΠΌΠΎΡ‰Π½Ρ‹ΠΌΠΈ функциями, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Ρ‚ΠΎΡ‡ΠΊΠΈ останова, просмотр Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ шаг Π·Π° шагом Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°.

Для использования Π΄Π΅Π±Π°Π³Π³Π΅Ρ€Π° Π² вашСй срСдС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ слСдуйтС инструкциям ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ. КаТдая срСда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ свои собствСнныС особСнности ΠΈ инструмСнты.

4. ИспользованиС модуля logging

ΠœΠΎΠ΄ΡƒΠ»ΡŒ logging прСдоставляСт Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹ΠΉ способ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ вашСго ΠΊΠΎΠ΄Π°. Он позволяСт Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ сообщСния Π² ΠΆΡƒΡ€Π½Π°Π» ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ подробности для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ сообщСния.


import logging

# ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования модуля logging
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)

logger.debug("ΠžΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠ΅ сообщСниС")
logger.info("Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ΅ сообщСниС")
logger.warning("ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°ΡŽΡ‰Π΅Π΅ сообщСниС")
logger.error("Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΠ± ошибкС")
logger.critical("ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ сообщСниС")

ΠŸΡƒΡ‚Π΅ΠΌ настройки уровня Турналирования ΠΈ использования Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ записи, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ debug(), info() ΠΈ error(), Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ сообщСний Π² ΠΆΡƒΡ€Π½Π°Π» ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΡƒΡ€ΠΎΠ²Π½ΠΈ подробности.

5. ИспользованиС трассировки стСка

Врассировка стСка - это процСсс отслСТивания ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. Π’ Python Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ traceback для отобраТСния ΠΏΠΎΠ»Π½ΠΎΠΉ трассировки стСка Π² случаС возникновСния ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ.


import traceback

# ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования трассировки стСка
def my_function():
    x = 10
    y = 0
    try:
        result = x / y
        return result
    except Exception as e:
        traceback.print_exc()

print(my_function())

Если Π²ΠΎ врСмя выполнСния ΠΊΠΎΠ΄Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, трассировка стСка ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Π² ΠΊΠ°ΠΊΠΎΠΉ части ΠΊΠΎΠ΄Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ошибка ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΈΠ²Π΅Π»ΠΈ ΠΊ этой ошибкС.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ познакомились с основными инструмСнтами ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ Π΄Π΅Π±Π°Π³Π³ΠΈΠ½Π³Π° Π² Python. ΠœΡ‹ рассмотрСли Π²Ρ‹Π²ΠΎΠ΄ Π½Π° экран, использованиС ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° pdb, ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΌΠΎΠ΄ΡƒΠ»ΡŒ logging ΠΈ трассировку стСка.

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

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

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

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

ΠžΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ Π² VS Code: Π±Π°Π·ΠΎΠ²Ρ‹Π΅ возмоТности (Python)

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

πŸ“š Π“Π΄Π΅ Π»Π΅ΠΆΠ°Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Python? Π£Π·Π½Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΉΠ½Ρ‹ хранСния Python Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ! πŸ“š

⚑️ Как Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π² ΠŸΠΈΡ‚ΠΎΠ½Π΅ для умноТСния чисСл? Π˜Π·ΡƒΡ‡Π°Π΅ΠΌ шаг Π·Π° шагом!

πŸ” Как вывСсти traceback Π² except python: простоС руководство

πŸ”Ž Как эффСктивно Π΄Π΅Π±Π°ΠΆΠΈΡ‚ΡŒ Π² Python: Π»ΡƒΡ‡ΡˆΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ инструмСнты 🧰

πŸ” Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠ΅ Π² Python: простоС руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

Π“Π΄Π΅ ΠΈΡΠΊΠ°Ρ‚ΡŒ мСста для создания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° Python?

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ дСскрипторы Π² Python? 🐍