代码之家  ›  专栏  ›  技术社区  ›  Geo

Python的布尔值是按值传递的吗?

  •  6
  • Geo  · 技术社区  · 16 年前

    这让我相信Python的布尔值是通过值传递的。这是真的吗?还有哪些Python类型是这样的?

    4 回复  |  直到 16 年前
        1
  •  13
  •   rcoder    16 年前

    Python变量不是C++意义上的“引用”。相反,它们只是绑定到内存中某个任意位置的对象的本地名称。如果该对象本身是可变的,那么对它的更改将在将名称绑定到该对象的其他作用域中可见。许多基本类型(包括 bool , int , str tuple )是 不变的 然而您不能就地更改它们的值;而是为本地范围中的相同名称指定一个新值。

    事实上,几乎任何时候,你们都会看到表单的代码 foo = X ,它的意思是 foo 正在分配一个新值( X )在当前本地名称空间中,而不是内存中名为 正在更新其内部指针以引用的位置 X .

    *-Python中唯一的例外是属性的setter方法,它可能允许您编写 obj.foo = X 并在后台重写它,以调用类似 obj.setFoo(X)

        2
  •  1
  •   Community CDub    5 年前

    这取决于对象是可变的还是不可变的。不可变对象的行为就像您在bool中看到的一样,而可变对象将发生变化。

    供参考: http://www.testingreflections.com/node/view/5126

    Python通过值传递对对象的引用(如Java),Python中的所有内容都是对象。这听起来很简单,但您会注意到,某些数据类型似乎表现出按值传递的特性,而其他数据类型的行为似乎类似于按引用传递。。。怎么回事?

        3
  •  1
  •   holdenweb    16 年前

    要记住的是

        4
  •  0
  •   u0b34a0f6ae    16 年前

    Python中没有变量

    推荐文章