• <i id='0qMqf'><tr id='0qMqf'><dt id='0qMqf'><q id='0qMqf'><span id='0qMqf'><b id='0qMqf'><form id='0qMqf'><ins id='0qMqf'></ins><ul id='0qMqf'></ul><sub id='0qMqf'></sub></form><legend id='0qMqf'></legend><bdo id='0qMqf'><pre id='0qMqf'><center id='0qMqf'></center></pre></bdo></b><th id='0qMqf'></th></span></q></dt></tr></i><div id='0qMqf'><tfoot id='0qMqf'></tfoot><dl id='0qMqf'><fieldset id='0qMqf'></fieldset></dl></div>
    <legend id='0qMqf'><style id='0qMqf'><dir id='0qMqf'><q id='0qMqf'></q></dir></style></legend>
  • <tfoot id='0qMqf'></tfoot>

    1. <small id='0qMqf'></small><noframes id='0qMqf'>

        • <bdo id='0qMqf'></bdo><ul id='0qMqf'></ul>

        为什么 bool 是 int 的子类?

        Why is bool a subclass of int?(为什么 bool 是 int 的子类?)
        <tfoot id='mJwxd'></tfoot>
        <i id='mJwxd'><tr id='mJwxd'><dt id='mJwxd'><q id='mJwxd'><span id='mJwxd'><b id='mJwxd'><form id='mJwxd'><ins id='mJwxd'></ins><ul id='mJwxd'></ul><sub id='mJwxd'></sub></form><legend id='mJwxd'></legend><bdo id='mJwxd'><pre id='mJwxd'><center id='mJwxd'></center></pre></bdo></b><th id='mJwxd'></th></span></q></dt></tr></i><div id='mJwxd'><tfoot id='mJwxd'></tfoot><dl id='mJwxd'><fieldset id='mJwxd'></fieldset></dl></div>
          • <legend id='mJwxd'><style id='mJwxd'><dir id='mJwxd'><q id='mJwxd'></q></dir></style></legend>

                <tbody id='mJwxd'></tbody>
                <bdo id='mJwxd'></bdo><ul id='mJwxd'></ul>

                <small id='mJwxd'></small><noframes id='mJwxd'>

                1. 本文介绍了为什么 bool 是 int 的子类?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  当通过 python-memcached 将 bool 存储在 memcached 中时,我注意到它以整数形式返回.检查库的代码告诉我有一个地方检查 isinstance(val, int) 以将值标记为整数.

                  When storing a bool in memcached through python-memcached I noticed that it's returned as an integer. Checking the code of the library showed me that there is a place where isinstance(val, int) is checked to flag the value as an integer.

                  所以我在 python shell 中对其进行了测试,并注意到以下内容:

                  So I tested it in the python shell and noticed the following:

                  >>> isinstance(True, int)
                  True
                  >>> issubclass(bool, int)
                  True
                  

                  但是为什么 boolint 的子类呢?

                  But why exactly is bool a subclass of int?

                  这是有道理的,因为布尔值基本上是一个 int,它可以只取两个值,但它需要的操作/空间比实际整数少得多(没有算术,只有一位存储空间)....

                  It kind of makes sense because a boolean basically is an int which can just take two values but it needs much less operations/space than an actual integer (no arithmetics, only a single bit of storage space)....

                  推荐答案

                  来自对 http://www 的评论.peterbe.com/plog/bool-is-int

                  这是完全合乎逻辑的,如果你在 bool 类型出现的时候就在附近添加到 python(有时在 2.2 或 2.3 左右).

                  It is perfectly logical, if you were around when the bool type was added to python (sometime around 2.2 or 2.3).

                  在引入实际的布尔类型之前,0 和 1 是真值的官方表示,类似于 C89.避免不必要地破坏非理想但有效的代码,新的 bool 类型需要像 0 和 1 一样工作.这不仅仅是真值,但所有积分运算.没有人会推荐使用布尔值导致数字上下文,大多数人也不建议测试平等决定真值,没有人想找出困难有多少现有的代码就是这样的.因此做出的决定True 和 False 分别伪装成 1 和 0.这仅仅是一个语言演变的历史产物.

                  Prior to introduction of an actual bool type, 0 and 1 were the official representation for truth value, similar to C89. To avoid unnecessarily breaking non-ideal but working code, the new bool type needed to work just like 0 and 1. This goes beyond merely truth value, but all integral operations. No one would recommend using a boolean result in a numeric context, nor would most people recommend testing equality to determine truth value, no one wanted to find out the hard way just how much existing code is that way. Thus the decision to make True and False masquerade as 1 and 0, respectively. This is merely a historical artifact of the linguistic evolution.

                  感谢 dman13 的精彩解释.

                  Credit goes to dman13 for this nice explanation.

                  这篇关于为什么 bool 是 int 的子类?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  Initialize Multiple Numpy Arrays (Multiple Assignment) - Like MATLAB deal()(初始化多个 Numpy 数组(多重赋值) - 像 MATLAB deal())
                  How to extend Python class init(如何扩展 Python 类初始化)
                  What#39;s the difference between dict() and {}?(dict() 和 {} 有什么区别?)
                  What is a wrapper_descriptor, and why is Foo.__init__() one in this case?(什么是 wrapper_descriptor,为什么 Foo.__init__() 在这种情况下是其中之一?)
                  Initialize list with same bool value(使用相同的布尔值初始化列表)
                  setattr with kwargs, pythonic or not?(setattr 与 kwargs,pythonic 与否?)

                    <small id='vXUzY'></small><noframes id='vXUzY'>

                    <legend id='vXUzY'><style id='vXUzY'><dir id='vXUzY'><q id='vXUzY'></q></dir></style></legend>
                    <i id='vXUzY'><tr id='vXUzY'><dt id='vXUzY'><q id='vXUzY'><span id='vXUzY'><b id='vXUzY'><form id='vXUzY'><ins id='vXUzY'></ins><ul id='vXUzY'></ul><sub id='vXUzY'></sub></form><legend id='vXUzY'></legend><bdo id='vXUzY'><pre id='vXUzY'><center id='vXUzY'></center></pre></bdo></b><th id='vXUzY'></th></span></q></dt></tr></i><div id='vXUzY'><tfoot id='vXUzY'></tfoot><dl id='vXUzY'><fieldset id='vXUzY'></fieldset></dl></div>

                          <tbody id='vXUzY'></tbody>
                      1. <tfoot id='vXUzY'></tfoot>

                        • <bdo id='vXUzY'></bdo><ul id='vXUzY'></ul>