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