Checking whether type is None

Rob Gaddi rgaddi at highlandtechnology.invalid
Tue Jul 24 19:18:18 EDT 2018


On 07/24/2018 01:07 PM, Chris Angelico wrote:
> On Wed, Jul 25, 2018 at 5:33 AM, Tobiah <toby at tobiah.org> wrote:
>> Consider:
>>
>>          >>> type({}) is dict
>>          True
>>          >>> type(3) is int
>>          True
>>          >>> type(None) is None
>>          False
>>
>> Obvious I guess, since the type object is not None.
>> So what would I compare type(None) to?
>>
>>          >>> type(None)
>>          <type 'NoneType'>
>>          >>> type(None) is NoneType
>>          Traceback (most recent call last):
>>            File "<stdin>", line 1, in <module>
>>          NameError: name 'NoneType' is not defined
>>
>>
>> I know I ask whether:
>>
>>          >>> thing is None
>>
>> but I wanted a generic test.
>> I'm trying to get away from things like:
>>
>>          >>> type(thing) is type(None)
>>
>> because of something I read somewhere preferring
>> my original test method.
> 
> There is nothing more generic in a type test than in simply saying "is
> None". There are no other instances of NoneType. Don't try
> type-checking None; just check if the object is None.
> 
> ChrisA
> 

I suppose one valid usage would be this sort of thing:

fn = {
     int: dispatchInt,
     str: dispatchStr,
     list: dispatchList,
     type(None): dispatchNone
}[type(x)]
fn(x)

-- 
Rob Gaddi, Highland Technology -- www.highlandtechnology.com
Email address domain is currently out of order.  See above to fix.



More information about the Python-list mailing list