Python 类型判断 变量存在判断 None与空字符串 is和==区别 nan inf判断

    xiaoxiao2021-03-25  52

    一、类型变量

    type

    #判断是否为整数 type(varObj) is types.IntType StringType FloatType DictType TupleType ListType BooleanType

    isinstance

    isinstance(aaa,str)

    type与isinstance区别

    class A: pass class B(A): pass isinstance(A(), A) # returns True type(A()) == A # returns True isinstance(B(), A) # returns True type(B()) == A # returns False

    二、变量存在

    异常捕获

    try: print self.fileReadOpen except Exception: pass else: del self.fileReadOpen def isset(v): try : type (eval(v)) except : return 0 else : return 1 isset('varname') //变量只能在try里调用才会捕获异常,所以采用字符串参数。

    命名空间

    'varname' in locals().keys() 'varname' in dir()

    dir()不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表。如果参数包含方法dir(),该方法将被调用。如果参数不包含dir(),该方法将最大限度地收集参数信息。

    三、None与空字符串

    有句话说的Python中万物皆为对象。None也是对象。这就好理解None与空字符串NULL区别:

    type(None) <class 'NoneType'> type('') <class ''str'> >>> None == 0 //(int) False >>> None == ' ' //(str) False >>> None == False //(boolean) False

    四、is和==区别

    is判断的是a对象是否就是b对象,是通过id来判断的。 ==判断的是a对象的值是否和b对象的值相等,是通过value来判断的。

    >>> d = {"a":1} >>> dd = d.copy() >>> d is dd False >>> d == dd True

    五、nan inf

    记忆:对于is判断,符合is的对象比较定义:对象is对象本身,对象不is新建对象。对于==判断,除了nan,符合==的值比较的定义。对于nan在用==值比较时,可以认为,nan对象的值不==该nan对象的值,nan对象的值不==新建nan对象的值。

    >>> inf = float("inf") >>> ninf = float("-inf") >>> nan = float("nan") >>> inf is inf True >>> ninf is ninf True >>> nan is nan True >>> inf == inf True >>> ninf == ninf True >>> nan == nan // nan对象时本身对象nan False >>> inf is float("inf") False >>> ninf is float("-inf") False >>> nan is float("nan") False >>> inf == float("inf") True >>> ninf == float("-inf") True >>> nan == float("nan") //前一个nan值不等于新建对象float("nan")的值 False

    判断nan方法:

    使用math模块: >>> import math >>> math.isinf(inf) True >>> math.isinf(ninf) True >>> math.isnan(nan) True >>> math.isinf(float("inf")) True >>> math.isinf(float("-inf")) True >>> math.isnan(float("nan")) True 利用自身判断: >>> def isnan(num): return num != num >>> isnan(float("nan")) True 使用numpy: >>> import numpy as np >>> >>> np.isnan(np.nan) True >>> np.isnan(float("nan")) True >>> np.isnan(float("inf")) False
    转载请注明原文地址: https://ju.6miu.com/read-36925.html

    最新回复(0)