こんにちはヤク学長です。
データサイエンティスト兼ファーマシストで、アルゴリズムやBI開発を行っています。
本記事の目的は、「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__}")
この例では、ExceptionGroup
にZeroDivisionError
とTypeError
の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
型は、文字列リテラルを型安全に扱うことができるため、コードの可読性を向上させることができます。
というわけで、今回は以上です。大変お疲れ様でした。
引き続きで、徐々に発信していきます。
コメントや感想を受け付けています。ちょっとした感想でもいいので嬉しいです。
それでは、以上です。