|
Description:
|
|
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: jcea@jcea.es, twitter:
@jcea, https://blog.jcea.es/,
https://www.jcea.es/. Conectando desde Madrid.
-
Eduardo Castro, email:
info@ecdesign.es. 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:
msanchez@uninet.edu, 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.
-
[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.
-
[19:52] Jesús Cea ha investigado cómo funcionan los POSTs HTTP
en las protecciones CSRF https://es.wikipedia.org/wiki/CSRF.
-
[24:32] ¿Optimizaciones cuando tienes grandes cantidades de
datos?
-
[31:52] Gestión de memoria en Python.
-
[35:17] Tipografía para programadores:
-
[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#.
-
[56:02] ¿Qué es ser Pythonico?
-
[01:08:22] Seguimos desgranando los trucos propuestos por
Eduardo.
-
[01:11:12]iter() y next() admiten una parametro extra
centinela opcional que especifica un valor que termina el
iterador.
- Utilizar objetos centinelas que no sean
None, porque
None puede ser un objeto válido.
-
[01:17:32] Los "slices" son objetos que se pueden crear y
utilizar: slice(1,100).
-
[01:23:42]contextlib.suppress()
https://docs.python.org/3/library/contextlib.html#contextlib.suppress.
- Hay que recordar que aunque la excepción se suprime, la
ejecución del cuerpo se corta en ese punto.
-
[01:24:47] pathlib:
https://docs.python.org/3/library/pathlib.html.
-
[01:25:12] Usos atípicos de else: if, for, try,
while...
-
[01:30:07] El orden de los except ... IMPORTA.
-
[01:32:22] Tu yo del futuro tiene que tratar con tu yo del
pasado. "Escribe código como si el siguiente que tuviera que
trabajar con el fuese un psicópata asesino que sabe
donde vives".
- Sistemas de control de versiones: "Annotate" -> "blame".
-
[01:33:57] Usos de lambda.
-
[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:
-
[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.
|