Python学习笔记(九):装饰器、迭代器

Python学习笔记

装饰器

1,什么是装饰器
		装饰器就是装饰别人的工具,具体是指为被装饰者添加新功能
		
2,为什么要用装饰器
		装饰器的核心思想:(开放封闭原则)
        在不修改被装饰者源代码以及调用方式的前提下,为被装饰者添加新功能

3,如何实现装饰器
		可以用闭包函数去实现装饰器

4,装饰器demo	
		原方法:
				def index(x, y, z):
					return x + y + z

		装饰器:
			def outter(func):
				def wrapper(*args, **kwargs):
					a = 100
					res = func(*args, **kwargs)
					b = 80
					print(a - b)
					return res
				return wrapper

		调用装饰器:
			index = outer(index)

5,装饰器语法糖
		from functools import wraps
		def outter(func):
			@wraps(func)
			def wrapper(*args, **kwargs):
				a = 100
				res = func(*args, **kwargs)
				b = 80
				print(a - b)
				return res
			return wrapper

	调用:
		@outter
		def index(x, y, z):
			return x + y + z

迭代器

1, 什么是迭代器
    迭代器指的是迭代取值的工具
    什么是迭代???
        迭代是一个重复的过程,但是每一次重复都是基于上一次结果而继续的
2, 为何要用迭代器
    1 为了找到一种统一迭代取值方案(适用于str、list、tuple、dict、set,文件对象)
    2 节省内存
3 如何用迭代器
    可迭代的对象iterable:
        内置有__iter__方法的对象(str、list、tuple、dict、set,文件对象)
    迭代器对象iterator:
        内置有__iter__方法
        内置有__next__方法

		# "abc".__iter__()
		# [1,23].__iter__()
		# (1,2,3).__iter__()
		# {'k1':111}.__iter__()
		# {1,2,3}.__iter__()
		# f = open('a.txt',mode='wt')
		# f.__iter__()
		
		# dic = {'k1':1111,'k2':2222,'k3':3333}
		# iter_dic = dic.__iter__()  # iter_dic=iter(dic)
		# # print(iter_dic)
		# print(iter_dic.__next__())  # print(next(iter_dic))
		# print(iter_dic.__next__())
		# print(iter_dic.__next__())
		# # print(iter_dic.__next__())  # 报错

4,自定义迭代器
		yield:可以返回多次值
		def func():
			print(1)
			yield 11
			print(2)
			yield 22
			print(3)
			yield 33
		res = func() # res是一个迭代器对象,不会返回具体值
		res1 = next(res)
		print(res1) # 11 使用next()来获取下一个值,得到的就是第一次返回的值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值