【超まとめ】解説!!「Python3.11新機能」【Python新機能】

こんにちはヤク学長です。
データサイエンティスト兼ファーマシストで、アルゴリズムやBI開発を行っています。

本記事の目的は、「pythonの基本操作を知る」ことを目的としています。

【Python】WindowsにPythonをインストールしよう【入門編】

【本記事のもくじ】

まず、「Python」に真剣に取り組むための概要を解説します。
下記の方法で、簡単に概要を抑えることができます。

  • 1.Python3.11新機能

それでは、上から順番に見ていきます。
なお、本上記の方法を抑えれば成果が出ます。

記事の内容は「転載 & 引用OK」問題ありません。

1.Python3.11新機能

ExceptionGroup

Python 3.11には、新しい例外処理機能であるExceptionGroupが導入されました。ExceptionGroupは、複数の例外を処理するために使用できるコンテナです。例外グループは、except節に渡され、複数の例外を同時に処理できます。

以下は、ExceptionGroupを使用した例です。

from collections.abc import ExceptionGroup

try:
# 例外をスローするコード
result = 1 / 0
except ExceptionGroup((ZeroDivisionError, TypeError)) as e:
for ex in e.exceptions:
print(f"Caught exception: {type(ex).__name__}")

この例では、ExceptionGroupZeroDivisionErrorTypeErrorの2つの例外を指定しています。tryブロックでゼロ除算例外をスローしていますが、この例外はExceptionGroupによってキャプチャされます。except節では、ExceptionGroupの例外リストを反復処理して、各例外を処理します。この例では、ZeroDivisionErrorがスローされます。

ExceptionGroupは、Python 3.11で追加された新機能の1つであり、Python 3.11未満では使用できません。

Self Type hiting

Python 3.11には、新しい型ヒントであるSelfが導入されました。Self型は、クラスメソッドやクラス変数の型アノテーションで使用できます。Selfは、クラス自体を表し、そのクラスのサブクラスも表します。

以下は、Self型を使用した例です。

from __future__ import annotations
from typing import Type

class Person:
name: str
age: int

@classmethod
def from_json(cls: Type[Self], data: dict[str, str]) -> Self:
instance = cls()
instance.name = data["name"]
instance.age = int(data["age"])
return instance

class Employee(Person):
salary: float

def __init__(self, name: str, age: int, salary: float):
self.name = name
self.age = age
self.salary = salary

data = {"name": "Alice", "age": "30"}
employee = Employee.from_json(data)

この例では、Personクラスにfrom_json()メソッドがあり、Self型がクラス自体を表します。from_json()メソッドは、dictオブジェクトからPersonクラスまたはそのサブクラスのインスタンスを作成します。Employeeクラスは、Personクラスを継承しており、salary属性を追加しています。Employeeクラスのインスタンスを作成するために、Employee.from_json()メソッドを使用しています。

Self型は、Python 3.11で追加された新機能の1つであり、Python 3.11未満では使用できません。Self型は、クラスの型アノテーションで使用され、クラス自体を表すため、より型安全なコードを書くことができます。

LiteralString

Python 3.11には、新しい型ヒントであるLiteralStringが導入されました。LiteralString型は、文字列のリテラル値を表し、特定の文字列のみを受け入れるように指定できます。LiteralStringは、列挙型を定義するのに便利です。

以下は、LiteralString型を使用した例です。

from typing import Literal

def print_color(color: Literal["red", "green", "blue"]) -> None:
print(f"Color: {color}")

print_color("red") # OK
print_color("green") # OK
print_color("blue") # OK
print_color("yellow") # Error: invalid color

この例では、print_color()関数は、Literal型を使用して、”red”、”green”、または”blue”のいずれかの文字列のみを受け入れるように指定されています。このようにすることで、print_color()関数に渡される文字列の種類を厳密に制限することができます。

LiteralString型は、Python 3.11で追加された新機能の1つであり、Python 3.11未満では使用できません。LiteralString型は、文字列リテラルを型安全に扱うことができるため、コードの可読性を向上させることができます。


というわけで、今回は以上です。大変お疲れ様でした。
引き続きで、徐々に発信していきます。

コメントや感想を受け付けています。ちょっとした感想でもいいので嬉しいです。

それでは、以上です。

最新情報をチェックしよう!