Python en español

Python en español #17: Tertulia 2021-01-26

05.18.2021 - By Jesús CeaPlay

Download our free app to listen on your phone

Download on the App StoreGet it on Google Play

Eduardo Castro se desata y nos invita a comentar trucos y construcciones idiomáticas no evidentes https://podcast.jcea.es/python/17

Participantes:

Jesús Cea, email: [email protected], twitter:

@jcea, https://blog.jcea.es/,

https://www.jcea.es/. Conectando desde Madrid.

Eduardo Castro, email:

[email protected]. Conectando desde A

Guarda.

Javier, conectando desde Madrid.

Víctor Ramírez, twitter: @virako,

programador python y amante de vim, conectando desde Huelva.

Dani, conectando desde Málaga.

Miguel Sánchez, email:

[email protected], conectando desde

Canarias.

Jorge Rúa, conectando desde Vigo.

Audio editado por Pablo Gómez, twitter:

@julebek.

La música de la entrada y la salida es "Lightning Bugs", de Jason

Shaw. Publicada en https://audionautix.com/ con licencia

- Creative Commons Attribution 4.0 International

License.

[00:52] Haciendo tiempo hasta que entre más gente.

Raspberry Pi Pico:

https://www.raspberrypi.org/products/raspberry-pi-pico/.

Jesús Cea está encantado con su rango de alimentación.

Micropython: https://www.micropython.org/.

[06:02] Truco: Python -i: Ejecuta un script y pasa a modo

interactivo.

También se puede hacer desde el propio código con

code.InteractiveConsole(locals=globals()).interact().

Jesús Cea se queja de que usando la invocación desde código

no funciona la edición de líneas. Javier da la pista correcta:

para que funcione, basta con hacer import readline antes de

lanzar el modo interactivo.

[11:17] Regresión con ipdb: https://pypi.org/project/ipdb/.

[12:37] Nueva versión de Pyston https://www.pyston.org/.

Intérprete de Python más rápido. Un 50% más rápido que

cpython.

[16:22] Ver si dos fechas son iguales con datetime

https://docs.python.org/3/library/datetime.html.

Trabajar siempre en UTC

https://es.wikipedia.org/wiki/Tiempo_universal_coordinado,

aunque solo tengas una zona horaria.

[19:52] Jesús Cea ha investigado cómo funcionan los POSTs HTTP

en las protecciones CSRF https://es.wikipedia.org/wiki/CSRF.

Buena práctica: La respuesta al POST es una redirección a un

GET. Patrón Post/Redirect/Get (PRG)

https://es.wikipedia.org/wiki/Post/Redirect/Get.

Ventajas de usar un framework.

[24:32] ¿Optimizaciones cuando tienes grandes cantidades de

datos?

Tema muy amplio, hacen falta detalles del problema.

Se ofrecen algunas ideas:

Map/Reduce: https://en.wikipedia.org/wiki/Map_reduce.

Usar generadores u otras construcciones "lazy" siempre

que sea posible.

https://wiki.python.org/moin/Generators.

[31:52] Gestión de memoria en Python.

Design of CPython’s Garbage Collector:

https://devguide.python.org/garbage_collector/.

Hora de sacar la basura garbage collector - Pablo Galindo y

Victor Terrón - PyConES 2018

https://www.youtube.com/watch?v=G9wOSExzs5g.

[35:17] Tipografía para programadores:

Victor Mono: https://rubjo.github.io/victor-mono/.

Fira Code: https://fonts.google.com/specimen/Fira+Code.

Fira Code Retina:

https://github.com/tonsky/FiraCode/issues/872.

[37:17] Eduardo Castro se ha currado una lista de trucos

sencillos pero interesantes:

En estas notas solo referenciamos los puntos a los que

dedicamos más tiempo, se habló de más cosas.

El documento para poder seguir los comentarios de la

grabación está en https://demo.hedgedoc.org/s/hEZB92q40#.

hash(float('inf')) -> 314159.

[43:02] LRU Caché:

"blame".

[01:33:57] Usos de lambda.

Módulo Operator: https://docs.python.org/3/library/operator.html.

[01:35:52] Algunos trucos cortos adicionales.

collections.deque:

https://docs.python.org/3/library/collections.html.

dateutil: https://pypi.org/project/python-dateutil/.

itertools:

https://docs.python.org/3/library/itertools.html.

if a < x < b:

>>> import dis

>>> dis.dis(lambda x: a < x < b)

1 0 LOAD_GLOBAL 0 (a)

2 LOAD_FAST 0 (x)

4 DUP_TOP

6 ROT_THREE

8 COMPARE_OP 0 (<)

10 JUMP_IF_FALSE_OR_POP 18

12 LOAD_GLOBAL 1 (b)

14 COMPARE_OP 0 (<)

16 RETURN_VALUE

>> 18 ROT_TWO

20 POP_TOP

22 RETURN_VALUE

Desempaquetado complejo:

>>> a, b, (c, d), *e, f = 1, 2, (3, 4), 5, 6, 7, 8, 9

>>> print(a,b,c,d,e,f)

1 2 3 4 [5, 6, 7, 8] 9

Usar la variable "guión bajo" para descartar valores. Ojo

con la internacionalización.

[01:56:22] Python cada vez tiene más "gotchas". Algunos

ejemplos:

Operador morsa. Tratado con projilidad en tertulias

anteriores.

Parámetros mutables.

Definir "closures" dentro de un for pero usarlo fuera.

Tuplas con un solo elemento. Es más evidente el constructor

tuple(), pero ojo: tuple('abc') -> ('a', 'b', 'c').

[02:01:06] ¡Terminamos con los trucos!

[02:01:37] Ideas para indexar y buscar el documentos:

Whoosh:

https://whoosh.readthedocs.io/en/latest/intro.html.

Solr: https://solr.apache.org/.

[02:04:22] Deberes para el futuro: módulos dis

https://docs.python.org/3/library/dis.html y enum

https://docs.python.org/3/library/enum.html.

[02:04:47] Sugerencia sobre visión artificial:

https://www.pyimagesearch.com/. De lo mejor que hay.

[02:06:47] regex https://pypi.org/project/regex/ que libera el

GIL https://en.wikipedia.org/wiki/Global_interpreter_lock.

[02:07:47] Acelerador y distribución de programas Python

precompilados en binario y empaquetados en un directorio e,

incluso, en un único fichero: Nuitka: https://nuitka.net/.

[02:08:57] Design of CPython’s Garbage Collector:

https://devguide.python.org/garbage_collector/.

[02:09:17] Cierre.

[02:10:52] Casi se nos olvida el aviso legal para grabar y

publicar las sesiones.

[02:12:55] Final.

More episodes from Python en español