我是
靠谱客的博主
俊秀小天鹅,最近开发中收集的这篇文章主要介绍
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。
- int
- PyObject_IsTrue(PyObject *v)
- {
- Py_ssize_t res;
- if (v == Py_True)
- return 1;
- if (v == Py_False)
- return 0;
- if (v == Py_None)
- return 0;
- else if (v->ob_type->tp_as_number != NULL &&
- v->ob_type->tp_as_number->nb_nonzero != NULL)
- res = (*v->ob_type->tp_as_number->nb_nonzero)(v);
- else if (v->ob_type->tp_as_mapping != NULL &&
- v->ob_type->tp_as_mapping->mp_length != NULL)
- res = (*v->ob_type->tp_as_mapping->mp_length)(v);
- else if (v->ob_type->tp_as_sequence != NULL &&
- v->ob_type->tp_as_sequence->sq_length != NULL)
- res = (*v->ob_type->tp_as_sequence->sq_length)(v);
- else
- return 1;
- /* if it is negative, it should be either -1 or -2 */
- return (res > 0) ? 1 : Py_SAFE_DOWNCAST(res, Py_ssize_t, int);
- }
最后
以上就是俊秀小天鹅为你收集整理的Python中如何判断一个对象的布尔值的全部内容,希望文章能够帮你解决Python中如何判断一个对象的布尔值所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复