python迭代器生成器装饰器_python3 装饰器、列表生成器、迭代器、内置方法详解等(第四周)...

前言:

为什么要学习python3?

原因:

1、学习一门语言能力

2、通过该语言能力完成测试自动化以及独立完成自测框架知识

那么我要做什么呢?

1、每天花十个小时完成python3的学习

要在什么地方做呢?

深圳家里完成7天

那到底要怎么做呢?

完成基本的python3的基础知识,从而再学习测试框架

总结:

1、让我初步了解装饰器、列表生成器、迭代器、内置方法详解等内容

遗留问题:高级购物车代码未写

装饰器:

定义:本质是函数,(装饰其他函数)就是为其他函数添加附加功能

原则:

1、不能修改被装饰的函数的源代码

2、不能修改被装饰的函数的调用方式

实现装饰器知识储备:

1、函数即“变量” (字符串的形式存放)

#匿名函数

# calc = lambda x:x*3

# print(calc(3))

#看书本图

注意:

1)当一个字符串没有被任何指向时(例:x和y 都不等于1,1会被python自动内存回收)

2)python函数都是 1、定义声明 2、再调用 注(先调用后定义无效)

2、高阶函数

1) 把一个函数名当做实参传给另外一个函数(在不修改被装饰函数源代码的情况下为其添加功能)

2)返回值中包含函数名(不修改函数的调用方式)

3、嵌套函数

高阶函数+嵌套函数 =》 装饰器

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 importtime2

3 deftimmer(func):4 def warpper(*args,**kwargs):5 start_time =time.time()6 func()7 stop_time =time.time()8 print("the func run time is %s" %(stop_time-start_time))9 returnwarpper()10

11 @timmer12 deftest1():13 time.sleep(3)14 print("in the test1")15

16 test1()

View Code

列表生成器:

# 1、生成器只有在调用时才会生成相应的数据

# 2、只记录当前位置

# 3、只有一个_next_() 方法。,数据只能往前不能后退,只保留一个元素 next()

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 b = (i*2 for i in range(10)) #最快,生成一个算法

2 for i in b: #访问了才会开始生成

3 print(i)4

5 #其他方式

6 [i*2 for i in range(10)] #直接生成全部

7 #print([i*2 for i in range(10)])

8

9

10 a = [] #最low

11 for i in range(10):12 a.append(i*2)13 print(a)14

15

16 #yield的send用法

17 #f.send有三个作用或可称为三个步骤

18 #1. 将'send value'赋值给ret(注意:不是赋值给i)

19 #2. 重新启动生成器往下走

20 #3. 再执行一次next(f), 相当于函数又返回了一次值

View Code

迭代器:

#函数

isinstance() #判断一个对象是否是Iterale 对象:

next()

#可以直接作用于for循环的对象统称为 可迭代对象:判断一个对象是否是Iterale

#可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator

#注意:有next()方法就叫迭代器,没有就不是 用dir() 查看可用的方法

# 凡是可作用于for循环的对象是Iterable类型(可迭代对象):

# 凡是可作用于next()函数的对象都是Iterator类型(迭代器),它们表示一个惰性计算序列:

# 集合数据类型如list、dict、str等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象

内置方法详解:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 abs()2 all() #判断所有可迭代对象是否为真, 非0就是真

3 #print(all([0,-5,3]))

4 any() #任意一个数据为真都返回真

5 #print(any([0,-5,3]))

6 ascii() #返回一个表示对象的字符串

7 bin() #返回一个整数 int 或者长整数 long int 的二进制表示,十进制转二进制

8 bool() #判断真假

9 bytearray() #方法返回一个新字节数组。这个数组里的元素是可变的

10 bytes()11 callable()12 chr()13 ord()14 compile()15 delattr() #16 dict() #生成字典

17 enumerate()18 eval() #字符串编译字典,注:处理数据类型或加减乘除 ,有语句或者for循环只能用exec()

19 exec() #字符串转字典 处理有语句或者for循环的

20 filter() #函数用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象,如果要转换为列表,可以使用 list() 来转换

21 float() #浮点

22 format()23 frozenset() #不可变列表,类似元组

24 getattr()25 globals() #返回一个全局变量的字典,包括所有导入的变量

26 hash() #用于获取取一个对象(字符串或者数值等)的哈希值 类似数据库主键对应值

27 help() #查看帮助

28 hex() #将一个指定数字转换为 16 进制数

29 input()30 int()31 isinstance()32 issubclass()33 iter() #迭代器

34 len() #字符长度

35 locals() #会以字典类型返回当前位置的全部局部变量

36 map() #会根据提供的函数对指定序列做映射,返回迭代器

37 max() #返回给定参数的最大值

38 min() #返回给定参数的最小值

39 next() #函数要和生成迭代器的 iter() 函数一起使用

40 object()41 oct() #将一个整数转换成 8 进制字符串,8 进制以 0o 作为前缀表示

42 open() #用于打开一个文件,并返回文件对象

43 ord()44 pow() #返回 xy(x的y次方)的值

45 #math 模块 pow() 方法的语法: math.pow(x, y)

46 #内置的 pow()方法: pow(x, y)

47 print() #打印

48 range() #函数返回的是一个可迭代对象(类型是对象),而不是列表类型, 所以打印的时候不会打印列表

49 repr() #函数将对象转化为供解释器读取的形式

50 reversed() #用于反向列表中元素

51 round() #返回浮点数 x 的四舍五入值

52 slice() #实现切片对象,主要用在切片操作函数里的参数传递

53 sorted() #对所有可迭代的对象进行排序操作 字典按可以按key或者vaual来排序

54 setattr() #对应函数 getattr(),用于设置属性值,该属性不一定是存在的

55 sum() #对序列进行求和计算

56 tuple() #函数将可迭代系列(如列表)转换为元组

57 type() #只有第一个参数则返回对象的类型,三个参数返回新的类型对象

58 #isinstance() 与 type() 区别:

59 #type() 不会认为子类是一种父类类型,不考虑继承关系。

60 #isinstance() 会认为子类是一种父类类型,考虑继承关系。

61 #如果要判断两个类型是否相同推荐使用 isinstance()

62 vars() #返回对象object的属性和属性值的字典对象

63 zip() #函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,这样做的好处是节约了不少的内存。

View Code

json序列化

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 #!/usr/bin/env python

2 #-*- coding: utf-8 -*-

3

4 #json序列化

5 importjson,pickle6 defsayhi(name):7 print("hello,",name)8

9 info ={10 "name":"yao",11 "age":22,12 "func":sayhi13

14 }15

16 f= open("test.text","r")17 f.write(json.dumps(info))18 data =json.loads(f.read())19 f.close()20 print(data["age"])

View Code

json反序列化

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 #!/usr/bin/env python

2 #-*- coding: utf-8 -*-

3 importpickle4 defsayhi(name):5 print("hello2222222,",name)6 f= open("test.text","rb")7

8 data =pickle.loads(f.read())9 print(data["func"]("yao"))

View Code

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值