繁体   English   中英

检查varible是string类型还是int类型

[英]check if varible is either of type string or int

我正在尝试检查变量数据是字符串类型还是整数类型,以便我可以对其进行处理。如果以上都不是应该返回false。 我尝试使用isinstance但是它要求数据都是两种类型,这是不可能的。 有更好的方法吗? 这是我的代码:

     if isinstance(data(int, str)):
         return True
     else:
         return false

您可以使用布尔值or

>>> isinstance(3,int) or isinstance(3,str)
True
>>> isinstance("3",int) or isinstance("3",str)
True
>>> isinstance([3],int) or isinstance([3],str)
False

或指定可能类型的元组:

>>> isinstance(3, (int, str))
True
>>> isinstance("3", (int, str))
True
>>> isinstance([3], (int, str))
False

因此,就您而言,它不是:

isinstance(data(int, str))

isinstance(data, (int, str))

实际上,您可以将类的元组用作isinstance第二个参数。

isinstance(var,(list,int))

isinstance(object,classinfo)

如果classinfo是类或类型对象的元组(或递归,其他类似的元组),则如果object是任何类或类型的实例,则返回true。 如果classinfo不是类,类型或类,类型以及此类元组的元组,则会引发TypeError异常。

您可以使用isinstance(object,classinfo)内置函数。

应该做的工作

def isStrOrInt(myVar):
  return isinstance(myVar,int) or isinstance(myVar,str)


print(isStrOrInt(5))   # True
print(isStrOrInt('5')) # True
print(isStrOrInt([]))  # False
print(isStrOrInt('Dinosaurs are Awesome!')) # True
print(isStrOrInt(3.141592653589793238462 )) # False (Because it's a decimal not an int)

这是正在运行的版本: https : //repl.it/Fw63/1


这就是文档所说的:

如果object参数是classinfo参数或其(直接,间接或虚拟)子类的实例,则返回true。 如果object不是给定类型的对象,则该函数始终返回false。 如果classinfo是类型对象的元组(或递归,其他类似的元组),则如果object是任何类型的实例,则返回true。 如果classinfo不是类型或此类的元组,则引发TypeError异常。

基本上, isinstance接受2个参数,第一个是您要检查的变量,第二个是您要检查数据类型的类(如果是intstr )。 本教程对此进行了很好的解释。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM