{"id":330,"date":"2022-10-20T19:53:54","date_gmt":"2022-10-20T17:53:54","guid":{"rendered":"https:\/\/www.pythonparatodo.com\/?p=330"},"modified":"2022-10-20T19:53:54","modified_gmt":"2022-10-20T17:53:54","slug":"sugerencias-de-tipo-o-type-hints","status":"publish","type":"post","link":"https:\/\/www.pythonparatodo.com\/?p=330","title":{"rendered":"Sugerencias de tipo o type hints"},"content":{"rendered":"\n<p>Desde la versi\u00f3n 3.5 de Python existe algo que se llama <strong>type hints<\/strong> y que nos permiten poner tipos a variables, listas, funciones, etc.<\/p>\n\n\n\n<p>Sin embargo tal como el nombre indica es solo una sugerencia y por tanto el interprete no las va a tener en cuenta.<\/p>\n\n\n\n<p>Veamos un ejemplo para ver de que hablamos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python line-numbers\">numero: int = 10\nprint(numero)\n\ncadena: str = \"Esto es una cadena de texto\"\nprint(cadena)\n\ndef mi_funcion(int: num, str: cad)-> bool:\n    print(\"El n\u00famero es:\",num,\"y el texto:\", cad)\n    return True\nresultado = mi_funcion(numero, cadena)\nprint(resultado)<\/code><\/pre>\n\n\n\n<p>Al poner <strong>numero:int = 10<\/strong> estamos indicando al c\u00f3digo que la variable n\u00famero tiene asignado el valor 10 y adem\u00e1s sugerimos que es del tipo entero.<\/p>\n\n\n\n<p>En la siguiente l\u00ednea de asignaci\u00f3n <strong>cadena:str=\u00bbEsto es una cadena\u00bb<\/strong> hacemos exactamente lo mismo, sugiriendo que la variable cadena es del tipo string.<\/p>\n\n\n\n<p>En nuestra funci\u00f3n llamada <strong>mi_funcion<\/strong> indicamos el tipo <strong>int<\/strong> para <strong>num<\/strong> y <strong>str<\/strong> para <strong>cad<\/strong> y el valor que devuelve la funci\u00f3n deber\u00eda ser del tipo <strong>booleano<\/strong>, se usa <strong>-><\/strong> para indicar el tipo de valor que retorna la funci\u00f3n.<\/p>\n\n\n\n<p>\u00bfPor qu\u00e9 decimos que es una sugerencia?, pues porque Python no va a hacer ninguna comprobaci\u00f3n y por tanto podemos indicar que una variable es del tipo <strong>int<\/strong> y posteriormente asignarle un valor de tipo <strong>float<\/strong> o <strong>string<\/strong> de la manera habitual.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>El runtime de Python no impone anotaciones de funci\u00f3n y tipo de variable. Pueden ser utilizados por herramientas de terceros, como verificadores de tipo, IDE, linters, etc.<\/p><cite>https:\/\/docs.python.org\/3\/library\/typing.html<\/cite><\/blockquote>\n\n\n\n<p>\u00bfY entonces para qu\u00e9 sirve?, hay varias respuestas, desde mi punto de vista, pese al incremento en el c\u00f3digo escrito, nuestro c\u00f3digo queda mas claro, ya que sabemos de antemano los tipos de variables y en nuestra mano queda usarlas en consecuencia. Por otra parte, podemos hacer uso de aplicaciones como <strong>mypy<\/strong> <a href=\"http:\/\/www.mypy-lang.org\/\">http:\/\/www.mypy-lang.org\/<\/a> entre otras para revisar los tipos.<\/p>\n\n\n\n<p>Para instalar mypy usamos pip:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">pip install mypy<\/code><\/pre>\n\n\n\n<p>Para usar mypy y revisar el script python escribimos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">mypy [opciones] nombre_fichero.py<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Desde la versi\u00f3n 3.5 de Python existe algo que se llama type hints y que nos permiten poner tipos a &hellip; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-330","post","type-post","status-publish","format-standard","hentry","category-python"],"_links":{"self":[{"href":"https:\/\/www.pythonparatodo.com\/index.php?rest_route=\/wp\/v2\/posts\/330","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.pythonparatodo.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.pythonparatodo.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.pythonparatodo.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.pythonparatodo.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=330"}],"version-history":[{"count":3,"href":"https:\/\/www.pythonparatodo.com\/index.php?rest_route=\/wp\/v2\/posts\/330\/revisions"}],"predecessor-version":[{"id":333,"href":"https:\/\/www.pythonparatodo.com\/index.php?rest_route=\/wp\/v2\/posts\/330\/revisions\/333"}],"wp:attachment":[{"href":"https:\/\/www.pythonparatodo.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=330"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.pythonparatodo.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=330"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.pythonparatodo.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=330"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}