How to test the data type of a variable

Deac-33 Lancaster deac33 at gmail.com
Thu Apr 23 22:14:33 EDT 2020


On Thursday, April 23, 2020 at 7:11:47 PM UTC-7, DL Neil wrote:
> On 24/04/20 1:24 PM, Deac-33 Lancaster wrote:
> > I'm aware that you can find the type of a variable with
> >     type(var)
> > 
> > But are there Boolean operators in Python3.8 to test the data type, e.g.
> >    is_floate(var)
> >    is_string(var)
> > etc. ?
> 
> There is also a 'pythonic' answer (what is the 'Python way'?) and that 
> is to proceed on the basis of "duck typing" and 'presumption'. The 
> latter known as EAFP ("It's Easier To Ask Forgiveness Than To Get 
> Permission"), eg:
> 
>  >>> n = 2
>  >>> d = 'two'
> 
> my training/first inclination has always been to check before use - in 
> this case, that both the numerator and denominator are numeric and that 
> the latter is non-zero - seeking to avoid:
> 
>  >>> n / d
> Traceback (most recent call last):
>    File "<stdin>", line 1, in <module>
> TypeError: unsupported operand type(s) for /: 'int' and 'str'
> 
> 
> Crash!
> 
> Conversely, here is the pythonic EAFP approach:
> 
>  >>> try:
> ...     n / d
> ... except TypeError:
> ...     print( "I'm sorry, Dave. I'm afraid I can't do that." )
> ...
> I'm sorry, Dave. I'm afraid I can't do that.
>  >>>
> 
> 
> and if you want to go all-in and try to break the laws of mathematics:
> 
>  >>> n = 2
>  >>> d = 0
> 
>  >>> try:
> ...     n / d
> ... except TypeError:
> ...     print( "I'm sorry, Dave. I'm afraid I can't do that." )
> ... except ZeroDivisionError:
> ...     print( "Officer, it wasn't me - honest!" )
> ...
> Officer, it wasn't me - honest!
>  >>>
> 
> 
> or just-for-fun:
> 
>  >>> try:
> ...     n / d
> ... except ( ZeroDivisionError, TypeError ):
> ...     print( "I'm sorry, Dave. I'm afraid I can't do that." )
> ...
> I'm sorry, Dave. I'm afraid I can't do that.
> -- 
> Regards =dn


DL,
I love it.  I like the style as well.
thanks again,
-deac33


More information about the Python-list mailing list