Python は動的型付け言語であり、変数のデータ型は開発者が明示的に介入しなくても推論されます。
正しく動作するために文字列を必要とするコードがあったとして、オプションである型ヒントを欠いていた場合、使用される変数が文字列でない場合のエラーを回避するにはどうしたらよいでしょうか。
このチュートリアルでは、Pythonの type()
と isinstance()
関数、そして is
演算子を用いて、変数が文字列であるかどうかをチェックする方法を見ていきます。
- type() を使って変数が文字列であるかどうかを確認する。
- 変数が文字列であるかどうかを is 演算子で確認します。
- isinstance() で Variable が String であるかどうかをチェックします。
開発者は通常 type()
と is
を使用しますが、文脈によってはこれらに制限がある場合があり、その場合は isinstance()
関数を使用したほうがよいでしょう。
Type()で変数が文字列かどうかをチェックする。
組み込みの type()
関数は、オブジェクトのデータ型を返すために使用できます。例えば、この関数の戻り値は <class 'str'=""
であることを想定しています。
文字列変数と他の非文字列変数を初期化して、この関数をテストしてみましょう。
string = "'Do, or do not. There is no try.' - Yoda"
integer = 42
float = 3.14
# Print results
print("The type of string is ", type(string))
print("The type of integer is ", type(number))
print("The type of float is ", type(float))
さて、このコードを実行すると、次のようになります。
"The type of string is <class 'str'="""
"The type of integer is <class 'int'="""
"The type of float is <class 'float'="""
このロジックをコードフローに反映させるために、 type()
関数の戻り値を str
クラスと比較します。
user_name = 35
# Checks if variable is a string
if (type(user_name)) == str:
print("User's name is a string")
else:
print("User's name is not a string")
この結果は
User's age is not a string
変数が文字列であるかどうかをis演算子でチェックする
Python の is
演算子は同一性演算子です。つまり、比較された2つの変数が同じメモリ上の場所を指しているかどうかをチェックするものです。
前の例で type()
関数の結果と str
クラスを比較したように、 is
演算子も使用することができます。
user_name = "John Doe"
# Checks if variable is a string
if (type(user_name)) is str:
print("User's name is a string")
else:
print("User's name is not a string")
この結果は
User's name is a string
isinstance()で変数が文字列かどうかをチェックする
さて、最も安全な方法は isinstance()
関数です。この関数は2つの引数を受け取ります – チェックする変数と、チェックする型です。
この例では、変数と str
クラスを使用します。
それでは、いくつかの変数を作成して、その型をチェックしてみましょう。
string = "Hello there!"
integer = 42
print("Is string a string?: ", isinstance(string, str))
print("Is integer a string?: ", isinstance(integer, str))
この結果、次のようになります。
"Is string a string?: True"
"Is integer a string?: False"
結論
Pythonは動的型付け言語であるため、多くのユーザー起因のエラーが発生します。多くの場合、メソッドに渡された変数が期待通りの型であるかどうかは保証されていません。
このチュートリアルでは、Pythonで変数が文字列であるかどうかをチェックする3つの方法、 type()
と isinstance()
関数、そして is
演算子を使用した方法を説明しました。
</class