タグ Python 3.8
人気順 10 users 50 users 100 users 500 users 1000 usersPython 3.8 の概要 (その7) - ちょっと便利そうな機能追加 - atsuoishimoto's diary
math.prod() リストなどのイテレータの要素の積を計算する math.prod() が追加されました。 sum() の掛け算版ですね。 >>> import math >>> math.prod([1,2,3,4]) 24 正規表現が \N{名前} 記法をサポート reモジュールで、正規表現に文字の名前を指定する \N{名前} を使えるようになりました。 >>> re.match(r'\N{LATIN ... 続きを読む
Python 3.8 の概要 (その6) - 拡張モジュール関連 - atsuoishimoto's diary
拡張モジュールがリリースビルド/デバッグビルドで共用可能に これまで、デバッグ用にビルドされたPythonでは、Pythonのメモリ使用状況を調査するための機能 が有効になっていました。このため、リリース用にビルドされたPythonとデバッグ用にリリースされたPythonでは、内部のデータ構造が一部異なっており、拡張モジュ... 続きを読む
Python 3.8 の概要 (その5) - デバッグ用 f文字列フォーマット - atsuoishimoto's diary
Python3.8の新機能で、これ一番好きかも。このためだけにPython3.8必須にしてもいい。 通常、 f文字列 に変数名や式を指定すると、その値が文字列に埋め込まれます。 >>> foo, bar = 10, 20 >>> print(f'value is {foo+bar}') value is 30 便利な機能ですが、デバッグ用にデータを出力するときには、ちょっと面倒です。... 続きを読む
Python 3.8 の概要 (その3) - Pickle protocol 5 with out-of-band data - atsuoishimoto's diary
Pythonでは、複雑なデータの交換や保管する場合、よく Pickleモジュール が使われます。Pickleはデータを外部に出力可能な形式に変換してファイルに変換したり、サーバと通信して送信したりします。 Pythonのconcurrent.futures や multiprocessing を使って分散処理を行う場合も、プロセス間のデータ交換に Pickle が使... 続きを読む
Python 3.8 の概要 (その2) - Positional-only parameters - atsuoishimoto's diary
Python 3.0 以降では、関数を定義するときに、キーワード専用引数 を指定できるようになりました。 def func(a, b, *, c=1, d=2): return a+b+c+d こんなのですね。引数のリストに * がある関数を呼び出すとき、* の後ろにある引数の値は、かならずキーワード引数として指定しなければいけません。 ↑の関数だと、引数 c ... 続きを読む
Python 3.8 の概要 (その1) - Assignment expressions - atsuoishimoto's diary
古来、Pythonでは「代入は文であるべき!」と一貫して主張してきました。 C言語などでは、代入は足し算や掛け算と同じ、値を計算する「式」で、たとえば a = (b=100) / 2; と書くと、b には 100 を代入し、a に 100/2=50 を代入します。1+1 は 2 という値になる 式 ですが、b=100 も同様に値が 100 となる 式 なのです。... 続きを読む
Python-Dev: Python 3.8 では新規空dictが小さくなる - Qiita
Python 3.7 では {} で作った空 dict よりも、 dict.clear() で作った空 dict の方が省メモリでした。 >>> import sys >>> d = {} >>> sys.getsizeof(d) 240 >>> d.clear() >>> sys.getsizeof(d) 72 これは dict オブジェクトを新規作成するときに最小サイズのハッシュテーブルを初期化するのに対して、 dict.clear() は... 続きを読む