こんにちはヤク学長です。
データサイエンティスト兼ファーマシストで、アルゴリズムやBI開発を行っています。
本記事の目的は、「pythonの基本操作を知る」ことを目的としています。
【本記事のもくじ】
まず、「Python」に真剣に取り組むための概要を解説します。
下記の方法で、簡単に概要を抑えることができます。
- 1.Python3.10新機能
それでは、上から順番に見ていきます。
なお、本上記の方法を抑えれば成果が出ます。
記事の内容は「転載 & 引用OK」問題ありません。
1.Python3.10新機能
パターンマッチング
パターンマッチングは、Python 3.10で導入された新機能で、値のパターンに基づいて値をマッチングすることができます。この機能は、短い、簡潔な、読みやすいコードを書くことを可能にします。
以下は、パターンマッチングの例です。
def describe_person(person):
match person:
case {"name": str, "age": int}:
print(f"{person['name']} is {person['age']} years old.")
case {"name": str, "occupation": str}:
print(f"{person['name']} works as a {person['occupation']}.")
case _:
print("Invalid person.")
person1 = {"name": "Alice", "age": 30}
person2 = {"name": "Bob", "occupation": "engineer"}
person3 = {"name": "Charlie"}
describe_person(person1)
describe_person(person2)
describe_person(person3)
この例では、describe_person()
関数は、与えられた辞書に基づいて人物の情報を出力します。パターンマッチングは、与えられた辞書が指定されたパターンと一致するかどうかを確認し、最初に一致するパターンに対応する処理を実行します。
上記の例では、最初のcase
文は、person
がname
キーを持ち、その値が文字列であり、age
キーを持ち、その値が整数である場合に一致します。2番目のcase
文は、person
がname
キーを持ち、その値が文字列であり、occupation
キーを持つ場合に一致します。最後のcase
文は、上記のいずれの場合にも一致しない場合に実行されます。パターンマッチングの構文は、case
キーワードで開始され、:
で終了します。また、_
は、どのパターンにも一致しない場合に使用されます。
Python 3.10以前のバージョンでは、このようなパターンマッチングの機能はありませんでした。代わりに、if
、elif
、else
などの制御フロー構文が使用されました。しかし、パターンマッチングを使用することで、より短く、簡潔で、読みやすいコードを書くことができます。
Type hitingの複数指定
Pythonの型ヒントでは、複数の型を指定することができます。以下は、複数の型を指定する方法の例です。
1. Union型を使用する
typing.Union
を使用して複数の型を指定できます。以下は、Union
型を使用した例です。
from typing import Union
def example(a: Union[int, float], b: Union[str, bytes]):
print(a, b)
example(10, "hello")
この例では、a
はint
またはfloat
型の値を持ち、b
はstr
またはbytes
型の値を持つ必要があります。
2. Tuple型を使用する
typing.Tuple
を使用して、複数の型のタプルを指定できます。以下は、Tuple
型を使用した例です。
from typing import Tuple
def example(a: Tuple[int, float], b: Tuple[str, bytes]):
print(a, b)
example((10, 3.14), ("hello", b"world"))
この例では、a
はint
型とfloat
型のタプル、b
はstr
型とbytes
型のタプルを受け入れます。
Pythonの型ヒントには、複数の型を指定するための他の方法もありますが、Union
型とTuple
型は最も一般的に使用されます。
isinstanceの複数指定
isinstance()
関数を使用して、複数の型を指定する方法はいくつかあります。以下は、いくつかの例です。
1. タプルを使用する
タプルを使用して、複数の型を指定できます。以下は、タプルを使用した例です。
value = 10
if isinstance(value, (int, float)):
print("value is a number")
この例では、isinstance()
関数は、value
がint
またはfloat
の場合にTrue
を返します。
2. any()
関数を使用する
any()
関数を使用して、複数のisinstance()
関数呼び出しをまとめることができます。以下は、any()
関数を使用した例です。
value = 10
if any([isinstance(value, t) for t in (int, float, complex)]):
print("value is a number")
この例では、isinstance()
関数がint
、float
、またはcomplex
のいずれかに一致する場合に、any()
関数はTrue
を返します。
3. 論理演算子を使用する
論理演算子を使用して、複数のisinstance()
関数呼び出しをまとめることができます。以下は、論理演算子を使用した例です。
value = 10
if isinstance(value, int) or isinstance(value, float) or isinstance(value, complex):
print("value is a number")
この例では、isinstance()
関数がint
、float
、またはcomplex
のいずれかに一致する場合に、論理演算子はTrue
を返します。
これらの方法は、いずれも複数の型を指定することができますが、タプルを使用する方法が最も一般的で簡潔です。
というわけで、今回は以上です。大変お疲れ様でした。
引き続きで、徐々に発信していきます。
コメントや感想を受け付けています。ちょっとした感想でもいいので嬉しいです。
それでは、以上です。