Impresionantes nuevas funciones en Python 3.8

Python es un lenguaje de programación de alto nivel y propósito general ampliamente utilizado. Inicialmente fue diseñado por Guido van Rossum en 1991 y desarrollado por Python Software Foundation. Fue desarrollado principalmente para enfatizar la legibilidad del código y su sintaxis permite a los programadores expresar conceptos en menos líneas de código. Python es un lenguaje de programación que le permite trabajar rápidamente e integrar sistemas de manera más eficiente.
Python 3.8 contiene muchas pequeñas mejoras con respecto a las versiones anteriores. Este artículo describe las adiciones y los cambios más significativos en Python 3.8
 

Parámetros solo posicionales (/)

Hay una nueva sintaxis de parámetro de función «/» que indica que algunos parámetros de función deben especificarse posicionalmente y no pueden usarse como argumentos de palabra clave. La adición de «/» mejora la consistencia del lenguaje y permite un diseño de API robusto.
Ejemplo:
 

Python3

# Arguments before / are considered
# as positional arguments only
def add(x, y, /, z = 0):
    a = x + y + z
    return a 
 
# Driver's code
print(add(2, 5))
print(add(2, 5, 7))
print(add(x = 2, y = 5))

Producción: 
 

7
14

Rastreo (última llamada más reciente): 
Archivo «», línea 1, en 
TypeError: add() recibió algunos argumentos posicionales pasados ​​como argumentos de palabra clave: ‘x, y’ 
 

El marcador «/» significa que pasar valores para x e y solo se puede hacer posicionalmente, pero no usando argumentos de palabras clave.
 

Expresiones de asignación (: =)

Este operador se utiliza para asignar y devolver un valor en la misma expresión. Esto elimina la necesidad de inicializar la variable por adelantado. El principal beneficio de esto es que ahorra algunas líneas de código. También se le conoce como “El operador de la morsa” debido a su similitud con los ojos y colmillos de una morsa.
Ejemplo:
 

Python3

a = 20
if (b := a) > 10:
    print(f"The value of b is {b} and is greater than 10.")

Producción:
 

The value of b is 20 and is greater than 10.

f-strings ahora admite «=»

Este mecanismo de formato de strings se conoce como interpolación de strings literales o más comúnmente como strings F (debido al carácter f inicial que precede a la string literal). La idea detrás de f-strings es simplificar la interpolación de strings. Python 3.8 permite el uso del operador de asignación mencionado anteriormente y el signo igual (=) dentro de las strings f.
Por ejemplo, digamos que tenemos dos variables «a» y «b», y queremos imprimir «a + b» junto con el resultado. Aquí podemos usar f-strings=.
 

Ejemplo:

Python3

a = 5
b = 10
 
# Using = at the end of
# f-strings
print(f'{a + b = }')
 
# Using assignment operators
# inside f-strings
print(f'{(c := a + b)}')
 
print("The value of c:", c)

Producción:
 

a + b = 15
15
The value of c: 15

Esto es muy útil durante la depuración, especialmente para todos los que usan sentencias print() para la depuración.
 

invertido() funciona con un diccionario

A diferencia de Python 3.7, ahora en Python 3.8, el método incorporado «invertido()» se puede usar para acceder a los elementos en el orden inverso de inserción.
Ejemplo:
 

Python3

# Declaring a dictionary
my_dict = dict(x = 1, y = 2, z = 3)
 
# Prints only keys
list(reversed(my_dict))
 
# Prints the key-value pair
# as a list of tuples
list(reversed(my_dict.items()))

Producción:
 

['z', 'y', 'x']
[('z', 3), ('y', 2), ('x', 1)]

Sin paréntesis para declaraciones de retorno y rendimiento

Las declaraciones ‘rendimiento’ y ‘retorno’ no requieren paréntesis para devolver múltiples valores.

Por ejemplo:
 

Python3

def parse(family):
  lastname, *members = family.split()
  return lastname.upper(), *members
 
print(parse('Charles David John Sam'))

Producción:

('CHARLES', 'David', 'John', 'Sam')

función pow()

En la forma de tres argumentos de pow(), cuando el exponente es -1, calcula el inverso multiplicativo modular del valor dado.

Por ejemplo, para calcular el inverso multiplicativo modular de 38 módulo 137:

Python3

print(pow(38, -1, 137))

Producción:

119

Advertencia de sintaxis

Si pierde una coma en su código como a = [(1, 2) (3, 4)], en lugar de arrojar TypeError, muestra una advertencia de sintaxis informativa como esta:

SyntaxWarning: 'tuple' object is not callable; perhaps you missed a comma?

Comprensión de diccionario

Las comprensiones de dictados se han modificado para que la clave se calcule primero y el valor en segundo lugar:

>>> data = {input('Name: '), input('Age: ')}
Name: Charles
Age: 40

módulo ‘csv’

El ‘csv.DictReader’ ahora devuelve instancias de diccionario en lugar de ‘colecciones.OrderedDict’.

importlib_metadata

importlib_metadata es una nueva biblioteca agregada en los módulos de utilidad estándar de Python, que proporciona una API para acceder a los metadatos de un paquete instalado, como sus puntos de entrada o su nombre de nivel superior.
Ejemplo: la versión de pip se puede verificar usando este módulo. 
 

Python3

from importlib import metadata
 
# pip version
print(metadata.version('pip'))
data = metadata.metadata('pip')
print()
print(data)

Producción:
 

9.0.1
Metadatos-Versión: 2.1 
Nombre: pip 
Versión: 9.0.1 
Resumen: La herramienta recomendada por PyPA para instalar paquetes de Python. 
Página de inicio: https://pip.pypa.io/ 
Autor: Los desarrolladores 
de pip Correo electrónico del autor: python-virtualenv@groups.google.com 
Licencia: MIT 
Descripción: pip 
=== 
La herramienta `PyPA recomendada 
`_ 
para instalar Paquetes de Python. 
* `Instalación `_ 
* `Documentación `_ 
* `Registro de cambios `_ 
* `Página de Github `_ 
* `Seguimiento de problemas `_ 
* `Lista de correo de usuarios `_ 
* `Lista de correo de desarrolladores `_ 
* Usuario IRC: #pypa en Freenode. 
* Desarrollador IRC: #pypa-dev en Freenode. 
.. imagen:: https://img.shields.io/pypi/v/pip.svg 
:objetivo: https://pypi.python.org/pypi/pip 
.. imagen:: https://img.shields .io/travis/pypa/pip/master.svg 
:objetivo: http://travis-ci.org/pypa/pip 
.. imagen:: https://img.shields.io/appveyor/ci/pypa/pip .svg 
:objetivo: https://ci.appveyor.com/project/pypa/pip/history 
.. imagen:: https://readthedocs.org/projects/pip/badge/?version=stable 
:objetivo: https: //pip.pypa.io/en/stable 
Código de conducta 
—————  Se espera que todas las personas que
interactúan en las bases de código, los rastreadores de problemas, las salas de chat 
y las listas de correo del proyecto pip sigan el `Código de conducta de PyPA`_. 
.. _Código de Conducta PyPA: https://www.pypa.io/es/ultimos/codigo-de-conducta/ 
Palabras clave: easy_install distutils setuptools egg virtualenv 
Plataforma: DESCONOCIDO 
Clasificador: Estado de desarrollo::5 – Producción/Estable 
Clasificador: Audiencia prevista::Desarrolladores 
Clasificador: Licencia::Aprobado por OSI :: 
Clasificador de licencia MIT: Tema::Desarrollo de software::Herramientas de compilación 
Clasificador: Lenguaje de Programación::Python::2 
Clasificador: Lenguaje de Programación::Python::2.6 
Clasificador: Lenguaje de Programación::Python::2.7 
Clasificador: Lenguaje de Programación::Python::3 
Clasificador: Lenguaje de Programación::Python::3.3 
Clasificador: Lenguaje de Programación::Python::3.4 
Clasificador: Lenguaje de Programación::Python::3.5 
Clasificador: Lenguaje de programación::Python::Implementación::PyPy 
Requires-Python: >=2.6,!=3.0.*,!=3.1.*,!=3.2.* 
Provides-Extra: testing 
 

Actuación 

  • En Python 3.8, el módulo de multiprocesamiento ofrece una clase SharedMemory que permite crear y compartir regiones de memoria entre diferentes procesos de Python. La memoria compartida proporciona una ruta mucho más rápida para pasar datos entre procesos, lo que eventualmente permite que Python use múltiples procesadores y múltiples núcleos de manera más eficiente.
  • Muchos métodos y funciones integrados se han acelerado entre un 20 % y un 50 %.
  • Las listas recién creadas ahora son en promedio un 12% más pequeñas que antes.
  • Las escrituras en variables de clase son mucho más rápidas en Python 3.8.

Publicación traducida automáticamente

Artículo escrito por imavijit y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *