有益的探索

 

e86832de7a4b498aaae7c07c433b85ab.png

 

  • 数据类型的底层实现

95014bf8725c40478caa20f7672d4119.png

 

  • 错综复杂的复制

浅拷贝

f09cb14584744f9faec6838391285065.png

 

对浅拷贝前后两列表分别进行操作

 

 

列表的底层实现

列表存储的实际是元素的地址!!!

新增元素

 

04a8d46db0b842e5a0246b02aacd8717.png

 

 

 

9.3.2迭代器

1.可迭代对象

可直接作用于for循环的对象统称为可迭代对象:Iterable
(1)列表、元组、字符串、字典、集合、文件
可以使用isinstance()判断一个对象是否是Iterable对象
(2)生成器
生成器不但可以用于for循环,还可以被next()函数调用
直到没有数据可取,抛出Stoplteration
可以被next()函数调用并不断返回下一个值,直至没有数据可取的对象称为迭代器:Iterator

2.迭代器

(1)生成器都是迭代器
(2)列表、元组、字符串、字典、集合不是迭代器
可以通过iter(Iterable)创建迭代器
for item in Iterable等价于
先通过iter()函数获取可迭代对象Iterable的迭代器
然后对获取到迭代器不断调用next()方法来获取下一个值并将其赋值给item
当遇到StopIteration的异常后循环结束
(3)zip enumerate等itertools里的函数是迭代器
(4)文件是迭代器
(5)迭代器是可耗尽的
(6)range()不是迭代器
可以称range()为懒序列
它是一种序列
但并不包含任何内存中的内容
而是通过计算来回答问题

9.3.3装饰器

1.需求的提出

(1)需要对已开发上线的程序添加某些功能
(2)不能对程序中函数的源代码进行修改
(3)不能改变程序中函数的调用方式

2.函数对象

函数是Python中的第一对象
(1)可以把函数赋值给变量
(2)对该变量进行调用,可实现原函数的功能
可以将函数作为参数进行传递

3.高阶函数

(1)接收函数作为参数
(2)或者返回一个函数
满足上述条件之一的函数称之为高阶函数

4.嵌套函数

在函数内部定义一个函数

5.闭包

闭包:延伸了作用域的函数
如果一个函数定义在另一个函数的作用域内,并且引用了外层函数的变量,则该函数称为闭包
闭包是由函数及其相关的引用环境组合而成的实体
一旦在内层函数重新定义了相同名字的变量,则变量成为局部变量
nonlocal允许内嵌的函数来修改闭包变量

6.一个简单的装饰器

嵌套函数实现

7.装饰有参函数

8.带参数的装饰器
装饰器本身要传递一些额外参数
装饰器本身要传递一些额外参数

9.何时执行装饰器
一装饰就执行,不必等调用

10.回归本源
原函数的属性被掩盖了

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值