Skip to content

Commit

Permalink
deploy: e90d731
Browse files Browse the repository at this point in the history
  • Loading branch information
HenriqueAJNB committed Sep 11, 2024
1 parent 759a12b commit 3d1b99c
Show file tree
Hide file tree
Showing 7 changed files with 132 additions and 53 deletions.
8 changes: 4 additions & 4 deletions 06-estruturas-de-dados/05-sets.html
Original file line number Diff line number Diff line change
Expand Up @@ -504,7 +504,7 @@ <h2>Caso de uso real<a class="headerlink" href="#caso-de-uso-real" title="Link t
</div>
</div>
<div class="cell_output docutils container">
<div class="output stream highlight-myst-ansi notranslate"><div class="highlight"><pre><span></span>{&#39;HGLG11&#39;, &#39;HFOF11&#39;}
<div class="output stream highlight-myst-ansi notranslate"><div class="highlight"><pre><span></span>{&#39;HFOF11&#39;, &#39;HGLG11&#39;}
</pre></div>
</div>
</div>
Expand All @@ -521,7 +521,7 @@ <h2>Caso de uso real<a class="headerlink" href="#caso-de-uso-real" title="Link t
</div>
</div>
<div class="cell_output docutils container">
<div class="output stream highlight-myst-ansi notranslate"><div class="highlight"><pre><span></span>{&#39;FIIB11&#39;, &#39;GGRC11&#39;, &#39;HGPO11&#39;, &#39;HGRU11&#39;, &#39;CSHG11&#39;, &#39;BTLG11&#39;, &#39;HFOF11&#39;, &#39;BPFF11&#39;, &#39;HGRE11&#39;, &#39;HGLG11&#39;, &#39;FEXC11&#39;, &#39;BCFF11&#39;, &#39;FIIJ11&#39;}
<div class="output stream highlight-myst-ansi notranslate"><div class="highlight"><pre><span></span>{&#39;BTLG11&#39;, &#39;BCFF11&#39;, &#39;FIIB11&#39;, &#39;HFOF11&#39;, &#39;HGRE11&#39;, &#39;CSHG11&#39;, &#39;BPFF11&#39;, &#39;HGPO11&#39;, &#39;HGLG11&#39;, &#39;FEXC11&#39;, &#39;HGRU11&#39;, &#39;FIIJ11&#39;, &#39;GGRC11&#39;}
</pre></div>
</div>
</div>
Expand All @@ -538,7 +538,7 @@ <h2>Caso de uso real<a class="headerlink" href="#caso-de-uso-real" title="Link t
</div>
</div>
<div class="cell_output docutils container">
<div class="output stream highlight-myst-ansi notranslate"><div class="highlight"><pre><span></span>{&#39;FIIB11&#39;, &#39;CSHG11&#39;, &#39;BTLG11&#39;, &#39;BPFF11&#39;, &#39;HGRE11&#39;, &#39;FEXC11&#39;}
<div class="output stream highlight-myst-ansi notranslate"><div class="highlight"><pre><span></span>{&#39;BTLG11&#39;, &#39;CSHG11&#39;, &#39;FIIB11&#39;, &#39;HGRE11&#39;, &#39;BPFF11&#39;, &#39;FEXC11&#39;}
</pre></div>
</div>
</div>
Expand All @@ -555,7 +555,7 @@ <h2>Caso de uso real<a class="headerlink" href="#caso-de-uso-real" title="Link t
</div>
</div>
<div class="cell_output docutils container">
<div class="output stream highlight-myst-ansi notranslate"><div class="highlight"><pre><span></span>{&#39;GGRC11&#39;, &#39;HGPO11&#39;, &#39;HGRU11&#39;, &#39;BCFF11&#39;, &#39;FIIJ11&#39;}
<div class="output stream highlight-myst-ansi notranslate"><div class="highlight"><pre><span></span>{&#39;BCFF11&#39;, &#39;HGPO11&#39;, &#39;HGRU11&#39;, &#39;FIIJ11&#39;, &#39;GGRC11&#39;}
</pre></div>
</div>
</div>
Expand Down
2 changes: 1 addition & 1 deletion 07-fluxo-controle/02-repeticao.html
Original file line number Diff line number Diff line change
Expand Up @@ -1524,7 +1524,7 @@ <h3>Compreensão de sets<a class="headerlink" href="#compreensao-de-sets" title=
</div>
</div>
<div class="cell_output docutils container">
<div class="output stream highlight-myst-ansi notranslate"><div class="highlight"><pre><span></span>{&#39;Brasil&#39;, &#39;Argentina&#39;}
<div class="output stream highlight-myst-ansi notranslate"><div class="highlight"><pre><span></span>{&#39;Argentina&#39;, &#39;Brasil&#39;}
</pre></div>
</div>
</div>
Expand Down
39 changes: 39 additions & 0 deletions 08-funcoes/01-introducao.html
Original file line number Diff line number Diff line change
Expand Up @@ -434,6 +434,7 @@ <h2> Contents </h2>
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#funcoes-nativas">Funções nativas</a></li>
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#funcoes-customizadas">Funções customizadas</a><ul class="nav section-nav flex-column">
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#escopo-de-variaveis">Escopo de variáveis</a></li>
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#dicas-de-tipo-type-hints">Dicas de tipo (type hints)</a></li>
</ul>
</li>
</ul>
Expand Down Expand Up @@ -704,6 +705,43 @@ <h3>Escopo de variáveis<a class="headerlink" href="#escopo-de-variaveis" title=
<p>Evite ao máximo usar variáveis globais dentro de funções! Se você precisar de um valor de fora da função, passe esse valor como parâmetro. Isso torna o código mais legível e menos propenso a erros.</p>
</div>
</section>
<section id="dicas-de-tipo-type-hints">
<h3>Dicas de tipo (type hints)<a class="headerlink" href="#dicas-de-tipo-type-hints" title="Link to this heading">#</a></h3>
<p>Notem que, na função acima <code class="docutils literal notranslate"><span class="pre">calcula_media</span></code> que criamos anteriormente, é difícil dizer quais são os tipos de dados que a função espera como argumento e qual é o tipo de dado que ela retorna. Isso pode ser um problema se você estiver trabalhando em um projeto grande e complexo, ou se você estiver trabalhando em equipe. Para resolver isso, o Python permite que você adicione dicas de tipo, chamadas de <em>type hints</em>, para indicar quais são os tipos de dados esperados e retornados pela função.</p>
<p>Infelizmente <em>type hints</em> são apenas dicas mesmo, e o Python não vai reclamar se você passar um tipo de dado diferente do esperado. Mas, ainda sim, é uma boa prática adicionar essas dicas para ajudar a entender o código. Vamos ver como fazer isso:</p>
<div class="cell docutils container">
<div class="cell_input docutils container">
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">calcula_media</span><span class="p">(</span><span class="n">valores</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">int</span> <span class="o">|</span> <span class="nb">float</span><span class="p">])</span> <span class="o">-&gt;</span> <span class="nb">float</span><span class="p">:</span>
<span class="k">return</span> <span class="nb">sum</span><span class="p">(</span><span class="n">valores</span><span class="p">)</span> <span class="o">/</span> <span class="nb">len</span><span class="p">(</span><span class="n">valores</span><span class="p">)</span>
</pre></div>
</div>
</div>
<div class="cell_output docutils container">
<div class="output traceback highlight-ipythontb notranslate"><div class="highlight"><pre><span></span><span class="gt">---------------------------------------------------------------------------</span>
<span class="ne">TypeError</span><span class="g g-Whitespace"> </span>Traceback (most recent call last)
<span class="n">Cell</span> <span class="n">In</span><span class="p">[</span><span class="mi">5</span><span class="p">],</span> <span class="n">line</span> <span class="mi">1</span>
<span class="ne">----&gt; </span><span class="mi">1</span> <span class="k">def</span> <span class="nf">calcula_media</span><span class="p">(</span><span class="n">valores</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">int</span> <span class="o">|</span> <span class="nb">float</span><span class="p">])</span> <span class="o">-&gt;</span> <span class="nb">float</span><span class="p">:</span>
<span class="g g-Whitespace"> </span><span class="mi">2</span> <span class="k">return</span> <span class="nb">sum</span><span class="p">(</span><span class="n">valores</span><span class="p">)</span> <span class="o">/</span> <span class="nb">len</span><span class="p">(</span><span class="n">valores</span><span class="p">)</span>

<span class="ne">TypeError</span>: unsupported operand type(s) for |: &#39;type&#39; and &#39;type&#39;
</pre></div>
</div>
</div>
</div>
<p>A função acima indica o tipo do parâmetro <code class="docutils literal notranslate"><span class="pre">valores</span></code> como uma lista de números inteiros ou floats através da notação <code class="docutils literal notranslate"><span class="pre">:</span> <span class="pre">list[int</span> <span class="pre">|</span> <span class="pre">float]</span></code> logo na sequencia do nome do parâmetro. Já a notação <code class="docutils literal notranslate"><span class="pre">-&gt;</span> <span class="pre">float</span></code> indica que a função retorna um número float (o que faz sentido pois a média pode ser um número quebrado).</p>
<p>Porém, como disse anteriormente, o Python não vai reclamar se você passar um tipo de dado diferente do esperado. Essa função fica um pouco mais claro em termos de tipos de dados (desde que informados corretamente) e pode ajudar a entender melhor o código.</p>
<p>Podemos anotar qualquer parâmetro da função, bem como seu(s) retorno(s). As notações a princípio seguem os tipos básicos que vimos até agora:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">int</span></code>: número inteiro</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">float</span></code>: número de ponto flutuante</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">str</span></code>: string</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">list</span></code>: lista</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">tuple</span></code>: tupla</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">dict</span></code>: dicionário</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">set</span></code>: conjuntos</p></li>
</ul>
<p>Para as sequências como <code class="docutils literal notranslate"><span class="pre">list</span></code>, <code class="docutils literal notranslate"><span class="pre">tuple</span></code> e <code class="docutils literal notranslate"><span class="pre">set</span></code>, é possível indicar o tipo de dado que a sequência contém, como fizemos no exemplo acima, usando <code class="docutils literal notranslate"><span class="pre">list[int</span> <span class="pre">|</span> <span class="pre">float]</span></code> para indicar que a lista contém números inteiros ou floats. No caso de diciários, é possível indicar o tipo de dado da chave e do valor, como <code class="docutils literal notranslate"><span class="pre">dict[str,</span> <span class="pre">int]</span></code> para indicar um dicionário onde a chave é uma string e o valor é um inteiro.</p>
</section>
</section>
</section>

Expand Down Expand Up @@ -775,6 +813,7 @@ <h3>Escopo de variáveis<a class="headerlink" href="#escopo-de-variaveis" title=
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#funcoes-nativas">Funções nativas</a></li>
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#funcoes-customizadas">Funções customizadas</a><ul class="nav section-nav flex-column">
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#escopo-de-variaveis">Escopo de variáveis</a></li>
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#dicas-de-tipo-type-hints">Dicas de tipo (type hints)</a></li>
</ul>
</li>
</ul>
Expand Down
100 changes: 55 additions & 45 deletions _sources/08-funcoes/01-introducao.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -199,17 +199,9 @@
},
{
"cell_type": "code",
"execution_count": 1,
"execution_count": null,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"3.0\n"
]
}
],
"outputs": [],
"source": [
"def calcula_media(valores):\n",
" return sum(valores) / len(valores)\n",
Expand All @@ -232,17 +224,9 @@
},
{
"cell_type": "code",
"execution_count": 2,
"execution_count": null,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"As médias são, respectivamente, 3.0, 63.8 e 663.0\n"
]
}
],
"outputs": [],
"source": [
"def calcula_media(valores):\n",
" return sum(valores) / len(valores)\n",
Expand Down Expand Up @@ -275,25 +259,13 @@
},
{
"cell_type": "code",
"execution_count": 3,
"execution_count": null,
"metadata": {
"tags": [
"raises-exception"
]
},
"outputs": [
{
"ename": "NameError",
"evalue": "name 'x' is not defined",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[1;32mIn[3], line 5\u001b[0m\n\u001b[0;32m 2\u001b[0m x \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m10\u001b[39m\n\u001b[0;32m 3\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mA variável x dentro da função é \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mx\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m----> 5\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[43mx\u001b[49m)\n",
"\u001b[1;31mNameError\u001b[0m: name 'x' is not defined"
]
}
],
"outputs": [],
"source": [
"def exemplo_escopo_local():\n",
" x = 10\n",
Expand All @@ -316,18 +288,9 @@
},
{
"cell_type": "code",
"execution_count": 4,
"execution_count": null,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"A variável x dentro da função é 10\n",
"A variável x fora da função é 20\n"
]
}
],
"outputs": [],
"source": [
"x = 20 # variável definida no escopo global\n",
"\n",
Expand Down Expand Up @@ -359,6 +322,53 @@
"Evite ao máximo usar variáveis globais dentro de funções! Se você precisar de um valor de fora da função, passe esse valor como parâmetro. Isso torna o código mais legível e menos propenso a erros.\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Dicas de tipo (type hints)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Notem que, na função acima `calcula_media` que criamos anteriormente, é difícil dizer quais são os tipos de dados que a função espera como argumento e qual é o tipo de dado que ela retorna. Isso pode ser um problema se você estiver trabalhando em um projeto grande e complexo, ou se você estiver trabalhando em equipe. Para resolver isso, o Python permite que você adicione dicas de tipo, chamadas de *type hints*, para indicar quais são os tipos de dados esperados e retornados pela função.\n",
"\n",
"Infelizmente *type hints* são apenas dicas mesmo, e o Python não vai reclamar se você passar um tipo de dado diferente do esperado. Mas, ainda sim, é uma boa prática adicionar essas dicas para ajudar a entender o código. Vamos ver como fazer isso:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def calcula_media(valores: list[int | float]) -> float:\n",
" return sum(valores) / len(valores)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"A função acima indica o tipo do parâmetro `valores` como uma lista de números inteiros ou floats através da notação `: list[int | float]` logo na sequencia do nome do parâmetro. Já a notação `-> float` indica que a função retorna um número float (o que faz sentido pois a média pode ser um número quebrado). \n",
"\n",
"Porém, como disse anteriormente, o Python não vai reclamar se você passar um tipo de dado diferente do esperado. Essa função fica um pouco mais claro em termos de tipos de dados (desde que informados corretamente) e pode ajudar a entender melhor o código.\n",
"\n",
"Podemos anotar qualquer parâmetro da função, bem como seu(s) retorno(s). As notações a princípio seguem os tipos básicos que vimos até agora:\n",
"\n",
"- `int`: número inteiro\n",
"- `float`: número de ponto flutuante\n",
"- `str`: string\n",
"- `list`: lista\n",
"- `tuple`: tupla\n",
"- `dict`: dicionário\n",
"- `set`: conjuntos\n",
"\n",
"Para as sequências como `list`, `tuple` e `set`, é possível indicar o tipo de dado que a sequência contém, como fizemos no exemplo acima, usando `list[int | float]` para indicar que a lista contém números inteiros ou floats. No caso de diciários, é possível indicar o tipo de dado da chave e do valor, como `dict[str, int]` para indicar um dicionário onde a chave é uma string e o valor é um inteiro."
]
}
],
"metadata": {
Expand Down
Loading

0 comments on commit 3d1b99c

Please sign in to comment.