
こんにちは、大学時代にプログラミングを始め、現在はエンジニアをしているuhablog(ウハブログ)です。
今回はPythonのif文の条件判定で文字列かどうか判定する方法を解説します。
結論からいうと、type関数もしくはisinstance関数を使います。
これらの関数の公式ドキュメントは以下のリンクからどうぞ!
typeはこちら!
isinstanceはこちら!
typeを使って文字列か判定・確認する
まずはtype関数を使って文字列かどうかの判定を行なっていきます。
typeメソッドの引数として型を知りたい変数や値を渡すことで型を知ることができます。
サンプルコードではmojiretuという変数に「Hello, world」という文字列を格納しました。
type()メソッドの中にこのmojiretuを渡します。
if文で条件判定する際は「==」で比較するのではなく「is str」で比較をします。
# type.py
mojiretu = 'Hello, World'
if type(mojiretu) is str:
print('mojiretu はstrです')
上記プログラムを実行すると以下のような結果になります。
$ python type.py
mojiretu はstrです
type関数に判定したい変数を渡して、文字列か判定することができる!
isinstanceを使って文字列か判定・確認する
次にisinstanceメソッドを使って文字列かどうかの判定をしてます。
isinstanceメソッドでは一つ目の引数に型を知りたいオブジェクトを渡し、二つ目の引数に判定したい型を指定します。
TrueもしくはFalseが返ってきます。
# isinstance.py
mojiretu = 'Hello, Wrold'
if isinstance(mojiretu, str):
print('mojiretuはstrです。')
上記プログラムの実行結果は次のようになります。
$ python isinstance.py
mojiretuはstrです。
isinstanceメソッドに判定したい変数と、判定したい型を渡すことで、文字列かどうか判定することができる!
以上でif文で文字列かどうかの判定方法の解説は終わります。
ここからはtypeとisinstanceのどちらを使うべきかということについて簡単に解説していきます。
typeとisinstanceはどっちを使うべき?
文字列かどうかの判定はtypeメソッドとisinstanceメソッドの二つで記述することができました。
どちらでもできますが、公式ドキュメントではisinstanceを使うことが好ましいとされています。
これはサブクラスも考慮に入れるというのが理由だそうです。
class Oya(object):
pass
class Kodomo(Oya):
pass
kodomo = Kodomo()
if isinstance(kodomo, Oya):
print('kodomoはOyaクラスのサブクラスです。')
if type(kodomo) is Oya:
print('typeで判定:kodomoはOyaクラスのサブクラスです。')
これを実行すると以下の通りになります。
$ python isinstance.py
kodomoはOyaクラスのサブクラスです。
このようにisinstanceでは第一引数に渡したオブジェクトが、第二引数のクラスを継承したサブクラスから作られたオブジェクトだったとしても、Trueが返ってきます。
逆にtypeではそのような処理はされません。
typeとisinstanceにはこのような違いがあります。
isinstanceの第二引数
isinstanceメソッドの第二引数には以下のようにタプルを渡すこともできます。
num = 2
if isinstance(num, (str, int)):
print('mojiretuはstrもしくはintです。')
このプログラムを実行すると次のようになります。
$ python isinstance.py
mojiretuはstrもしくはintです。
プログラミング学習はUdemyがおすすめ
私はプログラミングの学習はUdemyで行うのが一番おすすめです。
Udemyでは動画講座でプログラミングなどのスキルを身につけることができます。
現役エンジニアがUdemyをオススメする理由は
・動画で好きなときに学べる
・一流の講師に学ぶことができる
・講師の方に質問ができる
・返金保証もある
・セールを頻繁に開催している
といったたくさんの理由があります。
現在Udemyではセールを開催しています!
通常時1万円から2万円前後の価格で講座が販売されていますが、セール時には1500円前後(ランチ代くらい)で一つの講座を購入することができます。
UdemyにはPythonの基礎が学べる講座もあるので、Pythonの基礎を動画で学んでみたい!という方はチェックしてみてください。