2022-10-24 Python 3.11の新機能(その12) Python本体の機能追加
Python 3.11でのPython本体への機能追加を紹介します。
PEP 657 – トレースバックの詳細エラー表示¶
これまで、Pythonスクリプトの実行中にエラーが発生すると、エラーが発生した行番号が表示されていました。
Traceback (most recent call last):
File "pep657.py", line 5, in <module>
f(1, 2, None, 4, 5)
File "pep657.py", line 2, in f
return a + b + c + d + e
TypeError: unsupported operand ty
2022-10-18 Python 3.11の新機能(その11) 標準ライブラリ
2022-10-11 Python 3.11の新機能(その10) 正規表現 - アトミックグループとPossessive指定子
Python 3.11 では、新しい正規表現として (?>...)
、*+
、 ++
、 ?+
、{m,n}+
が追加されました。
(?>...)
はアトミックグループと呼ばれる正規表現で、*+
、 ++
、 ?+
、{m,n}+
はそれぞれ既存の *
、+
、?
、{m,n}
にアトミックグループの機能をもたせた正規表現です。
従来の.*a
のような正規表現は、なるべく長い文字列とマッチするようになっています。たとえば、正規表現 .*a
は a
で終わる任意の文字列にマッチしますが、文字列 11a22a33abc
とマッチすると、11a
や 1122a
ではなく、一番長い
2022-10-10 Python 3.11の新機能(その9) 型ヒントの新機能 - その他
型ヒント関連の新機能はまだ他にもありますが、ここでは以下の機能を紹介します。
TypedDict と NamedTuple で Generic を定義可能に¶
Python 3.10までは、TypedDict と NamedTuple を定義するとき、派生元として Genericなど、他の型を指定できませんでした。
このため、TypedDict
と NamedTuple
をジェネリックスとして使えなかったのですが、Python3.11ではこの制限が緩和され、Generic
から継承できるようになりました。次のように、型変数を利用した型定義が
2022-10-10 Python 3.11の新機能(その8) 型ヒントの新機能 - PEP-655 TypedDictで要素の省略可・不可を個別に設定できるようになった
Python 3.11で追加された PEP-655 TypedDictで個別の要素ごとに省略可・不可を指定可能にする では、typing.Required と typing.NotRequired が追加され、辞書の個別の要素ごとに省略可・不可を指定できるようになりました。
TypedDict は決まったキーを持つ辞書オブジェクトの型宣言で、次のように辞書のキーと値を宣言できます。
from typing import TypedDict
class Address(TypedDict):
addr1: str
addr2: str
postal