当前位置: 首页 > web >正文

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.xdnf.cn/news/20220.html

相关文章:

  • go面试题-什么是用户态和内核态
  • 数组本身的深入解析
  • 研发文档撰写质量参差不齐该怎么办
  • 突破大语言模型推理瓶颈:深度解析依赖关系与优化策略
  • YOLOv8主干网络替换为UniConvNet的详细指南
  • Unity中,软遮罩SoftMaskForUGUI的使用
  • 25高教社杯数模国赛【E题保姆级思路+问题分析】
  • 【Day 20】148.排序链表
  • Electron 执行python脚本
  • IPV6、广播地址
  • 单片机实现分页显示环形更新的历史数据
  • 算法随笔(一)
  • S32K328上芯片内部RTC的使用和唤醒配置
  • 深度学习篇---MNIST:手写数字数据集
  • 基础排序--冒泡--选择--插入
  • 【算法--链表】25.K个一组翻转链表--通俗讲解
  • Linux初始化配置——RHEL7.9、9.3环境部署
  • 【C语言】 第三课 函数与栈帧机制详解
  • RTP打包与解包全解析:从RFC规范到跨平台轻量级RTSP服务和低延迟RTSP播放器实现
  • Deeplizard深度学习课程(七)—— 神经网络实验
  • 飞算JavaAI全面解析:重塑Java开发流程的智能引擎
  • 商城源码后端性能优化:JVM 参数调优与内存泄漏排查实战
  • List<?>和List<Object>区别
  • 第二阶段WinForm-12:UI控件库
  • 力扣516 代码随想录Day16 第一题
  • 【涂鸦T5】6. lvgl显示光感数值
  • 鸿蒙:AppStorageV2状态管理和数据共享
  • Gmail 数据泄露安全警报以及启示
  • 【Linux】线程概念与控制
  • 代码随想录刷题Day49