您的位置:首页 > 编程语言 > Python开发

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

2017-03-12 21:06 786 查看

一、类型变量

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: