<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Python Avançado on Python Brasil — Aprenda Python em Português</title>
    <link>https://python.dev.br/tags/python-avan%C3%A7ado/</link>
    <description>Recent content in Python Avançado on Python Brasil — Aprenda Python em Português</description>
    <generator>Hugo</generator>
    <language>pt-br</language>
    <lastBuildDate>Tue, 28 Apr 2026 16:49:51 -0300</lastBuildDate>
    <atom:link href="https://python.dev.br/tags/python-avan%C3%A7ado/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Python Protocols: Tipagem Estrutural Sem Herança — 2026 | python.dev.br</title>
      <link>https://python.dev.br/blog/python-protocols-tipagem-estrutural/</link>
      <pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://python.dev.br/blog/python-protocols-tipagem-estrutural/</guid>
      <description>&lt;p&gt;Python sempre foi uma linguagem de &lt;strong&gt;duck typing&lt;/strong&gt;: se um objeto tem os métodos certos, ele funciona — independente da classe ou herança. Mas quando você adiciona &lt;a href=&#34;https://python.dev.br/blog/tipagem-estatica-python-mypy/&#34;&gt;type hints&lt;/a&gt; ao código, surge um problema: como tipar algo que depende de comportamento, e não de uma classe específica?&lt;/p&gt;&#xA;&lt;p&gt;A resposta veio com a PEP 544 no Python 3.8: &lt;strong&gt;Protocol&lt;/strong&gt; — uma forma de definir interfaces baseadas em estrutura, não em herança. Neste artigo, vamos explorar como Protocols funcionam, quando usá-los, e como eles transformam a qualidade do código Python.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Context Managers em Python: Dominando o with</title>
      <link>https://python.dev.br/blog/context-managers-python-with/</link>
      <pubDate>Fri, 27 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://python.dev.br/blog/context-managers-python-with/</guid>
      <description>&lt;p&gt;Esquecer de fechar um arquivo, não liberar uma conexão com o banco de dados, deixar um lock travado — esses são erros sutis que causam bugs difíceis de rastrear. Os &lt;strong&gt;context managers&lt;/strong&gt; do Python resolvem isso com elegância, garantindo que recursos sejam sempre liberados, mesmo quando ocorrem exceções.&lt;/p&gt;&#xA;&lt;h2 id=&#34;o-que-são-context-managers&#34;&gt;O Que São Context Managers&lt;/h2&gt;&#xA;&lt;p&gt;Um context manager é qualquer objeto que implementa os métodos &lt;code&gt;__enter__&lt;/code&gt; e &lt;code&gt;__exit__&lt;/code&gt;. Quando usado com a instrução &lt;code&gt;with&lt;/code&gt;, o Python garante que &lt;code&gt;__enter__&lt;/code&gt; é chamado no início do bloco e &lt;code&gt;__exit__&lt;/code&gt; é chamado ao final — sempre, mesmo se uma exceção ocorrer no meio.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Pattern Matching em Python: Guia Completo do match/case | Python Brasil</title>
      <link>https://python.dev.br/blog/pattern-matching-python-match-case/</link>
      <pubDate>Sat, 21 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://python.dev.br/blog/pattern-matching-python-match-case/</guid>
      <description>&lt;p&gt;O &lt;strong&gt;Structural Pattern Matching&lt;/strong&gt; (correspondência de padrões estruturais) chegou ao Python na versão 3.10 e é uma das adições mais poderosas à linguagem nos últimos anos. Com a sintaxe &lt;code&gt;match/case&lt;/code&gt;, você pode escrever código mais expressivo, legível e robusto para lidar com dados complexos.&lt;/p&gt;&#xA;&lt;p&gt;Neste guia completo, vamos explorar tudo sobre pattern matching em Python: desde o básico até padrões avançados com guards, destructuring e classes.&lt;/p&gt;&#xA;&lt;h2 id=&#34;o-que-é-pattern-matching&#34;&gt;O que é Pattern Matching?&lt;/h2&gt;&#xA;&lt;p&gt;Pattern matching é uma técnica que permite comparar um valor contra uma série de padrões e executar código baseado no padrão que corresponder. Se você já programou em &lt;a href=&#34;https://rustlang.com.br/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34; onclick=&#34;umami.track(&#39;portfolio-site-click&#39;, { destination: &#39;rustlang.com.br&#39; })&#34;&gt;Rust&lt;/a&gt;, Scala ou Haskell, já conhece o conceito. Em Python, a sintaxe usa as palavras-chave &lt;code&gt;match&lt;/code&gt; e &lt;code&gt;case&lt;/code&gt;:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Context Manager em Python: O que É e Como Funciona | Python Brasil</title>
      <link>https://python.dev.br/glossario/context-manager/</link>
      <pubDate>Tue, 10 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://python.dev.br/glossario/context-manager/</guid>
      <description>&lt;h2 id=&#34;o-que-é-um-context-manager&#34;&gt;O que é um Context Manager?&lt;/h2&gt;&#xA;&lt;p&gt;Um &lt;strong&gt;context manager&lt;/strong&gt; é um objeto que define o comportamento de &lt;strong&gt;entrada e saída&lt;/strong&gt; de um bloco &lt;code&gt;with&lt;/code&gt;. Ele garante que recursos (como arquivos, conexões de banco de dados ou locks) sejam &lt;strong&gt;corretamente liberados&lt;/strong&gt; após o uso, mesmo se ocorrer uma exceção.&lt;/p&gt;&#xA;&lt;p&gt;É um dos padrões mais elegantes do Python para gerenciamento seguro de recursos, eliminando erros de &amp;ldquo;esqueceu de fechar&amp;rdquo; que ocorrem com código manual de cleanup.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Iterator em Python: O que É e Como Funciona | Python Brasil</title>
      <link>https://python.dev.br/glossario/iterator/</link>
      <pubDate>Fri, 30 Jan 2026 00:00:00 +0000</pubDate>
      <guid>https://python.dev.br/glossario/iterator/</guid>
      <description>&lt;h2 id=&#34;o-que-é-um-iterator&#34;&gt;O que é um Iterator?&lt;/h2&gt;&#xA;&lt;p&gt;Um &lt;strong&gt;iterator&lt;/strong&gt; (iterador) é um objeto que implementa o &lt;strong&gt;protocolo de iteração&lt;/strong&gt; do Python, permitindo percorrer uma sequência de valores um por vez. Todo objeto sobre o qual você pode usar um &lt;code&gt;for&lt;/code&gt; é iterável, e por trás dos panos, o Python usa iterators para fazer isso funcionar.&lt;/p&gt;&#xA;&lt;p&gt;Iterators são a espinha dorsal de boa parte do Python: loops &lt;code&gt;for&lt;/code&gt;, list comprehensions, funções como &lt;code&gt;map()&lt;/code&gt;, &lt;code&gt;filter()&lt;/code&gt;, &lt;code&gt;zip()&lt;/code&gt; e &lt;code&gt;enumerate()&lt;/code&gt; — todas dependem desse protocolo. Entendê-lo profundamente é o que separa um desenvolvedor Python intermediário de um avançado.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Multiprocessing: O que É e Como Funciona | Python Brasil</title>
      <link>https://python.dev.br/glossario/multiprocessing/</link>
      <pubDate>Sun, 25 Jan 2026 00:00:00 +0000</pubDate>
      <guid>https://python.dev.br/glossario/multiprocessing/</guid>
      <description>&lt;h2 id=&#34;o-que-e-multiprocessing&#34;&gt;O que e Multiprocessing?&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Multiprocessing&lt;/strong&gt; e o modulo da biblioteca padrao do Python que permite executar codigo em &lt;strong&gt;multiplos processos&lt;/strong&gt; simultaneamente, aproveitando todos os nucleos da CPU. Diferente de threading, onde o GIL (Global Interpreter Lock) impede a execucao paralela real de codigo Python, cada processo no multiprocessing tem seu proprio interpretador e sua propria memoria, eliminando completamente a limitacao do GIL.&lt;/p&gt;&#xA;&lt;p&gt;O multiprocessing e a solucao ideal para tarefas &lt;strong&gt;CPU-bound&lt;/strong&gt; — calculos matematicos pesados, processamento de imagens, compressao de dados e qualquer operacao que exige uso intensivo do processador.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Threading: O que É e Como Funciona | Python Brasil</title>
      <link>https://python.dev.br/glossario/threading/</link>
      <pubDate>Thu, 18 Dec 2025 00:00:00 +0000</pubDate>
      <guid>https://python.dev.br/glossario/threading/</guid>
      <description>&lt;h2 id=&#34;o-que-e-threading&#34;&gt;O que e Threading?&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Threading&lt;/strong&gt; e uma forma de concorrencia em Python que permite executar multiplas tarefas aparentemente ao mesmo tempo dentro de um unico processo. Cada &lt;strong&gt;thread&lt;/strong&gt; e um fluxo de execucao independente que compartilha a memoria do processo pai. O modulo &lt;code&gt;threading&lt;/code&gt; da biblioteca padrao fornece uma interface de alto nivel para criar e gerenciar threads.&lt;/p&gt;&#xA;&lt;p&gt;E importante entender que, devido ao &lt;strong&gt;GIL&lt;/strong&gt; (Global Interpreter Lock) do CPython, threads Python nao executam codigo Python simultaneamente em multiplos nucleos. Threads sao mais eficientes para tarefas &lt;strong&gt;I/O-bound&lt;/strong&gt; (como requisicoes de rede, leitura de arquivos e consultas a banco de dados) do que para tarefas &lt;strong&gt;CPU-bound&lt;/strong&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Pillow: O que É e Como Funciona | Python Brasil</title>
      <link>https://python.dev.br/glossario/pillow/</link>
      <pubDate>Mon, 28 Jul 2025 00:00:00 +0000</pubDate>
      <guid>https://python.dev.br/glossario/pillow/</guid>
      <description>&lt;h2 id=&#34;o-que-e-pillow&#34;&gt;O que e Pillow?&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Pillow&lt;/strong&gt; e a biblioteca mais popular para processamento de imagens em Python. Ela e um fork moderno e ativamente mantido da PIL (Python Imaging Library) e suporta uma ampla variedade de formatos de imagem, incluindo JPEG, PNG, GIF, TIFF, BMP e WebP. Com Pillow, voce pode abrir, manipular, transformar e salvar imagens de forma programatica.&lt;/p&gt;&#xA;&lt;p&gt;Pillow e usada em aplicacoes web para redimensionar imagens de upload, gerar thumbnails, aplicar marcas dagua, converter entre formatos e criar graficos simples.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Generators em Python: O que É e Como Funciona | Python Brasil</title>
      <link>https://python.dev.br/glossario/generators/</link>
      <pubDate>Thu, 15 May 2025 00:00:00 +0000</pubDate>
      <guid>https://python.dev.br/glossario/generators/</guid>
      <description>&lt;h2 id=&#34;o-que-são-generators&#34;&gt;O que são Generators?&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Generators&lt;/strong&gt; são funções especiais em Python que produzem uma sequência de valores &lt;strong&gt;um de cada vez&lt;/strong&gt;, em vez de gerar tudo de uma só vez na memória. Eles usam a palavra-chave &lt;code&gt;yield&lt;/code&gt; no lugar de &lt;code&gt;return&lt;/code&gt; e implementam automaticamente o protocolo de iteração do Python.&lt;/p&gt;&#xA;&lt;p&gt;A grande característica dos generators é a &lt;strong&gt;avaliação preguiçosa&lt;/strong&gt; (lazy evaluation): os valores só são calculados quando solicitados. Isso os torna extremamente eficientes em termos de memória e indispensáveis para processar grandes volumes de dados.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Decorators em Python: O que É e Como Funciona | Python Brasil</title>
      <link>https://python.dev.br/glossario/decorators/</link>
      <pubDate>Fri, 02 May 2025 00:00:00 +0000</pubDate>
      <guid>https://python.dev.br/glossario/decorators/</guid>
      <description>&lt;h2 id=&#34;o-que-são-decorators&#34;&gt;O que são Decorators?&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Decorators&lt;/strong&gt; são uma forma elegante de &lt;strong&gt;modificar ou estender o comportamento de funções e classes&lt;/strong&gt; sem alterar seu código-fonte. Eles usam o símbolo &lt;code&gt;@&lt;/code&gt; e são um dos recursos mais poderosos e utilizados do Python.&lt;/p&gt;&#xA;&lt;p&gt;Se você já usou Flask ou Django, com certeza já viu decorators como &lt;code&gt;@app.route()&lt;/code&gt; ou &lt;code&gt;@login_required&lt;/code&gt;. Em código de produção eles aparecem em logging, autenticação, cache, retry, validação e muito mais.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
