Python可变数据类型和不可变数据类型及函数参数传递

news/2024/11/28 11:48:48/

可变数据类型:
列表、字典、集合

当该数据类型的对应变量的值发生了改变,那么它对应的内存地址不发生改变,对于这种数据类型,就称可变数据类型。

不可变数据类型:
整型,字符串、元组

当该数据类型的对应变量的值发生了改变,那么它对应的内存地址也会发生改变,对于这种数据类型,就称不可变数据类型。

import copy
a = 5
b = a
a = 3
print(a)
print(b)print(id(a))
print(id(b))c = [[1,2],0,1,2,3]
d = c
e = c.copy()
f = copy.deepcopy(c)
c.insert(1,5)
c[0].insert(0,5)print(c)
print(d)
print(e)
print(f)
print(id(e))
print(id(f))
print(id(c))
print(id(d))

输出:
在这里插入图片描述
copy浅拷贝,第一层的插入不影响
deepcopy深拷贝,完全不影响。

函数引用传递

Python函数参数采取引用传递的方式。如果函数收到的是一个可变数据类型(比如字典或者列表),就能修改对象的原始值--相当于通过“传引用”来传递对象。如果函数收到的是一个不可变数据类型(比如数字、字符或者元组),就不能直接修改原始对象--相当于通过“传值’来传递对象。


http://www.ppmy.cn/news/487351.html

相关文章

数据结构(双链表的逆置)

试写一个算法,对双链表进行就地逆置 (头插法) void Reserve(DLinkNode *&L) {DLinkNode *pNULL,*q;//L->nextNULL;while(p!NULL){qp>next;//用q标记后继节点if(L->next!NULL)//这步发生是,表里一个数都没有,L指向空L->next-…

数据结构(顺序栈)

实现栈的初始化&#xff0c;进栈&#xff0c;出栈&#xff0c;取栈顶&#xff0c;判断是否空栈&#xff0c;销毁栈 #include<iostream> #include<cstdio> #include<malloc.h> using namespace std; typedef int ElemType; const int MaxSize50; typedef str…

数据结构(Kruskal算法)

main.cpp #include<iostream> #include <stdio.h> #include <algorithm> using namespace std; const int N50005; int head[N],tot0,n,m,cnt0,fa[N]; int ans0; struct Edge{int u,v;//边的两个顶点int w;//边的权值inline friend bool operator <(Edge…

B端产品之数据分析能力

目录 学习目标&#xff1a;数据分析的思维框架以及工作需要的知识结构&#xff0c;数据分析结果外化-撰写数据分析报告 分析流程分析要点分析报告 数据分析流程 明确主题&#xff0c;尽量细化提出假设验证并修正假设&#xff1a;分析过程中对各个关联维度进行数据可视化观察…

Git进阶系列 | 2. Git中的分支策略

Git是最流行的代码版本控制系统&#xff0c;这一系列文章介绍了一些Git的高阶使用方式&#xff0c;从而帮助我们可以更好的利用Git的能力。本系列一共8篇文章&#xff0c;这是第2篇。原文&#xff1a;Branching Strategies in Git[1] 几乎所有的版本控制系统(VCS)都有某种类型的…

MybatiPlus

Java是按值传递还是按引用传递? 值传递(pass by value&#xff09;是指在调用方法时&#xff0c;将实际参数的值或内存地址复制一份传递到方法中(创建参数值或内存地址的副本) 引用传递&#xff08;pass by reference&#xff09;是指在调用方法时&#xff0c;将实际参数的内…

IPMI v2 -I lanplus

一个比较新的服务器, 在使用ipmitool查看传感器信息时, 无法建立会话. # /usr/bin/ipmitool -L operator -H xxx.xxx.xxx.xxx -U xx -P xx sensor Get Session Challenge command failed Error: Unable to establish LAN session 使用lanplus接口就正常了. # /usr/bin/ipmitool…