Explicación de las declaraciones de importación de Python

Mientras aprendía programación y leía algunos recursos, se habría encontrado con la palabra "abstracción", que simplemente significa reducir y reutilizar el código tanto como sea posible.

Las funciones y los módulos facilitan la abstracción. Creas funciones cuando quieres hacer algo repetidamente dentro de un archivo.

Los módulos entran en escena cuando desea reutilizar un grupo de funciones en diferentes archivos fuente. Los módulos también son útiles para estructurar bien el programa.

  • Uso de bibliotecas estándar y otros módulos de terceros
  • Estructurando el programa

Usar bibliotecas estándar

Ejemplo: puede leer sobre los métodos / funciones de todas las bibliotecas estándar en los documentos oficiales de Python en detalle.

import time for i in range(100): time.sleep(1) # Waits for 1 second and then executes the next command print(str(i) + ' seconds have passed') # prints the number of seconds passed after the program was started
:cohete:

Ejecutar código

# To calculate the execution time of a part of program import time start = time.time() # code here end = time.time() print('Execution time:' , end-start)
:cohete:

Ejecutar código

# Using math Module import math print(math.sqrt(100)) # prints 10
:cohete:

Ejecutar código

Usar módulos de terceros

Los módulos de terceros no vienen incluidos con Python, pero tenemos que instalarlo externamente usando administradores de paquetes como pipyeasy install

# To make http requests import requests rq = requests.get(target_url) print(rq.status_code)

Obtenga más información sobre el módulo de solicitudes de python aquí

Estructurar programas

Queremos hacer un programa que tenga varias funciones con respecto a los números primos. Así que comencemos. Definiremos todas las funciones enprime_functions.py

# prime_functions.py from math import ceil, sqrt def isPrime(a): if a == 2: return True elif a % 2 == 0: return False else: for i in range(3,ceil(sqrt(a)) + 1,2): if a % i == 0: return False return True def print_n_primes(a): i = 0 m = 2 while True: if isPrime(m) ==True: print(m) i += 1 m += 1 if i == a: break

Ahora queremos usar las funciones que acabamos de crear, prime_functions.pyasí que creamos un nuevo archivo playground.pypara usar esas funciones.

Tenga en cuenta que este programa es demasiado simple para crear dos archivos separados, es solo una demostración. Pero cuando hay programas grandes y complejos, hacer diferentes archivos es realmente útil.

# playground.py import prime_functions print(prime_functions.isPrime(29)) # returns True

Clasificación de importaciones

Una buena práctica es clasificar los importmódulos en tres grupos: importaciones de bibliotecas estándar, importaciones de terceros relacionadas e importaciones locales. Dentro de cada grupo, es conveniente ordenar alfabéticamente por nombre de módulo. Puede encontrar más información en PEP8.

Una de las cosas más importantes para el lenguaje Python es la legibilidad, y los módulos ordenados alfabéticamente son más rápidos de leer y buscar. Además, es más fácil verificar que algo se importa y evitar importaciones duplicadas.

Desde X importar Y: un ejemplo

Aquí hay un problema de ejemplo:

>>> from math import ceil, sqrt >>> # here it would be >>> sqrt(36) <<< 6
:cohete:

Ejecutar código

O podríamos usar este en su lugar:

>>> import math >>> # here it would be >>> math.sqrt(36) <<< 6
:cohete:

Ejecutar código

Entonces nuestro código se vería como en math.sqrt(x)lugar de sqrt(x). Esto sucede porque cuando usamos import x, xse crea un espacio de nombres para evitar conflictos de nombres. Tienes que acceder a cada objeto del módulo como x..

Pero cuando usamos from x import yaceptamos agregar yal espacio de nombres global principal. Entonces, al usar esto, debemos asegurarnos de que no tengamos un objeto con el mismo nombre en nuestro programa.

Nunca lo use from x import ysi un objeto nombrado yya existe

Por ejemplo, en el osmódulo hay un método open. Pero incluso tenemos una función incorporada llamada open. Entonces, aquí deberíamos evitar usar from os import open.

Incluso podemos usar form x import *, esto importaría todos los métodos, clases de ese módulo al espacio de nombres global del programa. Esta es una mala práctica de programación. Por favor evítelo.

En general, debe evitarlo from x import ysimplemente por los problemas que puede causar en programas a gran escala. Por ejemplo, nunca se sabe si un compañero programador podría querer crear una nueva función que resulte ser el nombre de una de las funciones existentes. Tampoco sabe si Python cambiará la biblioteca desde la que está importando funciones. Si bien estos problemas no existirán con tanta frecuencia para proyectos en solitario, como se indicó anteriormente, es una mala práctica de programación y debe evitarse.