2021-09-10 Python 3.10の新機能(その10) Dataclassでslotsが利用可能に
dataclass は、Pythonで主にデータを格納するためのクラスで、C言語などでは構造体に相当するようなデータ構造を、かんたんに定義できるようになっています。
たとえば、次の Person
は、名前と年齢を格納するdataclassです。
from dataclasses import dataclass
@dataclass
class Person:
name: str
age: int
person1 = Person(name="パーソン太郎", age=20)
person2 = Person(name="パーソン次郎", age=30
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