read pkl open loads how extension example cpickle python pickle

python - pkl - pickle.loads example



¿Cuál es la diferencia entre__reduce__ y__reduce_ex__? (2)

Entiendo que estos métodos son para decapado / desatornillado y no tienen relación con la función incorporada de reducción, pero ¿cuál es la diferencia entre los 2 y por qué necesitamos ambos?


__reduce_ex__ es lo que __reduce__ debería haber sido pero nunca se convirtió. __reduce_ex__ funciona como __reduce__ pero se pasa el protocolo de pickle.


Los doctores dicen que

Si se proporciona, en el tiempo de decapado se __reduce__() sin argumentos, y debe devolver una cadena o una tupla.

Por otra parte,

A veces es útil conocer la versión del protocolo al implementar __reduce__ . Esto puede hacerse implementando un método llamado __reduce_ex__ lugar de __reduce__ . __reduce_ex__ , cuando existe, se llama con preferencia sobre __reduce__ (aún puede proporcionar __reduce__ para compatibilidad con versiones anteriores). Se __reduce_ex__ método __reduce_ex__ con un solo argumento entero, la versión del protocolo.

En la mano apretada, Guido dice que este es un área que podría limpiarse.