26/10/2025 –, Avançada
Discutiremos o ciclo de vida de uma função desde o código-fonte até ser compilada e por fim executada pela VM CPython, e como fazemos para serializar funções definidas em notebooks Databricks.
Na Shape Digital, embora tenhamos milhares modelos de machine learning em produção, muitos deles requerem um pré-processamento de dados customizado. Para reduzir o atrito de exigir que o código que implementa cada um desses pré-processamentos seja mantido em um repositório, o que fazemos é embutir “a função em si” no modelo que será enviado para produção.
Mas o que é “a função em si”? Nessa palestra, apresentaremos o ciclo de vida de uma função no CPython. Para quem não sabe, “Python” é o nome da linguagem de programação, mas o interpretador que lê o código que a gente escreveu em Python e o executa se chama “CPython” (porque é escrito em C).
Vamos explorar como funciona a definição de uma função via código-fonte, como elas são compiladas para bytecode, como são representadas internamente pelo interpretador, como funciona exatamente o processo de execução do bytecode, e como podemos inspecionar o interpretador “ao vivo” (em tempo de execução) para ter acesso a todos esses “internals.”
Por fim, vamos mostrar como interagimos com todas essas etapas para executar em produção, de forma segura e portável, a função que foi definida pelo cientista de dados em um notebook Databricks.
Para aproveitar o conteúdo da palestra, é necessário estar confortável com conceitos básicos de programação em geral, com o uso desses conceitos no Python: variáveis locais e globais, valores mutáveis e imutáveis, tipos, funções.
Os seguitnes conceitos mais avançados serão explicados, mas é útil já ter alguma noção prévia por alto: closures (funções definidas dentro de outras funções), variáveis livres (com a keyword nonlocal), funcionamento dos valores default de parâmetros de funções (por exemplo, é útil já conhecer a pegadinha clássica de que o valore default é calculado no momento em que a função é instanciada, e, se ele for mutável, a mutação persiste através de diferentes chamadas da função).
Não é necessário entender nada de machine learning nem entender como "notebooks" funcionam.
O que as pessoas que participarem podem esperar aprender na sua atividade?:Podem esperar ganhar uma visão mais clara sobre o funcionamento interno do Python: especificamente sobre funções, escopo de variáveis, e sobre o processo de execução de um código Python (compilação para bytecode, e execução do bytecode dentro de um espaço de nomes). São noções que não serão usadas diretamente no dia-a-dia dos desenvolvedores na maioria das vezes, mas fazem parte de uma cultura geral interessante, e, na minha opinião, aumentam a capacidade do desenvolvedor de resolver bugs relacionados a closures, escopos de variáveis, e execução de linhas de código "soltas" usando eval ou exec.
Escolha uma ou mais áreas em que essa proposta se encaixa:Arquitetura de software
Sou matemático de formação, usuário e entusiasta de Software Livre e Open Source há mais de 20 anos, e escrevo Python há mais de 15. Hoje sou engenheiro de machine learning na Shape Digital.