<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Boas Praticas on Python Brasil — Aprenda Python em Português</title>
    <link>https://python.dev.br/tags/boas-praticas/</link>
    <description>Recent content in Boas Praticas 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/boas-praticas/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Boas Praticas Python para 2026</title>
      <link>https://python.dev.br/blog/boas-praticas-python-2026/</link>
      <pubDate>Thu, 12 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://python.dev.br/blog/boas-praticas-python-2026/</guid>
      <description>&lt;p&gt;O ecossistema Python evolui rapidamente, e as boas praticas de hoje refletem anos de aprendizado da comunidade. Com Python 3.13 estavel e o 3.14 no horizonte, temos novas ferramentas, padroes e abordagens que elevam a qualidade do codigo. Neste artigo, reunimos as praticas mais importantes que todo desenvolvedor Python deve adotar em 2026.&lt;/p&gt;&#xA;&lt;h2 id=&#34;use-tipagem-estatica-desde-o-inicio&#34;&gt;Use Tipagem Estatica Desde o Inicio&lt;/h2&gt;&#xA;&lt;p&gt;Tipagem estatica deixou de ser opcional em projetos profissionais. Com o amadurecimento do mypy, pyright e as melhorias nativas da linguagem, tipar seu codigo e tao natural quanto escrever docstrings:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Design Patterns em Python na Pratica</title>
      <link>https://python.dev.br/blog/design-patterns-python/</link>
      <pubDate>Mon, 08 Dec 2025 00:00:00 +0000</pubDate>
      <guid>https://python.dev.br/blog/design-patterns-python/</guid>
      <description>&lt;p&gt;Design patterns sao solucoes testadas e comprovadas para problemas recorrentes no desenvolvimento de software. Em Python, muitos desses padroes podem ser implementados de forma elegante gracas aos recursos dinamicos da linguagem. Neste artigo, vamos explorar os padroes mais uteis com implementacoes praticas e pythonicas.&lt;/p&gt;&#xA;&lt;h2 id=&#34;o-que-sao-design-patterns&#34;&gt;O Que Sao Design Patterns&lt;/h2&gt;&#xA;&lt;p&gt;Padroes de projeto nao sao codigo pronto para copiar e colar. Sao modelos conceituais que descrevem como resolver determinados tipos de problemas. Eles se dividem em tres categorias: criacionais (como criar objetos), estruturais (como compor objetos) e comportamentais (como objetos interagem).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Seguranca em Aplicacoes Python — 2025 | Python Brasil</title>
      <link>https://python.dev.br/blog/seguranca-em-aplicacoes-python/</link>
      <pubDate>Wed, 03 Dec 2025 00:00:00 +0000</pubDate>
      <guid>https://python.dev.br/blog/seguranca-em-aplicacoes-python/</guid>
      <description>&lt;p&gt;Seguranca e um aspecto critico no desenvolvimento de software, e Python nao e excecao. Aplicacoes mal protegidas podem expor dados sensiveis, permitir acesso nao autorizado e comprometer servidores inteiros. Neste guia, a gente vai explorar as vulnerabilidades mais comuns e como preveni-las em projetos Python.&lt;/p&gt;&#xA;&lt;h2 id=&#34;sql-injection&#34;&gt;SQL Injection&lt;/h2&gt;&#xA;&lt;p&gt;SQL injection acontece quando dados do usuario sao inseridos diretamente em queries SQL. E uma das vulnerabilidades mais antigas e perigosas.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# ERRADO: vulneravel a SQL injection&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;buscar_usuario_inseguro&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cursor&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;nome_usuario&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;query&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;SELECT * FROM usuarios WHERE nome = &amp;#39;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;nome_usuario&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#39;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;cursor&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;execute&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;query&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;cursor&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;fetchone&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# Se o usuario digitar: &amp;#39; OR &amp;#39;1&amp;#39;=&amp;#39;1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# A query vira: SELECT * FROM usuarios WHERE nome = &amp;#39;&amp;#39; OR &amp;#39;1&amp;#39;=&amp;#39;1&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# CORRETO: usando parametros&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;buscar_usuario_seguro&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cursor&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;nome_usuario&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;query&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;SELECT * FROM usuarios WHERE nome = &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;%s&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;cursor&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;execute&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;query&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;nome_usuario&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;cursor&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;fetchone&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Com ORMs como SQLAlchemy, a protecao ja e automatica:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Decoradores Python: Guia Pratico — 2025 | Python Brasil</title>
      <link>https://python.dev.br/blog/decoradores-python-guia-pratico/</link>
      <pubDate>Tue, 15 Jul 2025 00:00:00 +0000</pubDate>
      <guid>https://python.dev.br/blog/decoradores-python-guia-pratico/</guid>
      <description>&lt;p&gt;Decoradores sao uma das funcionalidades mais elegantes do Python. Eles permitem modificar o comportamento de funcoes e classes sem alterar o codigo original. Neste guia pratico, a gente vai entender como decoradores funcionam por baixo dos panos e criar varios exemplos uteis para o dia a dia.&lt;/p&gt;&#xA;&lt;h2 id=&#34;o-que-sao-decoradores&#34;&gt;O Que Sao Decoradores?&lt;/h2&gt;&#xA;&lt;p&gt;Um decorador e uma funcao que recebe outra funcao como argumento, adiciona alguma funcionalidade e retorna uma nova funcao. Em termos simples, e um wrapper que envolve uma funcao existente.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
