我是靠谱客的博主 俊秀小天鹅,最近开发中收集的这篇文章主要介绍Python中如何判断一个对象的布尔值,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Python是一个弱类型的脚本语言。这就意味着如果在if语句的判断条件中含有变量或者对象,只有在运行期,Python的解释器才会知道判断条件的值是什么类型。很多脚本语言(Python,Ruby,JavaScript,等等)为了让开发更高效,并且更符合编程和使用习惯,都为对象提供了默认的转换规则。在Python的规则中:
  • None为False
  • 数字类型(整形,浮点。。。),0为False,其他为True
  • 列表类型(list,tuple,。。。),长度为0的为False,其他为True
  • Map类型(字典),条目个数为0的为False,其他为True
  • 任何其他类型的对象均为True
这个规则是定义在解释器内部的,所以是不可改变的。在Python源代码中的object.c中可以找到该规则的代码。是作为一个函数实现的。名字为PyObject_IsTrue。
  1. int
  2. PyObject_IsTrue(PyObject *v)
  3. {
  4.     Py_ssize_t res;
  5.     if (v == Py_True)
  6.         return 1;
  7.     if (v == Py_False)
  8.         return 0;
  9.     if (v == Py_None)
  10.         return 0;
  11.     else if (v->ob_type->tp_as_number != NULL &&
  12.          v->ob_type->tp_as_number->nb_nonzero != NULL)
  13.         res = (*v->ob_type->tp_as_number->nb_nonzero)(v);
  14.     else if (v->ob_type->tp_as_mapping != NULL &&
  15.          v->ob_type->tp_as_mapping->mp_length != NULL)
  16.         res = (*v->ob_type->tp_as_mapping->mp_length)(v);
  17.     else if (v->ob_type->tp_as_sequence != NULL &&
  18.          v->ob_type->tp_as_sequence->sq_length != NULL)
  19.         res = (*v->ob_type->tp_as_sequence->sq_length)(v);
  20.     else
  21.         return 1;
  22.     /* if it is negative, it should be either -1 or -2 */
  23.     return (res > 0) ? 1 : Py_SAFE_DOWNCAST(res, Py_ssize_t, int);
  24. }

最后

以上就是俊秀小天鹅为你收集整理的Python中如何判断一个对象的布尔值的全部内容,希望文章能够帮你解决Python中如何判断一个对象的布尔值所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(31)

评论列表共有 0 条评论

立即
投稿
返回
顶部