2021-09-08 Python 3.10の新機能(その9) zip()関数に引数 strict を追加
Pythonの組み込み関数 zip() は、引数に指定したリストオブジェクトなどのイテラブルオブジェクトから要素を一つづつ取得し、組み合わせてタプルを作成します。
>>> list1 = [1, 2, 3, 4]
>>> list2 = ['a', 'b', 'c', 'd']
>>> list3 = ['あ', 'い', 'う', 'え']
>>> for tp in zip(list1, list2, list3):
... print(tp)
...
(1, 'a', 'あ')
(2, 'b', 'い')
(3, 'c', 'う')
(4, 'd', 'え')
この例では、zip()
に 3つの
2021-09-05 Python 3.10の新機能(その8) OpenSSL 1.1.1が必須に
Pythonでは、https通信やメッセージダイジェストの作成などの暗号関連機能に、OpenSSLを利用しています。
これまで、Pythonでは OpenSSL のVersion 1.0.2以降が利用可能でしたが、Python 3.10からは、OpenSSL 1.1.1以降が必須となりました(PEP 644 Require OpenSSL 1.1.1 or newer)。
WindowsやMacなどで、Python.orgのインストーラを利用する場合には、OpensSSLの最新版が含まれているので気にする必要はありません。また、Ma
2021-08-30 Python 3.10の新機能(その7) ユーザ定義型ガード
Python3.10で追加された型ヒント関連機能から、 PEP 647 User-Defined Type Guards を解説します。
型の絞り込みと型ガード¶
mypyなどの静的な型チェッカが型を推論する時、プログラムの処理を参考にして、可能な型の種類を絞り込んでいます。
例えば、
var1: int | None = func1()
print(var1 + 1) # 型チェックエラー
というプログラムでは、変数 var1
の型は、 int
または None
のどちらかです。var1
が int
の場合は var1 + 1
を正常に計算できますが、 None
の場合には N
2021-08-23 Python 3.10の新機能(その6) 明示的な型エイリアス
Python3.10で追加された型ヒント関連機能から、 PEP 613 Explicit Type Aliases を解説します。
型エイリアス¶
型エイリアスは、型定義に別名をつける機能です。
型エイリアスの定義は、見た目はただの代入文と区別が付きません。モジュールのトップレベルで型を代入すると、左辺の名前は右辺の型別名となります。
例として、
Username = str
と書けば、str
型の別名として、Username
という型名を使えるようになります。
str
型を使って
username: str = "test user"
と書いても、Us
2021-08-20 Python 3.10の新機能(その5) パラメータ仕様変数
Python3.10で追加された型ヒント関連機能から、 PEP 612 Parameter Specification Variables を解説します。
これまでの型ヒントでは、デコレータ などに代表される、既存の関数をラップして新しく関数を作成するような機能のサポートが十分ではありませんでした。
PEP 612 では、従来の 型変数 に加えてパラメータ仕様変数(Parameter Specification Variables) という種類の変数を新たにを追加し、関数の引数を参照して型定義を行えるようになりました。