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.