zoukankan      html  css  js  c++  java
  • Python 判断变量的类型

    这里有两种方法。type 和isinstance 

    import types
    
    aaa = 0
    print type(aaa)
    if type(aaa) is types.IntType:
        print "the type of aaa is int"
    if isinstance(aaa,int):
        print "the type of aaa is int"
    
    bbb = 'hello'
    print type(bbb)
    if type(bbb) is types.StringType:
        print "the type of bbb is string"
    if isinstance(bbb,str):
        print "the type of bbb is string"
    
    #if the type is NoneType,the isinstance does not work
    #we should judge the NoneType like below
    #if row is None
    #if type(row) is types.NoneType
    
    #In my opinion,use the types to judge the type of a param is convinient<span style="font-family:Arial;background-color: rgb(255, 255, 255);">, use the isinstance to judge whether a instance is a type of a class or not</span>

    一、isinstance()

    在Python中可以使用type()与isinstance()这两个函数判断对象类型,而isinstance()函数的使用上比type更加方便。

    复制代码代码如下:

     1 # coding=utf-8
     2  
     3 a = 10
     4  
     5 def b():
     6     pass
     7  
     8 print isinstance(a,(int,str))
     9 print isinstance(a,(float,str))
    10 print isinstance(b,(str,int))
    11  
    12 class c:
    13     pass
    14  
    15 obj = c()
    16  
    17 print isinstance(obj,(c,int))

    执行结果:

    复制代码代码如下:

    1 True
    2 False
    3 False
    4 True

    二、isinstance 和 type的区别

    isinstance 和 type的区别在于:

    复制代码代码如下:
     1 class A:
     2     pass
     3  
     4 
     5 class B(A):
     6     pass
     7 
     8 isinstance(A(), A)  # returns True
     9 type(A()) == A      # returns True
    10 isinstance(B(), A)    # returns True
    11 type(B()) == A        # returns False

    区别就是 对于subclass之类的 type就不行了,所以,强烈建议不要使用type判断对象类型。

  • 相关阅读:
    电赛小结
    markdown小结
    一元运算符重载
    二维数组作为函数参数传递剖析(转载)
    C语言内存(转载)
    Effective C++ chapter1:Accustiming Yourself to C++
    C++ 模板
    const
    命令行参数
    AStar算法
  • 原文地址:https://www.cnblogs.com/cofludy/p/6000930.html
Copyright © 2011-2022 走看看