{"id":123,"date":"2020-06-09T17:28:10","date_gmt":"2020-06-09T15:28:10","guid":{"rendered":"https:\/\/www.pythonparatodo.com\/?p=123"},"modified":"2020-06-09T17:28:11","modified_gmt":"2020-06-09T15:28:11","slug":"import","status":"publish","type":"post","link":"https:\/\/www.pythonparatodo.com\/?p=123","title":{"rendered":"import"},"content":{"rendered":"\n<p>Sirve para incluir el m\u00f3dulo en el c\u00f3digo pudiendo hacer uso de las clases y m\u00e9todos incluidos en el mismo. Estos m\u00f3dulos pueden venir incluidos con Pyton, pueden ser archivos propios o de terceros locales o archivos externos descargados o instalados con la herramienta pip. Import seguido del nombre del paquete, se encarga de buscar el m\u00f3dulo, cargarlo, introducirlo en el c\u00f3digo desde el que se importa e inicializarlo para poder hacer uso de todas sus clases y m\u00e9todos o funciones.<\/p>\n\n\n\n<p>Para ver un ejemplo pr\u00e1ctico, habr\u00e1 que crear una funci\u00f3n en un fichero y guardar el fichero con el nombre mi_modulo.py. El fichero mi_modulo.py debe contener el siguiente c\u00f3digo con la funci\u00f3n cuentavocal(alista,avocal) que se encarga de buscar la vocal que se le pase en el argumento avocal en todas las palabras de argumento alista, contarlas y devolver el resultado.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">def cuentavocal(alista,avocal):\n    vocales = 0\n    for palabra in lista:\n        for letra in palabra:\n            if letra == vocal:\n                vocales += 1\n    return vocales<\/code><\/pre>\n\n\n\n<p>Hay varias formas de incluir el fichero en el c\u00f3digo aunque en todos los casos el denominador com\u00fan es que se usa el comando <strong>import<\/strong>.<\/p>\n\n\n\n<p>El primer caso puede ser el de importar el m\u00f3dulo completo. Haciendo esto se tiene acceso a todas las funciones del m\u00f3dulo, pero hay que escribir siempre en nombre del m\u00f3dulo antes de usarlas.<\/p>\n\n\n\n<p>La sintaxis es:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">import nombre_modulo<\/code><\/pre>\n\n\n\n<p>Para usar la funci\u00f3n <strong>cuentavocal<\/strong> es necesario escribir <strong>mi_modulo.cuentavocal<\/strong>, como se muestra en el siguiente ejemplo.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">>>> import mi_modulo\n>>> lista = [ 'oso' , 'lobo' , 'pantera' , 'jirafa' , 'topo' ]\n>>> print( mi_modulo.cuentavocal( lista , 'o' ) )\n6<\/code><\/pre>\n\n\n\n<p>Si el nombre del m\u00f3dulo es muy largo o simplemente se quiere cambiar por otro nombre se puede usar un alias.<\/p>\n\n\n\n<p>La sintaxis es:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">import nombre_modulo as alias<\/code><\/pre>\n\n\n\n<p>El siguiente ejemplo muestra esta forma de importar el m\u00f3dulo.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">import mi_modulo as mm\nprint(mm.cuentavocal(lista,'o'))\n<\/code><\/pre>\n\n\n\n<p>Tambi\u00e9n es posible integrar el m\u00f3dulo en el c\u00f3digo importando solamente la funci\u00f3n necesaria, as\u00ed se puede usar escribiendo solo su nombre. En este caso solo se ha importado esa funci\u00f3n y por tanto no se pueden usar otras funciones del m\u00f3dulo si las hubiera.<\/p>\n\n\n\n<p>La sintaxis es:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">from nombre_modulo import nombre_funci\u00f3n<\/code><\/pre>\n\n\n\n<p>Por ejemplo<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">from mi_modulo import cuentavocal\nprint(cuentavocal(lista,'o'))<\/code><\/pre>\n\n\n\n<p>La desventaja de este m\u00e9todo es que podr\u00eda ser que algunas funciones del m\u00f3dulo tuvieran el mismo nombre que las del script que estemos creando y entrar en conflicto.<\/p>\n\n\n\n<p>Tambi\u00e9n es posible hacer combinaciones, por ejemplo, cargar solo una funci\u00f3n del m\u00f3dulo con un alias.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">>>> from mi_modulo import cuentavocal as cv\n>>> print( cv( lista , 'a' ) )\n4<\/code><\/pre>\n\n\n\n<p>Cargar varias funciones del m\u00f3dulo.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">>>> from nombre_modulo import funci\u00f3n1 , funci\u00f3n2 , funci\u00f3n 3<\/code><\/pre>\n\n\n\n<p>Cargar varias funciones del m\u00f3dulo como alias.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">>>> from nombre_modulo import funci\u00f3n1 as f1 , funci\u00f3n2 as f2 , funci\u00f3n3 as f3<\/code><\/pre>\n\n\n\n<p>O incluso todas las funciones del m\u00f3dulo, aunque esto no est\u00e1 recomendado.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">>>> from nombre_modulo import *<\/code><\/pre>\n\n\n\n<p>Python almacena la ubicaci\u00f3n del m\u00f3dulo para poder cargarlo, para ver su ubicaci\u00f3n se puede usar el m\u00e9todo m\u00e1gico __file__ como en el siguiente ejemplo.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">>>> print(mi_modulo.__file__)\n\/proyectos\/pythonparatodo\/import\/mi_modulo.py<\/code><\/pre>\n\n\n\n<p>En los casos anteriores se importaba un modulo que estaba en un fichero creado por nosotros, pero se aplica de la misma forma para m\u00f3dulos de Python o que se han descargado e instalado con pip.<\/p>\n\n\n\n<p>En el ejemplo siguiente se importa el paquete <strong><em>os<\/em><\/strong> que contiene m\u00f3dulos y m\u00e9todos para operar con el sistema y con los ficheros. Tambi\u00e9n se hace uso del m\u00e9todo <strong>getcwd()<\/strong> que devuelve el path actual.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">>>> import os\n>>> print(os.getcwd())\n\/proyectos\/python\/test<\/code><\/pre>\n\n\n\n<p>En el siguiente ejemplo se importa una parte del paquete para usar s\u00f3lo el m\u00f3dulo join que se encuentra en os.path. Este m\u00e9todo une dos o mas nombres de ruta, a\u00f1adiendo el separador que corresponde al sistema operativo. Al hacer esto solo se a\u00f1ade la funci\u00f3n join al c\u00f3digo.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">>>> from os.path import join\n>>> print( join( 'proyectos' , 'fichero.txt' ) )\nproyectos\/fichero.txt<\/code><\/pre>\n\n\n\n<p>Si se intenta hacer uso de <strong>os.getcwd<\/strong>, al no estar importado el m\u00f3dulo completo, se produce un error.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">>>> print( os.getcwd() )\nTraceback (most recent call last):\n  File \"&lt;stdin>\", line 1, in &lt;module>\nNameError: name 'os' is not defined<\/code><\/pre>\n\n\n\n<p>Suele ser recomendable importar solo las funciones necesarias para que el programa consuma menos memoria.<\/p>\n\n\n\n<p>Cuando se usa import Python carga el m\u00f3dulo sin necesidad de saber d\u00f3nde est\u00e1, esto es gracias a que Python sabe en la ruta en la que se encuentra el programa o tiene almacenadas las rutas de los m\u00f3dulos en <strong>sys.path<\/strong> y se encarga de recorrer las rutas en orden buscando el m\u00f3dulo. Es posible ver las rutas donde Python guarda los m\u00f3dulos usando el siguiente c\u00f3digo en MacOS.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">>>> import sys\n>>> print(sys.path)\n['', '\/Library\/Frameworks\/Python.framework\/Versions\/3.8\/lib\/python38.zip', '\/Library\/Frameworks\/Python.framework\/Versions\/3.8\/lib\/python3.8', '\/Library\/Frameworks\/Python.framework\/Versions\/3.8\/lib\/python3.8\/lib-dynload', '\/Library\/Frameworks\/Python.framework\/Versions\/3.8\/lib\/python3.8\/site-packages']<\/code><\/pre>\n\n\n\n<p>O en Windows.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">>>> import sys\n>>> print(sys.path)\n['', 'C:\\\\Program Files\\\\Python37\\\\python37.zip', 'C:\\\\Program Files\\\\Python37\\\\DLLs', \u2018C:\\\\Program Files\\\\Python37\\\\lib', 'C:\\\\Program Files\\\\Python37', 'C:\\\\Program Files\\\\Python37\\\\lib\\\\site-packages', 'C:\\\\Program Files\\\\Python37\\\\lib\\\\site-packages\\\\win32', 'C:\\\\Program Files\\\\Python37\\\\lib\\\\site-packages\\\\win32\\\\lib', 'C:\\\\Program Files\\\\Python37\\\\lib\\\\site-packages\\\\Pythonwin']<\/code><\/pre>\n\n\n\n<p>Si se quiere importar un m\u00f3dulo que no est\u00e1 ni en la carpeta actual ni en la carpeta de m\u00f3dulos de Python, se puede hacer de varias formas:<\/p>\n\n\n\n<p>Primera indicando la ruta tras el import, por ejemplo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">>>> import \/proyectos\/modulos\/mi_modulo<\/code><\/pre>\n\n\n\n<p>Otra forma puede ser a\u00f1adiendo la ruta donde est\u00e1n los m\u00f3dulos a <strong>sys.path<\/strong> con <strong>append<\/strong>, el siguiente ejemplo muestra la forma de hacerlo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">>>> import sys\n>>> sys.path.append(\u2018\/proyectos\/modulos\/\u2018)\n>>> import mi_modulo<\/code><\/pre>\n\n\n\n<p>O a\u00f1adiendo la ruta donde est\u00e1n los m\u00f3dulos al <strong>PYTHONPATH<\/strong> del sistema operativo.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Sirve para incluir el m\u00f3dulo en el c\u00f3digo pudiendo hacer uso de las clases y m\u00e9todos incluidos en el mismo. &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":[56,58,57,2,6],"class_list":["post-123","post","type-post","status-publish","format-standard","hentry","category-python","tag-import","tag-module","tag-package","tag-python","tag-python3"],"_links":{"self":[{"href":"https:\/\/www.pythonparatodo.com\/index.php?rest_route=\/wp\/v2\/posts\/123","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=123"}],"version-history":[{"count":1,"href":"https:\/\/www.pythonparatodo.com\/index.php?rest_route=\/wp\/v2\/posts\/123\/revisions"}],"predecessor-version":[{"id":124,"href":"https:\/\/www.pythonparatodo.com\/index.php?rest_route=\/wp\/v2\/posts\/123\/revisions\/124"}],"wp:attachment":[{"href":"https:\/\/www.pythonparatodo.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=123"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.pythonparatodo.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=123"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.pythonparatodo.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=123"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}