2021-01-01から1年間の記事一覧

Python 3.11 からデフォルトの文字列ハッシュアルゴリズムが SipHash13 になります

Pythonの文字列やバイト列に対するハッシュアルゴリズムは、HashDoS対策としてPython 3.4から SipHash24が使われていました。 その後、ラウンド数を減らしたSipHash13でも十分に安全だとして2015年にRustが、2016年にRubyが、SipHash24からSipHash13への切り…

`from __future__ import annotations` がPython 3.10でデフォルトにならなくなりました

PEP 563 は Python 3.10 でデフォルトになる予定で、実際に去年の10月から master ブランチでは有効になっていました。今までの Python 3.10 のアルファ版でも有効になっています。 www.python.org このPEPはアノテーションの実行時の利用に後方非互換性と大…

gzip, bz2, lzma の binary mode でのイテレーションを高速化しました。

次の2つのプログラムは、どちらも test.gz というファイルを開いて、片方はバイナリモードで、もう片方はテキストモードでイテレートします。Pythonの使用上ファイルをイテレートしたら行単位で内容を読み出せます。 $ cat dec_gzip.py import gzip with gzi…

staticmethod が callable になりました

github.com Pythonで定義した関数とCで定義した関数は型が異なり、振る舞いにも幾らかの違いがあります。これがPython実装とC実装の両方を提供する場合に、挙動の一貫性がないという問題になります。 今回問題になったのは、Cで定義した関数は勝手にメソッド…

PYTHONWARNDEFAULTENCODINGを使おう

methane.hatenablog.jp この記事で紹介した、 open() などでエンコーディングを指定せずに暗黙でデフォルトのエンコーディングが使われた時に EncodingWarning を発生させる機能のPEPが受理され、実装し、昨晩リリースされた Python 3.10a7 に入りました。 .…

パターンマッチングがAcceptされました

Mailman 3 [python-committers] Acceptance of Pattern Matching PEPs 634, 635, 636, Rejection of PEPs 640 and 642 - python-committers - python.org パターンマッチング構文が複数提案されていたのですが、 PEP 634, 635, 636 が Accept されました。順…

PythonのデフォルトエンコーディングをUTF-8にするために

Python がテキストファイルを開く時のデフォルトエンコーディングがUTF-8でないことは、多くのWindowsユーザー、特にプログラミング初心者にとって障害になっています。 UnicodeDecodeError で検索すると、多くのWindowsユーザーが問題に遭遇しているのがわ…

easy_install が消えた

ずっと前から deprecated になっていた easy_install コマンドが、setuptools53でとうとう消えました。 今後リリースされる Python にはこのバージョン以降の setuptools がバンドルされ、Python をインストールした時に bin/ ディレクトリに入るゴミが1つ減…

2050年再エネ100%はどれくらい難しいか(2) - 発電所の規模について

昨日は2050年の年間消費電力量が1300~1500TWhになること、現在より増える理由は、人口減や省エネで減る電力消費よりも電化で増える消費電力が多いからだということを紹介しました。 methane.hatenablog.jp 今回はこれだけの電力量を発電するのに、太陽光、陸…

2050年再エネ100%はどれくらい難しいか(1) - 日本の消費電力量について

今年に入ってから環境問題、主に再エネについて少しずつ本を読んだりして調べています。 10月以降、菅政権が2050年カーボンニュートラルを打ち出してから、一気にこの分野の話題が過熱してきました。河野太郎大臣などが再エネの最大限導入のためにあらゆる障…

このブログに乗せているコードは引用を除き CC0 1.0 で提供します。