<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Robin Hafid Quintero Lopez</title>
    <description>The latest articles on DEV Community by Robin Hafid Quintero Lopez (@rohaquinlop).</description>
    <link>https://dev.to/rohaquinlop</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F611390%2F9899d83a-b3b0-417a-a5f2-9f5fd8f68619.png</url>
      <title>DEV Community: Robin Hafid Quintero Lopez</title>
      <link>https://dev.to/rohaquinlop</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rohaquinlop"/>
    <language>en</language>
    <item>
      <title>¿Qué son los Type hints en Python? Mejorar la calidad de tu código y hazlo más legible</title>
      <dc:creator>Robin Hafid Quintero Lopez</dc:creator>
      <pubDate>Fri, 04 Aug 2023 21:30:30 +0000</pubDate>
      <link>https://dev.to/rohaquinlop/que-son-los-type-hints-en-python-mejorar-la-calidad-de-tu-codigo-y-hazlo-mas-legible-5e99</link>
      <guid>https://dev.to/rohaquinlop/que-son-los-type-hints-en-python-mejorar-la-calidad-de-tu-codigo-y-hazlo-mas-legible-5e99</guid>
      <description>&lt;p&gt;Python es un lenguaje de tipado dinámico, esto quiere decir que una variable puede tomar valores de distintos tipos.&lt;/p&gt;

&lt;h3&gt;
  
  
  Ejemplo
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;
&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;a&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Es conocido que Python durante el tiempo de ejecución no impone las anotaciones de tipado en funciones o variables. Sin embargo, puede ser utilizado por herramientas de terceros como validadores de tipado, IDEs (Entornos de Desarrollo Integrado), linters, entre otros.&lt;/p&gt;

&lt;p&gt;El uso de &lt;em&gt;type hints&lt;/em&gt; es como las pruebas unitarias, puede que para el desarrollador sea un esfuerzo extra y deba dedicar más tiempo, sin embargo, a largo plazo tiene sus ventajas.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ventajas
&lt;/h2&gt;

&lt;p&gt;Te permite ejecutar &lt;em&gt;static checkers&lt;/em&gt; en tu código, mejora la legibilidad del mismo, al igual que te puede ayudar a entender más fácil las funciones (tipo de datos que se reciben en los parámetros y el tipo de retorno).&lt;/p&gt;

&lt;p&gt;Ahora, si hay más personas aportando código en un proyecto, es fundamental poder entender de manera general y/o detallada lo que hace cada parte del mismo, entonces hacer uso de &lt;strong&gt;type hints&lt;/strong&gt; es algo fundamental en proyectos grandes y pequeños.&lt;/p&gt;

&lt;p&gt;Documentar el código se vuelve una tarea un poco más sencilla y la calidad de la documentación también mejora demasiado.&lt;/p&gt;

&lt;h3&gt;
  
  
  Ejemplo
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;
&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;
&lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;En el ejemplo anterior tenemos la siguiente estructura al usar type hints con variables.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;nombre de la variable&amp;gt;: &amp;lt;tipo de dato&amp;gt; = &amp;lt;valor&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pero también se puede hacer lo mismo con funciones o métodos.&lt;/p&gt;

&lt;h3&gt;
  
  
  Ejemplo
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;hello_string&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Hello &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;El método anterior recibe como parámetro un string &lt;code&gt;s&lt;/code&gt; y no retorna ningún valor, es decir &lt;code&gt;None&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;También se puede presentar que necesitamos que una función pueda retornar más de un tipo de dato o que un parámetro pueda ser de más de un tipo de dato, veámoslo en el siguiente ejemplo.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;hello_or_add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nf"&gt;type&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Hello &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para poder definir más de un tipo de dato es necesario separarlos entre sí con pipes &lt;code&gt;|&lt;/code&gt;, por todo lo demás sigue funcionando igual.&lt;/p&gt;

</description>
      <category>python</category>
      <category>programming</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Python finite automata library</title>
      <dc:creator>Robin Hafid Quintero Lopez</dc:creator>
      <pubDate>Fri, 09 Apr 2021 14:51:52 +0000</pubDate>
      <link>https://dev.to/rohaquinlop/python-finite-automata-library-2kg</link>
      <guid>https://dev.to/rohaquinlop/python-finite-automata-library-2kg</guid>
      <description>&lt;p&gt;Hello! I'm a systems engineer student, actually I'm working on a Python library implementing the automatas and some of the basic functions, some of the functions is to visualize the automata (DFA or NFA) I would really appreciate your feedback and ideas!.&lt;/p&gt;

&lt;p&gt;GitHub repository: &lt;a href="https://github.com/rohaquinlop/automathon"&gt;Automathon Github&lt;/a&gt;&lt;br&gt;
Pypi Project Page: &lt;a href="https://pypi.org/project/automathon/"&gt;Automathon PyPi&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks for having the time to read my post!&lt;/p&gt;

</description>
      <category>python</category>
      <category>programming</category>
      <category>computerscience</category>
    </item>
  </channel>
</rss>
