Geo*_*Geo 7 python boolean pass-by-value
我发送了一个bool对象的引用,并在一个方法中对其进行了修改.方法完成后执行,方法外的bool值保持不变.
这让我相信Python的bool是通过值传递的.真的吗?其他Python类型的行为方式是什么?
rco*_*der 12
Python变量不是C++意义上的"引用".相反,它们只是绑定到内存中某个任意位置的对象的本地名称.如果该对象本身是可变的,则对其绑定名称的其他范围内的对其的更改将是可见的.然而,许多原始类型(包括bool,, 和)是不可变的.你不能就地改变它们的价值; 相反,您为本地范围中的同一名称指定一个新值.intstrtuple
事实上,几乎在任何时候*你看到表单的代码foo = X,这意味着在当前的本地命名空间中为名称foo分配了一个新的值(X),而不是名为的内存中的位置foo更新了内部指针以代替到的位置X.
* - Python中唯一的例外是属性的setter方法,它可以允许你编写obj.foo = X并在后台重写它,而不是调用类似的方法obj.setFoo(X).