I found this 3 ways to check it, but I don't know which of them is the best:
x = ['Bla', 'Bla', 'Bla', 'etc']
if isinstance(a, list): print('Perfect!')
if type(a) is list: print('Incredible!')
if type(a) == type([]): print('Awesome!')
Which of these is better?
Also, Can I use these ways to check whether an x is a string, tuple, dictionary, int, float, etc? If this is possible, in the first two methods do I have to convert a list to a tuple, string, dictionary, int, float, etc (no?), but in the third? I have to use (), {}, '', and what more for int and float?
Answer
These all express different things, so really it depends on exactly what you wish to achieve:
isinstance(x, list)check if the type ofxis eitherlistor haslistas a parent class (lets ignore ABCs for simplicity etc);type(x) is listchecks if the type ofxis preciselylist;type(x) == listchecks for equality of types, which is not the same as being identical types as the metaclass could conceivably override__eq__
So in order they express the following:
isinstance(x, list): isxlike alisttype(x) is list: isxprecisely alistand not a sub classtype(x) == list: isxa list, or some other type using metaclass magic to masquerade as alist.
No comments:
Post a Comment