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

一、类型变量

type

  1. #判断是否为整数
  2. type(varObj) is types.IntType
  3. StringType
  4. FloatType
  5. DictType
  6. TupleType
  7. ListType
  8. BooleanType

isinstance

  1. isinstance(aaa,str)

type与isinstance区别

  1. 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

二、变量存在

异常捕获

  1. try:
  2. print self.fileReadOpen
  3. except Exception:
  4. pass
  5. else:
  6. del self.fileReadOpen
  7. def isset(v):
  8. try :
  9. type (eval(v))
  10. except :
  11. return 0
  12. else :
  13. return 1
  14. isset('varname') //变量只能在try里调用才会捕获异常,所以采用字符串参数。

命名空间

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

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

三、None与空字符串

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

  1. type(None)
  2. <class 'NoneType'>
  3. type('')
  4. <class ''str'>
  5. >>> None == 0 //(int)
  6. False
  7. >>> None == ' ' //(str)
  8. False
  9. >>> None == False //(boolean)
  10. False

四、is和==区别

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

  1. >>> d = {
  2. "a":1}
  3. >>> dd = d.copy()
  4. >>> d is dd
  5. False
  6. >>> d == dd
  7. True

五、nan inf

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

  1. >>> inf = float("inf")
  2. >>> ninf = float("-inf")
  3. >>> nan = float("nan")
  4. >>> inf is inf
  5. True
  6. >>> ninf is ninf
  7. True
  8. >>> nan is nan
  9. True
  10. >>> inf == inf
  11. True
  12. >>> ninf == ninf
  13. True
  14. >>> nan == nan // nan对象时本身对象nan
  15. False
  16. >>> inf is float("inf")
  17. False
  18. >>> ninf is float("-inf")
  19. False
  20. >>> nan is float("nan")
  21. False
  22. >>> inf == float("inf")
  23. True
  24. >>> ninf == float("-inf")
  25. True
  26. >>> nan == float("nan") //前一个nan值不等于新建对象float("nan")的值
  27. False

判断nan方法:

  1. 使用math模块:
  2. >>> import math
  3. >>> math.isinf(inf)
  4. True
  5. >>> math.isinf(ninf)
  6. True
  7. >>> math.isnan(nan)
  8. True
  9. >>> math.isinf(float("inf"))
  10. True
  11. >>> math.isinf(float("-inf"))
  12. True
  13. >>> math.isnan(float("nan"))
  14. True
  15. 利用自身判断:
  16. >>> def isnan(num):
  17. return num != num
  18. >>> isnan(float("nan"))
  19. True
  20. 使用numpy:
  21. >>> import numpy as np
  22. >>>
  23. >>> np.isnan(np.nan)
  24. True
  25. >>> np.isnan(float("nan"))
  26. True
  27. >>> np.isnan(float("inf"))
  28. False
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智慧浩海

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值