python 全局变量_Python尚学堂高淇|P72P74参数传递传递不可变引用对象内存分析浅拷贝和深拷贝局部变量和全局变量效率测试...

P72局部变量和全局变量的效率测试

局部变量的查询和访问的速度比全局变量快,优先考虑使用,尤其是在循环的时候,在特别强调效率的地方,胡总恶化循环次数比较多的地方,可以通过将全局变量转为局部变量提高运行的速度

#测试局部变量和全局变量的效率import mathimport timedef test01():start=time.time()for i in range(100000000):        math.sqrt(30)end=time.time()    print("耗时{0}".format((end-start)))def test02():    b=math.sqrtstart=time.time()for i in range(100000000):        b(30)end=time.time()    print("耗时{0}".format((end-start)))test01()test02()

P73:参数的传递-传递可变对象-内存的分析

参数的传递

函数的参数传递本质上就是:从实参到形参的赋值的操作,Python当中一切都是对象,所有的赋值操作都是引用的赋值,所以说,Python当中的参数的传递都是引用传递,不是值的传递,具体操作的时候分为两类:

  1. 对可变对象进行写操作,直接作用于原对象本身

  2. 对于不可变对象进行写操作的时候,会产生一个新的对象空间,并用新的值填充这块空间(起到其他语言的值传递效果,但是不是值传递)

可变对象有:

字典,列表,集合,自定义对象等

不可变对象:

数字,字符串,元祖function等

传递可变对象的引用

传递参数是可变对象(例如:列表,字典,自定义的其他的可变的对象等),实际传递的还是对象的引用,在函数体当中不创建新的对象的拷贝,而是可以直接修改所传递的对象。

【操作】参数传递:传递可变对象的引用

#测试参数的传递#传递可变的对象a=[10,20]print(id(a))print(a)print("**************")def test01(m):    print(id(m))    m.append(300)    print(id(m))test01(a)

P74:参数的传递-传递不可变对象-内存分析

367fefd3b8d98db0cf36a5229aa5986d.png

字符串,元祖,布尔值,

参数传递是不可变的对象,实际传递的还是对象的引用,在赋值操作的时候,由于不可变对象无法修改,系统会新创建一个对象

8f565f0e987b864ae2dc13302a3810bf.png

赋值的时候新创建了一个对象

P75浅拷贝和深拷贝

为了更加深入的了解参数传递的底层原理,我们需要讲解一下浅拷贝和深拷贝,我们可以使用内置函数:cpoy(浅拷贝),deepcopy(深拷贝)

浅拷贝:不拷贝子对象的内容,只是拷贝子对象的引用

深拷贝:会连子对象的内存也全部拷贝一份,对于子对象的修改不会影响源对象

c982b1a9c9686813ec6a58bf7ebc200b.png

fb8c0a5338a2af547d666fcdd1ac0862.png

ae27fc2328936aec551d3c83245c0ae6.png

欢迎打赏,么么哒!

ae27fc2328936aec551d3c83245c0ae6.png f8fa8e168106e33ef472fe253f01ce4c.gif

●R语言

●句子

●JAVA

●C语言以及算法笔记

●大学生生活图鉴

●JavaScript

●计算机网络原理

●计算机组成原理

●操作系统

●数据库系统概论

●数据结构

●英语

●Linux

●数字图像处理

●云计算与人工智能

●资源

●明星电视剧社会现象娱乐

Python

402cd825a0df0a2fa603ad6b79ab4c15.png a814bdaa5faf5d84e7dae66e58217e37.png c6ee63aa411d02653cfd00c9d705812f.png d13f3d4c975137d3198f9eef36b4f86b.gif仙女都在看点点点,赞和在看都在这儿! f85e941eba8c88d57a72c33efd4a0d08.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值