Hatena::Grouppython

Pythonの覚書

2012-11-27

NoneTypeの型判定

18:48 | NoneTypeの型判定 - Pythonの覚書 を含むブックマーク はてなブックマーク - NoneTypeの型判定 - Pythonの覚書 NoneTypeの型判定 - Pythonの覚書 のブックマークコメント

type(spam)の戻り値で型判定をやっていたが、それは古い方法らしい。ほんとか?

isinstance()を使うのが新しいやり方らしい。

ちょっと使ってみた。

せっかくなんで、NoneTypeかどうかの型判定をしてみた。

nにNoneを代入

>>> n=None

nの値を出力

>>> n

何も返却されない

nの型を出力

>>> type(n)
<type 'NoneType'>

NoneTypeであるようだ。

nとNoneTypeを型判定

>>> isinstance(n,NoneType)

Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    isinstance(n,NoneType)
NameError: name 'NoneType' is not defined

NoneTypeは未定義と怒られた・・・。

んじゃ、Noneと比較すればいいのか?!

nとNoneを型判定

>>> isinstance(n,None)

Traceback (most recent call last):
  File "<pyshell#4>", line 1, in <module>
    isinstance(n,None)
TypeError: isinstance() arg 2 must be a class, type, or tuple of classes and types

クラスか型かタプルが引数として必要だと怒られた。


nとtype(None)を型判定

>>> isinstance(n,type(None))
True

これはTrueらしい。

使い方が間違っているかもしれないが、

isinstance(n,type(None))でNoneかどうかのチェックは出来そう。

CとかJavaで言うところのnullチェック的な。

Alice1017Alice1017 2012/11/28 16:10 PythonでNoneかどうかを判定するなら==演算子を使えばできますよ。

>>> a = None
>>> if a == None:
... print "None"
...
None

oneshotlife_tomoneshotlife_tom 2012/12/01 23:50 >>Alice1017さん
コメントありがとうございます。
Noneの場合は、isとか==で比較出来るわけですね。

これがstrとかの場合だと、
>>> s = "Hello"
>>> s is str
False
>>> s == str
False

判定出来ないわけで。

この場合は、
>>> isinstance(s,str)
True

で、判定出来る。

Noneの場合と、その他のデータ型の場合で、判定の手段とかが違うのが、ちょっと違和感有りです。Noneだけ特殊だとか、扱いが違うとか、そういうことなんでしょうね。おそらく。

>>> type(str)
<type 'type'>
>>> type(None)
<type 'NoneType'>

type()で型を調べると、
データ型が違いますもんね。

isinstance()はあくまでtype'type'の型判定のためのものだと理解しておきます。

また何かありましたら、ご教授下さい。

oneshotlife_tomoneshotlife_tom 2012/12/01 23:51 ちょっとテスト。

コメント欄でもはてな記法使えるのかどうかを勝手にテスト。
>|python|
print "Hello,World!"
||<

oneshotlife_tomoneshotlife_tom 2012/12/01 23:52 ↑やっぱ、使えないのか・・・。

XoshnavXoshnav 2013/06/18 06:18 Thanks for helnipg me to see things in a different light.

ifcxybnvifcxybnv 2013/06/19 20:49 IfdMVM , [url=http://qbpzpovsazkz.com/]qbpzpovsazkz[/url], [link=http://sulrbigmavnu.com/]sulrbigmavnu[/link], http://isbrpvuyavkk.com/

zmvkwixhzmvkwixh 2013/06/19 20:49 uhEg9I , [url=http://kzsznztevnvv.com/]kzsznztevnvv[/url], [link=http://oxssicjrifgt.com/]oxssicjrifgt[/link], http://mpqoeqfzxptm.com/

lkzjtblkzjtb 2013/06/20 04:46 1lXH0s <a href="http://fcfxgrurhzcd.com/">fcfxgrurhzcd</a>

nrgkftelumnnrgkftelumn 2017/08/26 22:59 payday loans for bad credit <a href="http://cashadvances2017.com"> what is a payday loan</a> <a href="http://cashadvances2017.com"> payday loans no credit check</a> <a href=http://cashadvances2017.com>payday loans with no bank account</a> direct payday loan lenders

nviqakelumnnviqakelumn 2017/09/09 18:27 payday loan interest rates <a href="http://paydayloans2017.com"> instant payday loans</a> <a href="http://paydayloans2017.com"> payday loan online</a> <a href=http://paydayloans2017.com>payday loans direct lenders only</a> quick payday loans

nyepdselumnnyepdselumn 2017/09/14 07:08 fast auto and payday loans <a href="http://paydayloans2017.com"> what is a payday loan</a> <a href="http://paydayloans2017.com"> payday loans</a> <a href=http://paydayloans2017.com>guaranteed payday loans</a> 3 month payday loans

nkhmnielumnnkhmnielumn 2017/09/18 17:54 usa payday loans <a href="http://paydayloans2017.com"> legitimate payday loans online no credit check</a> <a href="http://paydayloans2017.com"> payday loan</a> http://paydayloans2017.com - payday loans with no bank account payday loan direct lender

ゲスト



トラックバック - http://python.g.hatena.ne.jp/oneshotlife_tom/20121127
リンク元