Chcete být skutečným odborníkem na ladění Pythonu? Odlaďte svůj kód Python pomocí těchto úžasných nástrojů a knihoven pro ladění Pythonu, které brzy pokryjeme!
Python je univerzální, vysokoúrovňový a objektově orientovaný programovací jazyk používaný k mnoha vývojovým účelům. Navíc je to účinný vývojový nástroj pro různé aplikace, od vývoje webových aplikací po web scraping a složitější aplikace, jako je Machine learning a Data Science.
Během vývoje jsou náchylné k chybám nazývaným chyby v programování. Vývojáři podniknou několik kroků, aby odhalili a odstranili existující a potenciální chyby v kódu. V důsledku toho zabráníte rozdrcení programového kódu. Tomuto procesu říkáme ladění.
Tento článek se podívá na několik dostupných ladicích programů Pythonu, které můžete použít. Uvidíme také, jak se tyto debuggery od sebe liší a v čem je jejich implementace efektivní.
Table of Contents
Knihovna pro ladění cProfiler
cProfiler, je oblíbená knihovna a rozšíření C, které provádí profilování dlouhotrvajícího kódu. Z dlouhodobého hlediska identifikuje části programového kódu, jejichž spuštění trvá dlouho. I když identifikuje přesný čas potřebný ke spuštění různých částí kódu, zcela neidentifikuje ani neopravuje chyby v kódu.
Proto vyvstává potřeba použít jiné debuggery.
Naštěstí můžete místo toho použít doporučené knihovny jako ipdb, Django-debug-toolbar, pyelftools, viztracer a py-spy jako nástroje pro ladění kódu Pythonu.
Nástroj pro ladění ipdb
Plně Python Debugger s podporou IPythonu je interaktivní debugger třetí strany, který obsahuje pdbfunkčnost. IPbd také přichází s podporou interaktivního shellu IPython. Mezi další podpůrné funkce patří doplňování karet, podpora barev a magické funkce.
Tento debugger umožňuje přístup k debuggeru IPython exportem příslušných funkcí. Nabízí také podobné rozhraní pro lepší introspekci, stejně jako v modulu pdb.
Ladění pomocí Ipdb
Knihovna vyžaduje instalaci pomocí příkazu pip níže.
pip install ipdb
Příklad použití ipdb by vypadal takto:
import ipdb alpha_list = ['a', 'b', 'c'] fruit_list = ['orange', 'mango', 'kiwi'] def nested_loop(): for fruit_list: print (fruit) ipdb.set_trace() for x in alpha_list: print(x) if __name__ == '__main__': nested_loop()
Spusťte soubor python pomocí příkazu níže, kde test.py je název mého souboru:
python -m ipdb test.py
Import ipdb a spuštění funkce ipdb.set_trace() umožní spuštění programu a spustí ladicí program.
Funkce ipdb.pm() (post-mortem) funguje podobně jako funkce %debug magic.
argumenty set_trace
Předejte kontext jako argument pro set_trace, aby se zobrazilo několik definovaných řádků kódu. Navíc cond, který set_trace také přijímá jako argument, přijímá booleovské hodnoty a spouští rozhraní ipdb, když nastavíte cond na true.
Pomocí konfiguračního souboru
Nastavte argument kontextu pomocí souboru idpdb nebo souboru setup.cfg dostupného v domovské složce a složce projektu. Můžete dále zkontrolovat funkčnost ipdb.
Panel nástrojů Django Debug
The Panel nástrojů pro ladění Django je populární ladicí nástroj v Django: framework Python.
Tato konfigurovatelná sada panelů zobrazuje informace o ladění aktuálního požadavku nebo odpovědi. Když kliknete na panel nástrojů, zobrazí se další podrobnosti o obsahu panelu.
Tento nástroj důkladně prověřuje vývojové prostředí Django.
Postupujte podle instalačního procesu a pokynů pro konfiguraci tady.
Knihovna Pyelftools
The pyelftools knihovna je postavena čistě na Pythonu. Analyzuje a analyzuje soubory ELF a informace o ladění DWARF a ke spuštění vyžaduje pouze Python.
Použití Pyelftools je snadné, protože nemá externí knihovny. Navíc je použití pyelftools bez instalace docela snadné, protože jednoduše vyžaduje úpravu PYTHONPATH v proměnných prostředí.
Nainstalujete jej pomocí:
pip install pyelftools
Implementace pyelftools jednoduše vyžaduje jejich import a vyvolání ve vašem programu.
Nástroj pro ladění zmrzliny 🍦
Toto je další účinný nástroj pro ladění pro vývojáře Pythonu.
Použitím zmrzlinataké ic(), přichází s mnoha výhodami oproti print(), jak je uvedeno níže:
- Psaní je relativně rychlejší, doslova.
- Docela dobře tiskne datové struktury.
- Vytiskněte výrazy nebo názvy proměnných a jejich hodnoty pomocí ic().
- Zvýrazňuje syntaxi výstupu.
- Volitelně zahrnuje kontext programu, včetně názvu souboru, čísla řádku a rodičovské funkce.
Před použitím tohoto balíčku jej nainstalujte pomocí příkazu pip níže:
pip install icecream
Dobrá věc je, že můžete použít ic() ve všech souborech, aniž byste ji museli nutně importovat do všech souborů instalací pomocí install(). Navíc install() přidá ic() do vestavěného modulu. Všechny soubory, které interpret importuje, budou sdílet ic().
Do svého prvního kořenového python souboru, který můžete pojmenovat x.py, přidejte ic() pomocí install().
from icecream import install install() from y import mult mult()
V souboru y.py se importuje soubor x.py, zavolejte ic()
def mult(): z=8 ic(z)
Výsledek:
y ic| z : 8
Co dělá ic() efektivnější, je jeho schopnost kontrolovat proměnné, které mu byly předány, včetně sebe sama, a poté vytisknout své argumenty a hodnoty argumentů jako v následujícím příkladu.
from icecream import ic def mult(x): return x * 4 ic(mult(100))
Výstup:
ic| mult(100): 400
Navíc můžete vložit ic() do již existujícího kódu, protože vrací své argumenty. Níže uvedený příklad vrátí ic| x: 12, pak ic| y: 48.
from icecream import ic x = 12 def mult(x): return x*4 y = mult(ic(x)) ic(y)
Ladění pomocí nástroje py-spy
Můžeš použít py-špion k profilování vzorků pro programy Python jako ladicí nástroj. Bez restartování programu nebo úpravy jeho kódu py-spy vizualizuje provádění programu Python. Navíc, protože je napsán v Rustu, má nízkou režii.
Kromě toho stojí za zvážení, že použití py-spy proti produkčnímu kódu Pythonu je bezpečné, protože spouští odlišný proces než profilovaný program Python.
Stejně jako každý jiný předchozí nástroj, který jsme viděli, můžete nástroj py-spy použít po jeho instalaci.
pip install py-spy
Navzdory tomu, že váš program Python obsluhuje produkční provoz, stále můžete tento program profilovat a ladit pomocí py-spy, což z něj činí kritický nástroj profilování Pythonu.
Debugger Viztracer
Alternativně můžete použít viztracer, ladicí nástroj, ke sledování a vizualizaci provádění vašeho programu Python. Je to také profilovací nástroj s nízkou režií protokolování.
Co dělá viztracer účinný nástroj pro ladění?
- Používání je docela snadné a není závislé na externích balíčcích, aby fungovaly.
- Viztracer funguje na všech platformách operačního systému: Windows, Linux nebo macOS.
- Jeho výkonný front-end plynule vykresluje trasování na úrovni GB.
- Používá RegEx k přihlášení libovolných funkcí a dalších informací, jako je proměnné a atributy, Zvýšené výjimky, Operace Garbage Collectoratd., aniž byste upravovali jakoukoli část kódu ve zdrojovém kódu.
- To, co dělá viztracer nástrojem pro ladění s nízkou režií, je jeho schopnost odfiltrovat data, která ve svém programu nepotřebujete. Poté uchová staré informace před uložením protokolu ve formátu JSON.
- Můžete jej použít k vložení vlastních událostí, jako je okamžitá událost, proměnná událosta Trvání události jak program běží. Tímto způsobem to funguje jako ladění tisku, kromě toho, že vám viztracer dá vědět, kdy dojde k tisku, když trasujete data.
Závěr
Profilování a ladění Pythonu, stejně jako profilování softwaru, je klíčovým krokem ve vývoji, který vyžaduje pozornost. Tento krok pomáhá vyloučit jakékoli části kódu s chybami, aby byl optimalizován celkový výkon kódu.
Nástroje pro ladění, které jsme popsali výše, jsou účinné nástroje, které vývojářům v Pythonu docela usnadňují práci.
Vzhledem k tomu, že ostatní ladicí nástroje fungují efektivněji než cProfiler, můžete jako skutečný hrdina ladit svůj kód Pythonu a pomocí těchto ladicích programů opravovat případné chyby, abyste zabránili spuštění kódu bez pádu.
Šťastné ladění!