← Tutti i video

Come Funziona Python?

Guarda su YouTube → 35:05 8 settembre 2025

Descrizione

Oggi parliamo di Python e del suo funzionamento interno. In futuro ci saranno altri approfondimenti. Se vuoi supportare il mio effort :) - https://www.patreon.com/hexdump Web Application Penetration Testing - https://www.udemy.com/course/practical-wapt/?referralCode=15450B3828BA5A3B23CB Linux Privilege Escalation - https://www.udemy.com/course/linux-privesc/?couponCode=33738F67D2C09EB25600 Scopri il mio lavoro: - https://esadecimale.it - https://hexdump.sh TIMESTAMPS 00:00 Introduzione 06:00 Abstract Syntax Tree 14:30 Bytecode 24:00 CPython

Commenti 18

I commenti vengono da YouTube e sono aggiornati periodicamente.

  1. @AnomaliA-ty2si 8 settembre 2025
    Spiegazione chiarissima! Un video che mostra davvero cosa succede dentro l’interprete Py 👏
  2. @SimoneAntoninoCrocè 10 settembre 2025 1
    Ciao, grazie per il video. A titolo informativo, visto che per curiosità l'ho chiesto ad un LLM: Nell'AST, il contesto ("ctx", si può vedere verso il minuto 7.25 del video) specifica l'impiego che si fa del nome associato al target, e quindi concretamente del nome della variabile; nel caso in cui il valore di "ctx" sia "Store()" vuol dire che il nome è il target di un'operazione di assegnamento di un certo valore; se invece è "Load()", è il target di un'operazione di lettura, se è "Del()" è il target di un'operazione di eliminazione.
  3. @luca75tubo 8 settembre 2025 2
    Molto interessante. Grazie.
    1 risposta
    1. @esadecimale Autore 8 settembre 2025
      Molte grazie per il supporto
  4. @Sagat_mi 8 settembre 2025
    Grazie
  5. @ga8r0 4 novembre 2025
    Ciao, non ho ancora visto il video ma dai commenti non vedo la risposta. Sarei curioso sui file pyd, ho letto che sono equivalenti ai dll di Windows ma cosa significa esattamente.
  6. @pochopsp 9 settembre 2025
    Una nota: il colore rosso su questo sfondo quando disegni / scrivi a mano è difficilissimo da vedere, soprattutto per daltonici
    3 risposte
    1. @esadecimale Autore 9 settembre 2025
      Mi dispiace, che colore preferiresti?
    2. @pochopsp 9 settembre 2025
      ​@esadecimaleciao grazie per il commento. Non saprei esattamente, ma un colore chiaro sicuramente aiuterebbe, fa molto contrasto con sfondo scuro
    3. @esadecimale Autore 9 settembre 2025
      Ok farò delle prove nei prossimi video cercando di creare più contrasto
  7. @giovannisardisco4541 8 settembre 2025
    Domanda: sbaglio o l'AST viene generato anche dagli IDE per capire dove iniziano e finiscono i blocchi di codice, la definizione delle variabili, ecc.? (e quindi permettere la selezione a blocchi dall'entità interna fino al blocco più globale)
    1 risposta
    1. @esadecimale Autore 8 settembre 2025
      si, molto IDE analizzano il codice in questo modo. In futuro parlero di tree-sitter, una libreria che genera AST ideata per effettuare syntax highlighting in modo veloce. Può anche essere utilizzata per fare manipolazioni a livello dell’AST. Insomma la rappresentazione ad AST non è la più performante, meglio il bytecode, ma è molto utile per delle feature di utility
  8. @giovannisardisco4541 8 settembre 2025
    Non mi è ben chiara una cosa: se in Java il byte code per la JVM viene generato sull'intera codebase a compile time, Python è definito un linguaggio interpretato, perché compila ed esegue le singole funzioni volta per volta?
    5 risposte
    1. @esadecimale Autore 8 settembre 2025
      Si esatto, hanno la stessa struttura in termine di "trasformazioni del codice", quindi fanno sorgente -> ast -> bytecode, ma java ti genera tutto il bytecode a partire da tutto il file. Infatti hai javac che prende sorgente e generate bytecode, e poi java che è effettivamente il runner che esegue bytecode (tecnicamente interpreta bytecode). Quindi javac compilatore, java interprete di bytecode. Mentre in python è un singolo blocco, un interprete appunto, che combina li step di generazione ed esecuzione. Poi tipo in python ci sono i pyc che sono i bytecode del programma che python usa per performance. Quindi comunque è sempre un mix. Diciamo "compilatore" ed "interprete" sono termini generali. Ciò che conta sono le singole trasformazioni
    2. @giovannisardisco4541 8 settembre 2025
      ​@esadecimaleinfatti! Forse per questo non capivo. Di fatto cambia solo il momento di interpretazione del bytecode, ma fanno esattamente la stessa cosa: passano ad una VM del bytecode che viene trasformato in istruzioni macchina. Python lo fa al volo e solo di quello che man mano gli serve (se non ho capito male), Java distingue le due fasi: il compile time di tutto il codice e il runtime che interpreta il compilato. Non sono esperto di Python, ma questa cosa mi shocca. Non pensavo fossero così simili questi 2 linguaggi. Alla faccia della netta distinzione che ho sempre sentito dire tra linguaggio compilato e interpretato 😅 Cambia solo il quando e il come, non il cosa fanno.
    3. @esadecimale Autore 8 settembre 2025 1
      @giovannisardisco4541Eh si, il bello di guardare sotto il “cofano”
    4. @pochopsp 9 settembre 2025
      Esiste ambiente REPL per Java (e quindi hai un interprete Java) così come anche puoi compilare un intero blocco di codice Python
    5. @giovannisardisco4541 9 settembre 2025 1
      ​@pochopspsi, conoscevo entrambe queste possibilità, ma non ho mai provato ad usarle. Perché non mi è mai servito e perché non capivo la "stregoneria" dietro queste feature. Capendo i processi alla base, è tutto più interessante e divertente da provare 😃