התחל במצב לא מקוון עם האפליקציה Player FM !
Python en español #17: Tertulia 2021-01-26
סדרה בארכיון ("עדכון לא פעיל" status)
When? This feed was archived on May 08, 2022 09:32 (). Last successful fetch was on July 13, 2021 01:05 ()
Why? עדכון לא פעיל status. השרתים שלנו לא הצליחו לאחזר פודקאסט חוקי לזמן ממושך.
What now? You might be able to find a more up-to-date version using the search function. This series will no longer be checked for updates. If you believe this to be in error, please check if the publisher's feed link below is valid and contact support to request the feed be restored or if you have any other concerns about this.
Manage episode 292843249 series 2332301
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.
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é: <https://docs.python.org/3/library/functools.html#functools.lru_cache.
Yield:
Ojo con excepciones y filtraciones de memoria.
[48:37] Uso interesante con los "context managers":
@contextlib.contextmanager
https://docs.python.org/3/library/contextlib.html#contextlib.contextmanager y@contextlib.asynccontextmanager
https://docs.python.org/3/library/contextlib.html#contextlib.asynccontextmanager.
[51:12] itertools: https://docs.python.org/3/library/itertools.html. A Jesús Cea no le entra en la cabeza la programación funcional.
[56:02] ¿Qué es ser Pythonico?
Aunque esté en la biblioteca estándar, no significa que sea pythónico:
asyncore: https://docs.python.org/3/library/asyncore.html. Está marcado como obsoleto desde Python 3.6.
Mover métodos funcionales en una librería separada.
Las dos jerarquías distintas que existían en Python 2. Esto se unificó en Python 3.
from __future__ import ...
.La migración a Python 3 fue un intento de simplificar el lenguaje. Pero Python 3 se está complicando cada vez más.
- La complejidad fragmenta los diferentes idiomas del lenguaje.
[01:08:22] Seguimos desgranando los trucos propuestos por Eduardo.
collections.defaultdict()
: https://docs.python.org/3/library/collections.html#collections.defaultdict.
[01:11:12]
iter()
ynext()
admiten una parametro extra centinela opcional que especifica un valor que termina el iterador.- Utilizar objetos centinelas que no sean
None
, porqueNone
puede ser un objeto válido.
- Utilizar objetos centinelas que no sean
[01:17:32] Los "slices" son objetos que se pueden crear y utilizar:
slice(1,100)
.Pasar un iterador a una función abre posibilidades interesantes.
Slice Objects
: https://docs.python.org/3/c-api/slice.html.
[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.
- 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:
[02:04:22] Deberes para el futuro: módulos
dis
https://docs.python.org/3/library/dis.html yenum
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.
29 פרקים
סדרה בארכיון ("עדכון לא פעיל" status)
When? This feed was archived on May 08, 2022 09:32 (). Last successful fetch was on July 13, 2021 01:05 ()
Why? עדכון לא פעיל status. השרתים שלנו לא הצליחו לאחזר פודקאסט חוקי לזמן ממושך.
What now? You might be able to find a more up-to-date version using the search function. This series will no longer be checked for updates. If you believe this to be in error, please check if the publisher's feed link below is valid and contact support to request the feed be restored or if you have any other concerns about this.
Manage episode 292843249 series 2332301
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.
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é: <https://docs.python.org/3/library/functools.html#functools.lru_cache.
Yield:
Ojo con excepciones y filtraciones de memoria.
[48:37] Uso interesante con los "context managers":
@contextlib.contextmanager
https://docs.python.org/3/library/contextlib.html#contextlib.contextmanager y@contextlib.asynccontextmanager
https://docs.python.org/3/library/contextlib.html#contextlib.asynccontextmanager.
[51:12] itertools: https://docs.python.org/3/library/itertools.html. A Jesús Cea no le entra en la cabeza la programación funcional.
[56:02] ¿Qué es ser Pythonico?
Aunque esté en la biblioteca estándar, no significa que sea pythónico:
asyncore: https://docs.python.org/3/library/asyncore.html. Está marcado como obsoleto desde Python 3.6.
Mover métodos funcionales en una librería separada.
Las dos jerarquías distintas que existían en Python 2. Esto se unificó en Python 3.
from __future__ import ...
.La migración a Python 3 fue un intento de simplificar el lenguaje. Pero Python 3 se está complicando cada vez más.
- La complejidad fragmenta los diferentes idiomas del lenguaje.
[01:08:22] Seguimos desgranando los trucos propuestos por Eduardo.
collections.defaultdict()
: https://docs.python.org/3/library/collections.html#collections.defaultdict.
[01:11:12]
iter()
ynext()
admiten una parametro extra centinela opcional que especifica un valor que termina el iterador.- Utilizar objetos centinelas que no sean
None
, porqueNone
puede ser un objeto válido.
- Utilizar objetos centinelas que no sean
[01:17:32] Los "slices" son objetos que se pueden crear y utilizar:
slice(1,100)
.Pasar un iterador a una función abre posibilidades interesantes.
Slice Objects
: https://docs.python.org/3/c-api/slice.html.
[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.
- 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:
[02:04:22] Deberes para el futuro: módulos
dis
https://docs.python.org/3/library/dis.html yenum
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.
29 פרקים
כל הפרקים
×ברוכים הבאים אל Player FM!
Player FM סורק את האינטרנט עבור פודקאסטים באיכות גבוהה בשבילכם כדי שתהנו מהם כרגע. זה יישום הפודקאסט הטוב ביותר והוא עובד על אנדרואיד, iPhone ואינטרנט. הירשמו לסנכרון מנויים במכשירים שונים.