Python 值传递 (Pass by Value) 和引用传递 (Pass by Reference)

Python 值传递 {Pass by Value} 和引用传递 {Pass by Reference}

  • 1. Mutable Objects and Immutable Objects in Python (Python 可变对象和不可变对象)
  • 2. Pass by Value and Pass by Reference
    • 2.1. What is Pass by Value in Python?
    • 2.2. What is Pass by Reference in Python?
  • References

Data model
https://docs.python.org/3/reference/datamodel.html

1. Mutable Objects and Immutable Objects in Python (Python 可变对象和不可变对象)

The value of some objects can change. Objects whose value can change are said to be mutable; objects whose value is unchangeable once they are created are called immutable. (The value of an immutable container object that contains a reference to a mutable object can change when the latter’s value is changed; however the container is still considered immutable, because the collection of objects it contains cannot be changed. So, immutability is not strictly the same as having an unchangeable value, it is more subtle.) An object’s mutability is determined by its type; for instance, numbers, strings and tuples are immutable, while dictionaries and lists are mutable.
值可以改变的对象被称为可变对象;值不可以改变的对象就被称为不可变对象。(一个不可变容器对象如果包含对可变对象的引用,当后者的值改变时,前者的值也会改变;但是该容器仍属于不可变对象,因为它所包含的对象集是不会改变的。因此,不可变并不严格等同于值不能改变,实际含义要更微妙。) 一个对象的可变性是由其类型决定的;例如,数字、字符串和元组是不可变的,而字典和列表是可变的。

Python 中有两种类型的对象:可变对象 (mutable objects) 和不可变对象 (immutable objects)。

  • 可变对象在创建后可以被修改。列表 (list)、字典 (dictionary)、集合 (set) 等是可变对象。

  • 不可变对象在创建后不能被修改。整数 (integer)、浮点数 (float)、字符串 (string)、元组 (tuple) 等是不可变对象。

在 Python 中,变量是对对象的引用。当你将一个值赋值给变量时,实际上是在创建一个指向表示该值的对象的引用。

2. Pass by Value and Pass by Reference

Pass by ReferencePass by Value
Object TypeMutable (list, dict, etc.)Immutable (int, str, etc.)
PassedReference to objectReference to object
Modify in function?Yes (affects original)No (new object created)
BehaviorLike aliasingLike copying

2.1. What is Pass by Value in Python?

2.2. What is Pass by Reference in Python?

References

[1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/
[2] Pass by reference vs value in Python, https://www.geeksforgeeks.org/python/pass-by-reference-vs-value-in-python/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/97925.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/97925.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

aippt自动生成工具有哪些?一文看懂,总有一款适合你!

在当今快节奏的工作与学习环境中,传统耗时的PPT制作方式已难以满足高效表达的需求。随着人工智能技术的发展,AI自动生成PPT工具应运而生,成为提升演示文稿制作效率的利器。这类工具通过自然语言处理和深度学习技术,能够根据用户输…

Langflow 框架中 Prompt 技术底层实现分析

Langflow 框架中 Prompt 技术底层实现分析 1. Prompt 技术概述 Langflow 是一个基于 LangChain 的可视化 AI 工作流构建框架,其 Prompt 技术是整个系统的核心组件之一。Prompt 技术主要负责: 模板化处理:支持动态变量替换的提示词模板变量验证…

前端、node跨域问题

前端页面访问node后端接口跨域报错 Access to XMLHttpRequest at http://192.18.31.75/api/get?namess&age19 from origin http://127.0.0.1:5500 has been blocked by CORS policy: No Access-Control-Allow-Origin header is present on the requested resource. 这个报…

超越马力欧:如何为经典2D平台游戏注入全新灵魂

在游戏开发的世界里,2D平台游戏仿佛是一位熟悉的老朋友。从《超级马力欧兄弟》开启的黄金时代到现在,这个类型已经经历了数十年的演变与打磨。当每个基础设计似乎都已被探索殆尽时,我们如何才能打造出一款令人耳目一新的平台游戏?…

基于Springboot + vue3实现的时尚美妆电商网站

项目描述本系统包含管理员和用户两个角色。管理员角色:商品分类管理:新增、查看、修改、删除商品分类。商品信息管理:新增、查看、修改、删除、查看评论商品信息。用户管理:新增、查看、修改、删除用户。管理员管理:查…

网络协议之https?

写在前面 https协议还是挺复杂的,本人也是经过了很多次的学习,依然感觉一知半解,无法将所有的知识点串起来,本次学习呢,也是有很多的疑惑点,但是还是尽量的输出内容,来帮助自己和在看文章的你来…

word运行时错误‘53’,文件未找到:MathPage.WLL,更改加载项路径完美解决

最简单的方法解决!!!安装Mathtype之后粘贴显示:运行时错误‘53’,文件未找到:MathPage.WLLwin11安装mathtype后会有这个错误,这是由于word中加载项加载mathtype路径出错导致的,这时候…

React实现列表拖拽排序

本文主要介绍一下React实现列表拖拽排序方法,具体样式如下图首先,简单展示一下组件的数据结构 const CodeSetting props > {const {$t, // 国际化翻译函数vm, // 视图模型数据vm: {CodeSet: { Enable [], …

将 MySQL 表数据导出为 CSV 文件

目录 一、实现思路 二、核心代码 1. 数据库连接部分 2. 数据导出核心逻辑 3. CSV文件写入 三、完整代码实现 五、输出结果 一、实现思路 建立数据库连接 查询目标表的数据总量和具体数据 获取表的列名作为CSV文件的表头 将查询结果转换为二维数组格式 使用Hutool工具…

一文读懂RAG:从生活场景到核心逻辑,AI“查资料答题”原来这么简单

一文读懂RAG:从生活场景到核心逻辑,AI“查资料答题”原来这么简单 要理解 RAG(Retrieval-Augmented Generation,检索增强生成),不需要先背复杂公式,我们可以从一个生活场景切入——它本质是让AI…

git将当前分支推送到远端指定分支

在 Git 中&#xff0c;将当前本地分支推送到远程仓库的指定分支&#xff0c;可以使用 git push 命令&#xff0c;并指定本地分支和远程分支的映射关系。 基本语法 git push <远程名称> <本地分支名>:<远程分支名><远程名称>&#xff1a;通常是 origin&…

【Linux】线程封装

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、为什么需要封装线程库&#xff1f; pthread的痛点&#xff1a; 封装带来的好处&#xff1a; 二、线程封装核心代码解析 1. 头文件定义&#xff08;Thread.hpp&a…

智慧交通管理信号灯通信4G工业路由器应用

在交通信号灯管理中传统的有线通讯&#xff08;光纤、网线&#xff09;存在部署成本高、偏远区域覆盖难、故障维修慢等问题&#xff0c;而4G工业路由器凭借无线化、高稳定、强适配的特性&#xff0c;成为信号灯与管控平台间的数据传输核心&#xff0c;适配多场景需求。智慧交通…

《Python Flask 实战:构建一个可交互的 Web 应用,从用户输入到智能响应》

《Python Flask 实战:构建一个可交互的 Web 应用,从用户输入到智能响应》 一、引言:从“Hello, World!”到“你好,用户” 在 Web 应用的世界里,最打动人心的功能往往不是炫酷的界面,而是人与系统之间的真实互动。一个简单的输入框,一句个性化的回应,往往能让用户感受…

开发效率翻倍:资深DBA都在用的MySQL客户端利器

MySQL 连接工具&#xff08;也称为客户端或图形化界面工具&#xff0c;GUI Tools&#xff09;是数据库开发、管理和运维中不可或缺的利器。它们比命令行更直观&#xff0c;能极大提高工作效率。以下是一份主流的 MySQL 连接工具清单&#xff0c;并附上了它们的优缺点和适用场景…

基于Docker和Kubernetes的CI/CD流水线架构设计与优化实践

基于Docker和Kubernetes的CI/CD流水线架构设计与优化实践 本文分享了在生产环境中基于Docker和Kubernetes构建高效可靠的CI/CD流水线的实战经验&#xff0c;包括业务场景、技术选型、详细方案、踩坑与解决方案&#xff0c;以及最终的总结与最佳实践&#xff0c;帮助后端开发者快…

Trae x 图片素描MCP一键将普通图片转换为多风格素描效果

目录前言一、核心工具与优势解析二、操作步骤&#xff1a;从安装到生成素描效果第一步&#xff1a;获取MCP配置代码第二步&#xff1a;下载第三步&#xff1a;在 Trae 中导入 MCP 配置并建立连接第四步&#xff1a;核心功能调用三、三大素描风格差异化应用四.总结前言 在设计创…

2 XSS

XSS的原理 XSS&#xff08;跨站脚本攻击&#xff09;原理 1. 核心机制 XSS攻击的本质是恶意脚本在用户浏览器中执行。攻击者通过向网页注入恶意代码&#xff0c;当其他用户访问该页面时&#xff0c;浏览器会执行这些代码&#xff08;没有对用户的输入进行过滤导致用户输入的…

GitHub每日最火火火项目(9.3)

1. pedroslopez / whatsapp-web.js 项目名称&#xff1a;whatsapp-web.js项目介绍&#xff1a;基于 JavaScript 开发&#xff0c;是一个用于 Node.js 的 WhatsApp 客户端库&#xff0c;通过 WhatsApp Web 浏览器应用进行连接&#xff08;A WhatsApp client library for NodeJS …

Ansible变量

Ansible变量定义变量规则&#xff1a;由字母/数字/下划线组成&#xff0c;变量需要以字母开头&#xff0c;ansible内置的关键字不能作为变量。ansible中&#xff0c;可以将变量简化为三个范围&#xff1a;Global范围&#xff08;高&#xff09;&#xff1a;从命令行和ansible配…