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(),该方法将最大限度地收集参数信息。
有句话说的Python中万物皆为对象。None也是对象。这就好理解None与空字符串NULL区别:
type(None)
type('')
>>> None == 0 //(int)
False
>>> None == ' ' //(str)
False
>>> None == False //(boolean)
False
is判断的是a对象是否就是b对象,是通过id来判断的。
==判断的是a对象的值是否和b对象的值相等,是通过value来判断的。
>>> d = {
"a":1}
>>> dd = d.copy()
>>> d is dd
False
>>> d == dd
True
记忆:对于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