Python 的 bool 值是按值传递的吗?

2024-03-23

我发送了对 bool 对象的引用,并在方法中修改了它。方法执行完毕后,方法外的bool值没有变化。

这让我相信 Python 的 bool 是按值传递的。真的吗?还有哪些其他 Python 类型有这样的行为?


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

事实上,几乎任何时候*您都会看到以下形式的代码foo = X,这意味着名称foo正在被分配一个新值(X)在当前的本地命名空间中,而不是由以下名称命名的内存中的位置foo正在更新其内部指针以引用X.

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 的 bool 值是按值传递的吗? 的相关文章

随机推荐

  • Tone.PitchShift 和 Howler.js 问题

    我喜欢在我的 Meteor 应用程序中使用 Howler js 然而 播放速率功能导致了我不想要的音调变化 我只想延长时间 并保持音调 因此 我的解决方案是对其进行音调变换以 纠正 音调 看起来很简单 这就是我选择使用的原因https to
  • 在 Qt 中显示 QImage 的灰度并调整其大小

    我已经能够使用如下内容在 Qt 中的标签中显示图像 transformPixels 0 0 1 imheight imwidth 1 sets unsigned char imageData unsigned char fullCharAr
  • 与Netty相比,vert.x如何实现卓越的性能?

    最近的TechEmpower 性能基准 http www techempower com benchmarks 一直在 Netty 之上展示 vert x 有时数量很大 根据其网站 vert x 使用 Netty 来实现 大部分网络 IO
  • jquery:无法获取div的“value”属性

    这是我的 chrome javascript 控制台的屏幕截图 展示了我的困境 我真的无法理解为什么我无法获取 值 属性 class 属性工作得很好 所以我认为同样应该适用于 value 我在我的应用程序中测试的代码 coffeescrip
  • 没有WebRTC的nodeJS中的简单SIP电话

    您好 我需要实现类似 SIP 电话的功能 但使用不带 WebRTC 的 经典 SIP 大多数 JS 库都专注于基于 websockets 和 WebRTC 的 SIP 但在我的基础设施中 我没有 WebSocket 有像 JsSIP 这样的
  • PHP preg_match_all:提取逗号分隔列表

    例如 我有以下字符串 WIDGET TEST abc 456 我希望能够使用 preg match all 返回逗号分隔参数的数组 有人可以帮我解决我需要的正则表达式吗 我已经尝试过 并且返回以下查询 a b preg match all
  • 方案中的延续传递风格?

    我遇到了这段代码在维基百科上 http en wikipedia org wiki Continuation passing style define pyth x y k x x lambda x2 y y lambda y2 x2 y2
  • 图像 PropertyItems 和已处置的 MemoryStream

    我正在加载一个Image from a byte using MemoryStream并通过检查图像来获取有关图像的信息ProperyItems 但在这样做的过程中 我注意到一些奇怪的行为 其中一些图像的PropertyItems正在消失
  • sqlite:如何获取组计数

    我在网站上有一个用户操作的 SQLite 表 每一行都是网站上的相同操作 只是时间 日期不同 并用用户 ID 标记 该表有超过 2000 万条条目 我了解如何使用按用户 ID 进行分组的功能来获取用户计数 即 A 执行了 3 次操作 B 4
  • 键入字符时搜索字符串

    我的手机中存储了联系人 假设我的联系人是 Ram Hello Hi Feat Eat At 当我打字时 A 我应该得到所有匹配的联系人说 Ram Feat Eat At 现在我再输入一个字母T 现在我的总字符串是 AT 现在我的程序应该重用
  • 序列不包含匹配元素 - 使用 LINQ 返回与自定义属性匹配的 SiteMapNode

    我有一个 Web sitemap 文件 使用siteMapNodeXML 中的元素 我已为每个标签添加了自定义属性 我正在尝试提取自定义属性的值id 我想找一个单身siteMapNode in the SiteMapNodeCollecti
  • 使用 PHP 和 MySQL 创建多维数组

    我是 PHP 新手 正在寻找从数据库返回数据的有效方法 假设我有一个 UserProfile 表 它与 UserInterest 和 UserContact 具有一对多关系 Select p Id p FirstName p LastNam
  • ItemsControl 和 Canvas 中的多个数据模板

    我试图在画布上显示一些框 我自己的 userControl 在其自己的名为 singleNodeControl 的 xaml 文件中定义 并用线连接它们 普通 xaml Line 元素绑定到 LineToParent 类 这两项都存储在 v
  • 使用 PHPExcel 读取电子表格

    我正在尝试上传电子表格并使用 PHPExcel 将其读入 MySQL 数据库 对于 xlsx 文件 它工作正常 但每当我尝试上传 ods 文件时 它都会抛出错误 PHP Fatal error Call to a member functi
  • 如何使用 C# 更新数据透视表数据源?

    我想知道如何更新现有的数据透视表数据源 我在用Microsoft Office Interop Excel并针对使用 Excel 2010 的用户 我目前能够刷新工作正常的数据透视表 但是当添加更多行时 我希望将这些行包含在数据透视表数据源
  • WPF:我可以强制窗口重新评估其所有绑定和验证吗?

    我可以强制窗口重新评估其所有绑定和验证吗 由于某种原因 它似乎在一种奇怪的情况下忽略了 INotifyPropertyChanged PropertyChanged 我正在寻找一种解决方法 直到找到真正的原因 不幸的是 我知道没有办法强制窗
  • 如何在Linux中安装chrome(无头)

    我有一个运行 linux redhad 的 AWS EC2 有没有办法在上面安装最新的 Chrome v59 以便我可以像 PhantomJS 一样以无头模式运行它 我在 google 上能找到的所有资源都是关于如何在有 UI 的 ubun
  • 无法转换“UICollectionViewCell”类型的值

    我在 Storyboard 中使用自定义 CollectionViewCell 当我启动应用程序时 我收到以下消息 无法将 UICollectionViewCell 类型的值转换为 TestProject CollectionViewCel
  • 框架在不同时间绘画? [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我的游戏中有一个非常烦人的错误 帧的底部似乎比帧的顶部渲染得更早 我不确定为什么会发生这种情况 我正在使用 JPanel
  • Python 的 bool 值是按值传递的吗?

    我发送了对 bool 对象的引用 并在方法中修改了它 方法执行完毕后 方法外的bool值没有变化 这让我相信 Python 的 bool 是按值传递的 真的吗 还有哪些其他 Python 类型有这样的行为 Python 变量不是 C 意义上