10 funciones básicas de Python increíblemente útiles

imagen



Quienes trabajan con Python saben que este lenguaje es bueno debido a su vasto ecosistema. Incluso se podría decir que el lenguaje de programación no destacaría en nada especial, si no fuera por sus maravillosos paquetes que añaden nuevas funciones a las principales.



NumPy es un ejemplo. Las herramientas de matriz también están bien en Python básico, pero el uso de NumPy mejora las cosas muchas veces. Además, este lenguaje tiene algunas características interesantes que lo hacen aún más funcional. Al utilizar estas capacidades, puede reducir el número de dependencias, liberar tiempo y simplificar el proceso de desarrollo en sí. Veamos cuáles son estas posibilidades.



Por cierto, Alexey Nekrasov, líder del departamento de Python en MTS y director de programas del departamento de Python en Skillbox, agregó sus consejos sobre algunas funciones. Para dejar claro dónde está la traducción y dónde están los comentarios, resaltaremos estos últimos con texto.



# 1 lambda



Una vez escribí un artículo completo sobre por qué lambda hace de Python el lenguaje de programación óptimo para la computación estadística. Gracias a esta característica, las operaciones matemáticas se pueden aplicar a casi cualquier tipo de datos, no usando funciones completas, sino evaluando expresiones.



Permite introducir definiciones de forma global, así como una sintaxis y metodología de tipo funcional, en un lenguaje que todavía tiene una estructura de clases.



Todo esto le permite ahorrar tiempo mientras escribe el programa, ahorrar recursos y hacer el código más conciso. Además, lambda le permite utilizar métodos como apply () para aplicar rápidamente expresiones a todos los subconjuntos de sus datos. Para un científico de datos, y no solo para los representantes de esta profesión, estas oportunidades son extremadamente útiles.



La sintaxis es la siguiente. Comenzamos con el valor de retorno de la expresión lambda, seguido de la variable que nos gustaría proporcionar como argumento posicional. Después de eso, realizamos la operación usando este argumento como variable:



mean = lambda x : sum(x) / len(x)
      
      





Ahora podemos realizar la llamada, como con cualquier otro método en Python:



x = [5, 10, 15, 20]
print(mean(x))
      
      





Comentario de Alexey:



tenga cuidado con lambda para no perjudicar la legibilidad del código. Aquí hay un par de consejos:

De PEP8. Utilice siempre la declaración def en lugar del operador de asignación, que vincula la expresión lambda directamente a un identificador:



Correcto:



def f (x): return 2 * x
      
      





Incorrecto:



f = lambda x: 2 * x
      
      





Si la longitud de la expresión lambda es de más de 40 caracteres, lo más probable es que haya puesto demasiada lógica en una línea de código y se haya vuelto ilegible. No deberías hacer eso, es mejor ponerlo en una función separada.


# 2: Shutil



El módulo Shutil es una de las herramientas más subestimadas del arsenal de Python. Se incluye en la biblioteca estándar y se puede importar como cualquier otro módulo en el idioma:



import shutil
      
      





¿Qué hace shutil? De hecho, es una interfaz de alto nivel para el lenguaje de programación Python con respecto al sistema de archivos de su sistema operativo. Estas llamadas se hacen a menudo usando el módulo os; no te olvides de shutil. Probablemente tuvo que mover un archivo de un directorio a otro usando un script, lo que hizo un trabajo tedioso, ¿verdad?



Shutil resuelve estos problemas clásicos de archivos y tablas de asignación con una solución de alto nivel. Esta es la clave para ahorrar tiempo y acelerar las operaciones de archivos. A continuación, se muestran algunos ejemplos de llamadas de alto nivel que proporciona shutil.



import shutil
shutil.copyfile('mydatabase.db', 'archive.db')
shutil.move('/src/High.py', '/packages/High')
      
      





# 3: glob



Es posible que Glob no sea tan asombroso como shutil, además de que ni siquiera se acerca a lambda en términos de utilidad. Pero es insustituible en algunos casos. Este módulo se utiliza para buscar directorios para comodines. Esto significa que se puede utilizar para agregar datos sobre archivos en su PC y sus extensiones. El módulo se importa sin problemas:



import glob
      
      





No estoy seguro de si este módulo tiene más funcionalidad, pero glob () es lo que se necesita para realizar búsquedas de archivos. La búsqueda usa sintaxis Unix, es decir aquellos. *, / etc.



glob.glob('*.ipynb')
      
      





Esta cadena devuelve todos los nombres de archivo que coinciden con la consulta especificada. La función se puede utilizar tanto para la agregación de datos como simplemente para trabajar con archivos.



# 4: argparse



Este módulo proporciona un método sólido y profundo para analizar los argumentos de la línea de comandos. Muchas herramientas de desarrollo usan este concepto y puede trabajar con todo esto usando la línea de comandos de Unix. Un gran ejemplo es Python Gunicorn, que maneja argumentos de línea de comando pasados. Para comenzar a trabajar con un módulo, debe importarlo.



import argparse
      
      





Luego, para poder trabajar con él, construimos un nuevo tipo, este será el analizador de argumentos:



parser = argparse.ArgumentParser(prog = 'top',
description = 'Show top lines from the file')
      
      





Ahora estamos agregando nuevos argumentos a nuestro analizador. En este caso, creamos un argumento que se puede pasar para determinar el número de líneas que queremos generar para cada archivo:



parser.add_argument('-l', '--lines', type=int, default=10)
      
      





Aquí se han agregado varios argumentos de palabras clave, uno de los cuales proporcionará el tipo de datos que se pasa para ese argumento, y el otro proporcionará un valor predeterminado cuando se llame al archivo sin este argumento. Ahora podemos obtener los argumentos llamando a la función parse_args () en nuestro nuevo tipo de analizador de argumentos:



args = parser.parse_args()
      
      





Ahora podemos llamar a este archivo de Python para compilar y también proporcionar fácilmente las opciones requeridas desde Bash.



python top.py --lines=5 examplefile.txt
      
      





No hace falta decir que esto definitivamente puede ser útil. He usado mucho este módulo al trabajar con Crontab. Puede ejecutar scripts con marcas de tiempo específicas de Unix. Además, este script también se puede utilizar para supervisores que ejecutan comandos Bash sin la intervención del usuario como trabajador.



# 5: importar re



Otro módulo muy subestimado. El módulo re se utiliza para analizar cadenas mediante expresiones regulares y proporciona más opciones para trabajar con cadenas en Python. ¿Cuántas veces se ha encontrado con la toma de decisiones algorítmicas basadas en funciones que están en una clase de cadena como str.split ()? ¡Pero deja de aguantarlo! Después de todo, las expresiones regulares son mucho más simples y fáciles de usar.



import re
      
      





El módulo re, a diferencia de algunos de los otros de esta lista, proporciona no una, sino muchas funciones extremadamente útiles. Son especialmente relevantes para trabajar con grandes cantidades de datos, lo cual es importante para los científicos de datos. Dos ejemplos para empezar son las funciones sub () y findall ().



import re
re.findall(r'\bf[a-z]*', 'which foot or hand fell fastest')
['foot', 'fell', 'fastest']
re.sub(r'(\b[a-z]+) \1', r'\1', 'cat in the the hat')
'cat in the hat'
      
      





:



regex :



  • re.compile. re.compile ( ) regex.
  • re.compile regex.
  • re.VERBOSE. re.compile re.VERBOSE ( ) regex . .


:





pattern = '^M{0,3}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$'
re.search(pattern, 'MDLV')
      
      









pattern = '''
    ^                   # beginning of string
    M{0,3}              # thousands - 0 to 3 Ms
    (CM|CD|D?C{0,3})    # hundreds - 900 (CM), 400 (CD), 0-300 (0 to 3 Cs),
                        #            or 500-800 (D, followed by 0 to 3 Cs)
    (XC|XL|L?X{0,3})    # tens - 90 (XC), 40 (XL), 0-30 (0 to 3 Xs),
                        #        or 50-80 (L, followed by 0 to 3 Xs)
    (IX|IV|V?I{0,3})    # ones - 9 (IX), 4 (IV), 0-3 (0 to 3 Is),
                        #        or 5-8 (V, followed by 0 to 3 Is)
    $                   # end of string
    '''
re.search(pattern, 'M', re.VERBOSE)
      
      





  • python raw string regex.
  • Grupos de captura con nombre para todos los grupos de captura si hay más de uno (? P ...). (incluso si solo hay una captura, también es mejor usarla)

    regex101.com es un gran sitio para depurar y verificar expresiones regulares



# 6: Matemáticas



Este no es el módulo más grande de la historia, pero a menudo es útil. El módulo de matemáticas le da acceso a todo, desde sin y cos hasta logaritmos. Todo esto es extremadamente importante cuando se trabaja con algoritmos.



import math
      
      





Un módulo ciertamente puede ahorrar algo de tiempo al hacer que las operaciones matemáticas estén disponibles sin dependencias. En este ejemplo, demostraré la función log (), pero si profundiza en el módulo, se abre todo un mundo.



import math
math.log(1024, 2)
      
      





# 7: Estadísticas



Otro módulo de gran utilidad para los cálculos estadísticos. Da acceso a estadísticas básicas, no tan profundas como en el caso de SCiPy, pero puede ser suficiente para el análisis de datos. El alias de este módulo es st, en algunos casos stc o pts. Pero, atención, no scs, este es un alias de Scipy.stats.



import statistics as st
      
      





¡Este módulo proporciona muchas funciones útiles que vale la pena tener en cuenta! Lo mejor de este paquete es que no tiene dependencias. Echemos un vistazo a algunas operaciones estadísticas básicas de propósito general:



import statistics as st
st.mean(data)
st.median(data)
 
st.variance(data)
      
      





# 8: urllib



Si muchos de los otros módulos de esta lista no son bien conocidos, urlib es una excepción. ¡Importémoslo!



import urllib
      
      





En su lugar, se puede utilizar un matraz ya que es más funcional. Pero para la mayoría de las funciones básicas, las capacidades de la biblioteca estándar son suficientes, lo que hace posible no preocuparse por las dependencias. Por supuesto, si se necesitan funciones adicionales, en este caso, vale la pena prestar atención a otra cosa. Pero si estamos hablando de una solicitud HTTP, entonces urlib hará lo que necesite.



from urllib.request import urlopen
 
data = null
with urlopen('http://example_url/') as response: data = response
      
      





El módulo urlib es algo que recomiendo aprender más.



# 9: fecha y hora



Otro gran ejemplo de una herramienta que es bastante común en la informática científica es el tipo de fecha y hora. Muy a menudo, los datos tienen marcas de tiempo. A veces, incluso son una función predictiva que se utiliza para entrenar el modelo. Este módulo se usa a menudo con el alias dt:



import datetime as dt
      
      





Ahora podemos crear tipos de fecha y hora y trabajar con la sintaxis típica de fecha y hora con propiedades que incluyen año, mes y día. Esto es increíblemente útil para reformatear, analizar y trabajar con secciones específicas de fechas en sus datos. Echemos un vistazo a algunas de las características principales de este paquete:



import datetime as dt
now = dt.date.today()
print(now.year)
print(now.month)
      
      





# 10: zlib



El último contribuyente a esta lista es el módulo zlib. Es una solución de compresión de datos versátil que utiliza el lenguaje de programación Python. El módulo es extremadamente útil cuando se trabaja con paquetes.



import zlib
      
      





Las funciones más importantes aquí son compress () y decompress ().



h = " Hello, it is me, you're friend Emmett!"print(len(h))
t = zlib.compress(h)
print(len(t))
z = decompress(t)
print(len(z))
      
      





Como conclusión, diré que programar en Python a veces parece difícil debido a la gran cantidad de dependencias. Y la biblioteca de idiomas estándar le permite deshacerse parcialmente de este problema. Además, las herramientas estándar de Python pueden ahorrar tiempo, reducir la cantidad de código y hacerlo más legible.



All Articles