Python 闭包装饰器和多任务--闭包,装饰器,进程,线程

本文深入探讨了Python中的闭包和装饰器,通过实例介绍了它们的应用。同时,讲解了多任务的概念,包括进程和线程的原理与编程,强调了并发执行的优势以及在进程间、线程间共享变量的问题和注意事项。
摘要由CSDN通过智能技术生成

1.闭包案例

在函数嵌套的前提下,内部函数使用了外部函数的变量,并且外部函数返回了内部函数,我们把这个使用外部函数变量的内部函数称为闭包.
外层函数: config_name(),外层函数中的变量是 name
内层函数: inner(),inner()使用了外层函数的变量name.
        内层函数闭包了name变量.延长了name的声明周期.
调用外层函数,返回了内层函数.此时.内层函数中有name变量.
def config_name(name):
    age = 19
    def inner(info):
        print(f"{name}:{info}")
    return inner
​
if __name__ == '__main__':
    # 调用外层函数,返回了内层函数,此时fun1 就是 内层函数inner()
    fun1 = config_name("小明")
    fun1('你好')
    fun1('交个朋友吧')
​
    fun2 = config_name('小红')
    fun2('不想和你玩')
# 闭包可以让变量更安全
# g_name = '小明'  # 此时其它模块也可以访问和修改.
def outer():
    g_name = '小明'  #被闭包的g_name 其它模块无法直接访问.
    def say_info(info):
        print(f"{g_name}:{info}")
    return say_info
​
​
if __name__ == '__main__':
    aaa = outer()
    aaa('你好')

2.装饰器案例

@classmethod 装饰类方法.

@staticmethod 装饰静态方法.

"""
需求: 有一个函数 sleep(),在函数执行前打印 '准备睡觉.',在函数执行后打印'休息完毕-元气满满'
"""
#装饰器实际就是闭包
def outer(fun):
    def inner():
        print('准备睡觉')
        fun()
        print('休息完毕-元气满满')
    return inner
​
#1.被装饰的函数会当做参数传递给装饰器. outer(sleep)
#2.被装饰的函数最终会被装饰器的返回值替换.sleep() =  inner()
#3.以后调用sleep函数 其实执行的是inner()函数.
@outer
def sleep():
    print("休息6小时就够了")
​
​
if __name__ == '__main__':
    #方案1 --不够优雅
    # print('准备睡觉')
    # sleep()
    # print('休息完毕-元气满满')
​
    #方案2: 使用闭包来完成
    # inner =  outer(sleep)
    # inner()
​
    # 方案3: 使用装饰器来完成
    sleep()

3.通用装饰器[了解]

#需求: 在计算求和函数之前输出一句话.'正在努力计算中....'

# 装饰器名称简明之意: logging -- 打印日志的意思
def logging(func):
    #内层函数即使用来替换被装饰的函数用的.
    def inner(*args):
        print('正在努力计算中....')
        result = func(*a
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值