python基础-一闭三器

我是张晨,一转眼,我在新课已经学习了很长一段时间。回顾这几个月的时间,我收获了很多知识。这里是我的一点学习笔记。
一、可迭代对象与迭代器

可迭代对象 for:什么样的对象可以被循环出来 以及为什么可以被循环出来

for i in object:
#有循环的魔法方法对象才可以被循环出来

二、生成器

生成器 是一个特别一点的迭代器

示例:

def func():
    for i in range(5):
        yield i  # yield 讲数据返回到外面,但是不会杀死函数
# 生成器的作用就相当于一个工厂
data = func()
for i in data:
    print(i)
#运行结果:0
        #1
        #2
        #3
        #4

三、闭包

什么是闭包?

函数的嵌套
保证数据的安全 同时函数不会死亡 函数里面的数据属于局部变量,外部无法使用

闭包格式的描述:

def 外层函数(参数):

def 内层函数():

​ print(“内层函数执行”, 参数)

return 内层函数

内层函数的引用 = 外层函数(“传入参数”)

内层函数的引用()

闭包示例1:

def outer(x):
    def inner(y):
        nonlocal x
        x += y
        return x
    return inner
a = outer(10)
print(a(1))#运行结果:11
print(a(3))#运行结果:14

Python中,闭包主要用于装饰器的实现

示例2:

def outer():
    list_data = []
    def inner():
        list_data.append(1)
        return list_data
    return inner  # inner() None /  inner
inner = outer()  # outer() == inner
print(inner())
print(inner())
#运行结果:[1]  
       #[1, 1]

当外部需要使用到函数里面的数据
不希望这个数据直接被使用
调用函数修改列表 而不是直接调用列表进行修改

四、装饰器

装饰器 在原有的函数上新加一些东西
在不改变函数原本代码的前提下为其增加新的功能

示例1:

def func_dec(func):
    def wrapper(*args):
        if len(args) == 2:
            func(*args)
        else:
            print("Error! Arguments = {}".format(list(args)))
    return wrapper
@func_dec
def add_sum(*args):
    print(sum(args))
args = range(1, 3)
add_sum(*args)
#运行结果:3

示例2:

import time
def func1():
    start = time.time()  # 记录开始时间
    print(1 + 1)
    time.sleep(2)  # 休眠两秒  模拟函数运行的时间
    stop = time.time()
    print(stop-start)  # 打印代码运行的时间
# func1()
def func2():
    print(2 + 2)
func2()
#运行结果:4

需要这个功能的代码很多 统一管理和维护
使用场景
计算代码所需要运行的时间

暂时先分享这么多吧,希望大家在学习过程当中都能有所收获,感谢新课,如果想获取更多资料或者联系加群,可以关注我们新课的微信公众号,后台自动回复获取代码笔记资料。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值