python之函数的参数传递(引用传递和值传递),查看变量的内存地址的方法

简介: python之函数的参数传递(引用传递和值传递),查看变量的内存地址的方法

函数的参数传递

可变对象和不可变对象:

不可变对象(number,string,tuple):”引用传递“,该对象的值不能发生改变。

数据类举例:

def add(num):
    num=num+2
    return num
number1=10
number2=add(number1)#number1作为实参引用传递,该变量的值本身没有发生变化
print(number1)
print(number2)
10
12

字符串类型举例:

def add(num):
    num=num+"world"
    return num
string="hello"
string2=add(string)#string作为实参引用传递,该变量的值本身没有发生变化
print(string)#函数调用后原字符串的值没有改变
print(string2)
hello
helloworld

元组类型举例:

def add(num):
    num=num+(1,5,6)
    return num
tuple1=(12,23,45)
tuple2=add(tuple1)#tuple1作为实参引用传递,该变量的值本身没有发生变化
print(tuple1)
print(tuple2)
(12, 23, 45)
(12, 23, 45, 1, 5, 6)

可变对象(字典,列表,集合):“值传递”,该对象的值会发生变化。

列表为例:

def change(num):
    num.append(0)
li = [] #定义一个空列表li
print(li)
change(li) #把li作为实参传递到函数体,传递过去变量值
print(li)#列表li的值已经发生变化
[]
[0]

字典为例:

def dict_s(dict1):
    dict1["color"]="red"
dict1={"名称":"太阳"}
print(dict1)
dict_s(dict1)
print(dict1)
{'名称': '太阳'}
{'名称': '太阳', 'color': 'red'}

集合为例:

def set(set1):
    set1.add("python")
set1={"hello","world"}
print(set1)
set(set1)
print(set1)
{'world', 'hello'}
{'world', 'hello', 'python'}
查看变量内存地址:

为了提高内存利用效率,对于不大于256的整数,python会将具有相同值的整数对象给予相同的内存地址

举例:

a,b=10,20
print(id(a),id(b))#变量值相同,内存相同,即使变量名不相同
a=b=10
print(id(a),id(b))
c=50
print(id(c))
b=c
print(id(b),id(c))
140731941263296 140731941263616
140731941263296 140731941263296
140731941264576
140731941264576 140731941264576
目录
打赏
0
0
0
0
5
分享
相关文章
内存卡怎么格式化?6个格式化方法供你选
随着使用时间的增加,内存卡可能会因为数据积累、兼容性或是文件系统损坏等原因需要进行格式化。那么怎样正确格式化内存卡呢?格式化内存卡的时候需要注意什么呢?本文会给大家提供详细的步骤,帮助大家轻松完成格式化内存卡的操作。
Node.js中内存泄漏的检测方法
检测内存泄漏需要综合运用多种方法,并结合实际的应用场景和代码特点进行分析。及时发现和解决内存泄漏问题,可以提高应用的稳定性和性能,避免潜在的风险和故障。同时,不断学习和掌握内存管理的知识,也是有效预防内存泄漏的重要途径。
363 62
C 语言在计算机科学中尤其在硬件交互方面占据重要地位。本文探讨了 C 语言与硬件交互的主要方法,包括直接访问硬件寄存器、中断处理、I/O 端口操作、内存映射 I/O 和设备驱动程序开发
C 语言在计算机科学中尤其在硬件交互方面占据重要地位。本文探讨了 C 语言与硬件交互的主要方法,包括直接访问硬件寄存器、中断处理、I/O 端口操作、内存映射 I/O 和设备驱动程序开发,以及面临的挑战和未来趋势,旨在帮助读者深入了解并掌握这些关键技术。
106 6
大模型进阶微调篇(一):以定制化3B模型为例,各种微调方法对比-选LoRA还是PPO,所需显存内存资源为多少?
本文介绍了两种大模型微调方法——LoRA(低秩适应)和PPO(近端策略优化)。LoRA通过引入低秩矩阵微调部分权重,适合资源受限环境,具有资源节省和训练速度快的优势,适用于监督学习和简单交互场景。PPO基于策略优化,适合需要用户交互反馈的场景,能够适应复杂反馈并动态调整策略,适用于强化学习和复杂用户交互。文章还对比了两者的资源消耗和适用数据规模,帮助读者根据具体需求选择最合适的微调策略。
1853 5
在使用 Glide 加载 Gif 动画时避免内存泄漏的方法
【10月更文挑战第20天】在使用 Glide 加载 Gif 动画时,避免内存泄漏是非常重要的。通过及时取消加载请求、正确处理生命周期、使用弱引用、清理缓存和避免重复加载等方法,可以有效地避免内存泄漏问题。同时,定期进行监控和检测,确保应用的性能和稳定性。需要在实际开发中不断积累经验,根据具体情况灵活运用这些方法,以保障应用的良好运行。
|
5月前
|
C++
析构造函数就是为了释放内存,就是在局部指针消失前释放内存,拷贝构造函数就是以构造函数为模块,在堆里面新开一块,同一个变量在堆里面的地址
本文讨论了C++中构造函数和析构函数的作用,特别是它们在管理动态内存分配和释放中的重要性,以及如何正确地实现拷贝构造函数以避免内存泄漏。
70 2
driftingblues9 - 溢出ASLR(内存地址随机化机制)
driftingblues9 - 溢出ASLR(内存地址随机化机制)
60 1
|
7月前
|
Python变量的作用域_参数类型_传递过程内存分析
理解Python中的变量作用域、参数类型和参数传递过程,对于编写高效和健壮的代码至关重要。正确的应用这些概念,有助于避免程序中的错误和内存泄漏。通过实践和经验积累,可以更好地理解Python的内存模型,并编写出更优质的代码。
65 2
内存卡数据恢复,3个方法帮你找回丢失的照片和视频
今天,针对内存卡数据恢复,本期做一个详细的归纳,分析常见的数据丢失原因、详细的数据恢复步骤、以及如何保护内存卡数据。
内存卡数据恢复,3个方法帮你找回丢失的照片和视频
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等