⛳
pickle.dumps の引数 protocol に -1 渡すとどうなる?
pickle.dumps の引数 protocol に -1 渡すとどうなる?
某所の python なコードを眺めてたときに pickle.dumps の引数 protocol に -1 を渡してるのを見つけて、不思議に思ったのでドキュメント見てみた。
プロトコルまわりの定数としては HIGHEST_PROTOCOL と DEFAULT_PROTOCOL のふたつだけで、コンソールで試してみたところどちらも正の整数だった。
# python 3.8.1 で検証
>>> import pickle
>>> pickle.DEFAULT_PROTOCOL
4
>>> pickle.HIGHEST_PROTOCOL
5
さらにドキュメント読み進めると dump, dumps に渡される引数は Pickler クラスのコンストラクタと同じ意味とのことだったので、そちらを見てみるとバッチリ正解が書いてあった。
任意の引数 protocol は、整数で、pickle 化で使用するプロトコルを指定します; サポートされているプロトコルは 0 から HIGHEST_PROTOCOL までになります。指定されない場合、DEFAULT_PROTOCOL が使用されます。負数が与えられた場合、HIGHEST_PROTOCOL が使用されます。
これ見ると -1 渡すよりは HIGHEST_PROTOCOL 渡すほうが行儀は良さそうすなー。ベタ書きしてると意味が汲み取りにくいし、バージョンによって挙動変わったりもするし。
とりあえずはまたひとつ勉強になりました :-)
Discussion