Python中 传递值 和 传递引用 的区别解析
作者:木子昭 发布时间:2023-12-26 07:05:22
标签:python,传递值,传递引用
对于不可变类型传递值(不会影响原数据)
不可变类型
对于可变类型传递引用(会影响原数据)
不可变类型传递引用
python3不可变类型
Number(数字)
String(字符串)
Tuple (元组)
python3可变类型
List(列表)
Dictionary (字典)
Sets(集合)
参数传递的思考
我们声明的变量名可以看做便签
为变量名赋值的操作可以看做将标签贴到"值"的表面(值可以是可变类型,和不可变类型)
以链表中的节点对象为例(实例化的节点对象为不可变类型, 但对象中的属性是可变的)
链表对象
class NodeList(object):
def __init__(self, val):
self.val = val
self.next = None
# 遍历链表
def traverse_nodes(head):
tmp = head
while tmp:
print("节点id为:", id(tmp), "节点的值为:", tmp.val, )
tmp = tmp.next
# 创建链表
def create_node_list():
head = NodeList(0);
left_p = head
print("头节点id:",id(head), "当前节点id:",id(left_p), "当前节点值:", left_p.val)
left_p.next = NodeList(1);
left_p = left_p.next
print("头节点id:",id(head), "当前节点id:",id(left_p), "当前节点值:", left_p.val)
left_p.next = NodeList(2);
left_p = left_p.next
print("头节点id:",id(head), "当前节点id:",id(left_p), "当前节点值:", left_p.val)
left_p.next = NodeList(3);
left_p = left_p.next
print("头节点id:",id(head), "当前节点id:",id(left_p), "当前节点值:", left_p.val)
return head
def main():
# 创建链表
print("==>创建链表函数中:")
head = create_node_list()
print("==>在遍历函数中:")
traverse_nodes(head)
if __name__ == '__main__':
main()
总结
以上所述是小编给大家介绍的Python中 传递值 与 传递引用 的区别解析网站的支持!
来源:https://www.jianshu.com/p/f03280bce377


猜你喜欢
- 如何完美的卸载掉Mysql?按以下几个步骤去执行。步骤一确认你的mysql服务是关闭的状态,不然卸载不干净。在我的电脑(计算机)-- 管理
- 本文实例讲述了Python实现字符串格式化输出的方法。分享给大家供大家参考,具体如下:python属于强类型的语言,如果像java一样操作字
- 本文实例讲述了JS表单验证插件之数据与逻辑分离操作。分享给大家供大家参考,具体如下:之前已经写过一个表单验证插件了,为什么还会重复造轮子呢?
- 前两天我在工作中遇到这样一个问题,我们有一个程序是用来增量抽取EBS 中的表数据的,有的是全量抽取,即先删除原表中的数据,然后重新抽取数据,
- 粘包问题TCP协议在传输过程中会出现数据粘包问题讲一下TCP和UDP的区别,都是传数据的协议,没有好坏之说,只是不同的应用需求可能会更好选择
- 这10个asp处理网页编码转换的函数,不知何时收藏在我的电脑中,今天刚好看到了,拿出来与大家分享,这里各种常见的网页编码问题已经
- 本文中,我将尝试展示用Docker开发python应用(主要是Web应用)的可行方法。虽然我本人专注于Python的Flask微框架,但本文
- 前言做数据分析的时候通常我们并不是对真个excel文件进行操作,换言之,每一列都是一个特征,我们需要针对分析。遇到这类问题的时候,我们通常想
- 有两张表a表id val 1 a 2 b 3 c 4 d 5 e b表 a_id val 1 null 2 null 3 null 4 nu
- 偶尔写写Perl脚本,用Eclipse打开太慢,NotePad吧,色彩又太单调了,NotePad++无疑是不一个不错的选择,但当要输入中文注
- 1、存储过程基本语法: create procedure sp_name() begin ...... end; 2、如何调用: call
- 1,在Python中将integer数转化为罗马数说明:在罗马数中(3999以内),和阿拉伯数字相似,可以把它分解为个位,十位,百位,千位,
- 一、流程分析:1.用户在项目前端,输入手机号,然后点击【获取验证码】,将手机号发到post到后台。2.后台验证手机号是否合法,是否已被占用,
- 本文实例讲述了Python实现判断并移除列表指定位置元素的方法。分享给大家供大家参考,具体如下:问题很简单,输入一个列表和索引,若索引超出列
- 在JS/TS项目里,除了能看到==操作符来判断两个变量是否相等外,我们还会看到===操作符,这两者有什么区别吗?先上结论,对于String,
- 1.模型类中设置:null=True,表示数据库创建时该字段可不填,用NULL填充.MySQL:Null这一列,如果值为YES表示:创建一条
- 在SQL Server中,提供了通过Exchange或Outlook收发邮件的扩展存储过程。下面简单地介绍一下:一、启动SQL Mail:x
- 今天训练faster R-CNN时,发现之前跑的很好的程序(是指在运行程序过程中,显卡利用率能够一直维持在70%以上),今天看的时候,显卡利
- 最近写的资源策略管理,在ceilometer 中创建alarm时,name要求是不能重复的,所以在创建policy的时候,要对policy的
- 本文中我们将通过一个例子来介绍SQL Server 2005的一个Bug,首先,在建立同义词链接Oracle的时候,我们会使用下面的语句:C