89

Python 3.9 disponible ¿qué hay de nuevo?

59140Puntos

hace 4 años

Python es uno de los lenguajes que se mantiene en los primeros lugares cuando consultamos el índice TIOBE, las encuestas de Stack Overflow, JetBrains, GitHub y otros sitios de referencia. Las razones son la facilidad de aprendizaje, capacidades para desarrollo en la web, implementaciones para ciencia de datos e inteligencia artificial y otras más.

Por ello es natural que al haber una actualización mayor todo el mundo mire para saber que nos ofrecerá de nuevo este lenguaje con sus ya bastante amplias capacidades y estas son algunas de las novedades más relevantes.

Soporte para zonas horarias (Time Zone)

El módulo datetime ya nos permitía trabajar con fechas y horas en el formato UTC y debíamos recurrir a librerías de terceros si queríamos hacer algún manejo con las mismas. Ahora se incluye el nuevo módulo zoneinfo para implementar zonas horarias de la base de datos IANA.

Podemos obtener un objeto describiendo la zona horaria de la siguiente forma:

>>> from zoneinfo import ZoneInfo
>>> ZoneInfo("Mexico/BajaSur")
zoneinfo.ZoneInfo(key='Mexico/BajaSur')

Si queremos conocer cuales son las zonas horarias disponibles de la base de datos de IANA, ejecutar el comando zoneinfo.available_timezones()

Nuevos operadores para diccionarios

Los diccionarios son una de las estructuras de datos más populares en Python y que debes manejar correctamente ya que te acompañarán en muchos de tus proyectos.

Estos son los operadores merge (|) y update (|=) que complementan los métodos ya existentes como dict.update y {**d1, **d2}.

Veamos un ejemplo al combinar diccionarios:

>>> javascript = {"angular": "Nicolas Molina", "react": "Richard Kaufman"}
>>> marketing = {"copywriting": "Diana Reyes", "Growth": "Sofia Maradiaga"}
>>> javascript | marketing
{'angular': 'Nicolas Molina', 'react': 'Richard Kaufman', 'copywriting': 'Diana Reyes', 'Growth': 'Sofia Maradiaga'}
>>> marketing | javascript
{'copywriting': 'Diana Reyes', 'Growth': 'Sofia Maradiaga', 'angular': 'Nicolas Molina', 'react': 'Richard Kaufman'}

Ahora el resultado de actualizar un diccionario con la información de otro:

>>> javascript = {"angular": "Nicolas Molina", "react": "Richard Kaufman"}
>>> marketing = {"copywriting": "Diana Reyes", "Growth": "Sofia Maradiaga"}
>>> profesores = {}
>>> profesores |= marketing
>>> profesores
{'copywriting': 'Diana Reyes', 'Growth': 'Sofia Maradiaga'}
>>> profesores |= javascript
>>> profesores
{'copywriting': 'Diana Reyes', 'Growth': 'Sofia Maradiaga', 'angular': 'Nicolas Molina', 'react': 'Richard Kaufman'}

Seguro te serán muy útiles estos operadores y podrás ahorrar tiempo.

Nuevos métodos de strings para remover prefijos y sufijos

Seguro ya conoces el método .strip() que te ayuda a quitar caracteres de tu string, pero en ocasiones puede funcionar de una forma inesperada cuando le damos un parámetro específico.

Estos métodos son string.removeprefix(prefix) y string.removesuffix(suffix), pero nada mejor que verlos en acción para entender cómo funcionan:

Remove prefix

>>> profesora_copy = "Profesora del Curso de Copywriting para Plataformas Digitales">>> profesora_copy.removeprefix("Profesora del Curso de ")
'Copywriting para Plataformas Digitales'

Remove suffix

>>> profesora_copy = "Profesora del Curso de Copywriting para Plataformas Digitales">>> profesora_copy.removesuffix(" para Plataformas Digitales")
'Profesora del Curso de Copywriting'

Type hinting o notaciones de tipo de dato

La notación en funciones es algo que nos acompaña desde 2008 en Python 3.0, característica que ha evolucionado y ahora se presenta en una forma más refinada. Ahora es posible especificar los tipo de datos de los parámetros que pasamos por una función como se hace en otros lenguajes y que resulta bastante útil para bases complejas como diccionarios con un gran volumen de datos evitando indicar el tipo de dato de cada llave-valor.

Veamos un ejemplo sin type hinting:

>>> defsuma_enteros(numero):... return numero + numero
...
>>> suma_enteros('ola ke ase')
'ola ke aseola ke ase'

Ahora con type hinting:

>>> defsuma_enteros(numero: int):... return numero + numero
...
>>> suma_enteros('ola ke ase')
'ola ke aseola ke ase'

Como puedes observar esta notación no arroja un error ya que es posible “sumar” cadenas de caracteres en Python, por lo que debes tener esta consideración. Eso sí, nuestro editor nos indicará que el parámetro ingresado se espera sea de tipo int y podemos combinarlo con la sintaxis -> type para indicarlo también en la salida:

>>> defsuma_enteros(numero: int) -> int:... return numero + numero
...
>>> suma_enteros(5)
10

Un nuevo parser

Python 3.9 ahora utilizará un nuevo parser que será ligeramente más ágil aunque esto implique un aumento mínimo en el uso de memoria, suficiente para no ser notado en nuestro día a día. El anterior parser aún podrá ser utilizado y dejará de estar disponible cuando Python 3.10 sea lanzado.

¿Esto afectará mi aprendizaje o código actual?

Por supuesto existen muchos más detalles que puedes conocer en la documentación oficial, especialmente aquellas partes del lenguaje que ya han pasado al status deprecated o que se removieron.

En términos generales puedes seguir escribiendo código y aprendiendo de una versión como 3.6, aún así vale la pena que actualices a la más reciente para comenzar a aprovechar estas bondades.

Si aún no conoces de Python o quieres iniciar este lenguaje, te comparto esta ruta de aprendizaje para comenzar ¡Anímate!

Héctor Daniel
Héctor Daniel
Terranigma

59140Puntos

hace 4 años

Todas sus entradas
Escribe tu comentario
+ 2
Ordenar por:
5
13999Puntos

Excelente, gracias por la info! Hace un par de meses empecé con Python y estoy simplemente enamorado de este lenguaje, es un placer escribir código allí!

2
15550Puntos

Está genial, gracias por compartir 😄

2
9388Puntos

Muchas gracias…!

2
7686Puntos

de verdad esto hace valorar la palabra "comunidad"
muchas gracias!!

2
44641Puntos

Gracias por compartí Héctor, está bien bueno el Update.

2
24942Puntos

Muy buena información.

2
16597Puntos

Excelente muchas gracias

2
29109Puntos

Excelente !

2
10432Puntos

Gracias por el Dato Héctor!

2
160Puntos

Muchas gracias por compartir y explicar algunos novedades de las actualizaciones.
Saludos.

2
2703Puntos

Gracias por compartir la información

2
9336Puntos

Que buenos aportes. ¡Gracias por la infomación!

2
19840Puntos

Gracias! Es importante estar pendiente de los cambios para que no nos tomen por sorpresa y que no desaprovechemos las ventajas.

2
985Puntos

Genial!, muchas gracias por la información!

1
5267Puntos

¿Ahota si van a actualizar los cursos de python y django?

1

Gracias por el aporte. Muy bueno. Les recomiendo mucho el curso aquí arriba promocionado. Yo estoy a punto de terminarlo, y está de lujo.

1
20477Puntos

¿Qué sucede con los nuevos operadores de dicionarios cuando hay keys repetidas?

1
1357Puntos

Python viene con grandes maravillas. Me fascina como han agregado esos pequeños detalles

1
13522Puntos

Hola Terra, recuerda que las funcionalidades de type hinting existen desde la version 3.5 de python, un saludo.

1
7342Puntos

Muy buena!! Pero tengo un problema… Al instalar una versión nueva siempre que escribo python3 --version me aparece la versión 3.6 y no la nueva versión que instale.

Me podrían ayudar?

1
59140Puntos
4 años

Intenta escribiendo python3.9 --version
Es posible que se haya guardado en una ubicación distinta 😄

1
7342Puntos
4 años

Gracias por responder, utilizo Windows Subsystem for linux y aunque trate de actualizar por la terminal siempre pone que estoy usando la version 3.6.

Screenshot_1.png
1
5267Puntos

¿Ahora si van a actualizar los cursos o que?

1
59140Puntos
4 años

Estas actualizaciones no afectan drásticamente los cursos, así que puedes estar tranquilo al respecto.

Cuando llega a haber algún cambio sustancial se podría actualizar el curso. En palabras de Guido van Rossum incluso la transición de Python 3 a 4 no serán tan drástica como de 2 a 3 😉

1
5267Puntos
4 años

¿Entonces cuándo actualizaran el curso de python que tienen en platzi con la versión 2? y más aún el de django que sigue en la versión 2 y django ya está en su versión 3