拾光

人生如梦,人生如茶。。。

导航

  • 首页
  • 分类
    • 闲言碎语
    • 聆听
    • 软件分享
    • 亿次元&COS
    • 精品文摘
    • 说一说
    • 相册
  • 听听
  • 朋友圈
  • 留言
  • 友链
  • 相册
  • 登录

python闭包函数&装饰器

admin 2022年 01月 22 日

阅读选项

一、函数引用
  • 函数可以被引用
  • 函数可以被赋值给一个变量
def hogwarts():
print("hogwarts") # hogwarts() # 函数调用
print(hogwarts)
print('----------------')
harry = hogwarts # 把函数对象赋值给一个变量
print(harry)
print('----------------')
harry() # 引用函数

二、闭包函数

  • 闭包的内部函数中,对外部作用域的变量进行引用
  • 闭包无法修改外部函数的局部变量
  • 闭包可以保存当前的运行环境
def student_grade(grade): # 闭包无法修改外部函数的局部变量
grade = '22'
print('外函数年级:', grade) def output_student(name, gender):
grade = '11'
print('内函数年级为:', grade)
# print(f"霍格沃兹测试学社开学啦!"
# f"学生的名称是{name},"
# f"性别是{gender}年级是{grade}") return output_student student = student_grade(1)
student("罗恩", "男")
student("哈利", "男") student("赫敏", "女")
三、python装饰器
  • 行业需求: 涉及 Python 技术栈,面试常见题
  • 使用需求: 优化代码的可读性,可维护性
四、装饰器示例
  • 函数体开始执行与结束执行的时候分别添加打印信息
""" 装饰器示例
函数体开始执行与结束执行的时候分别添加打印信息 """
def hogwarts():
print("霍格沃兹测试学社") def hogwarts2():
print("霍格沃兹测试学社2") # 把中间的执行函数,使用参数代替
def function_tips(func):
print("函数开始执行")
# 不在写死的任何的一个函数,而是任意外部传入的函数
func()
print('函数结束执行') # 函数对象
function_tips(hogwarts)
function_tips(hogwarts2)

# 使用装饰器的代码
# 第一步,定义两个函数,一个内函数,一个外函数
# 第五步,在装饰器执行过程中,会自动传入一个参数,参数就是被装饰函数的函数对象
def timer(func):
def inner():
# 第二步,在内函数添加装饰器逻辑
print("函数开始执行")
func()
print('函数结束执行')
# 第三步,把内函数的函数对象return出去 return inner # 第四步,装饰器的使用
@timer
def hogwarts():
print("霍格沃兹测试学社") hogwarts() @timer
def hogwarts2():
print("霍格沃兹测试学社2") hogwarts2()
五、装饰器练习(装饰器不带参数)
实现一个计时器的装饰器,计算函数执行时间
import datetime

"""
三步走: 1、定义一个外函数,外函数有一个形参,接受被装饰的函数对象
2、定义一个内函数,内函数内调用传入函数
3、定义外函数的返回值,外函数返回值固定的格式为内置函数对象
"""
"""实现一个计时器的装饰器,计算函数执行时间""" def timer(func):
def inner():
# 获取当前时间
start_time = datetime.datetime.now()
func()
end_time = datetime.datetime.now()
print(f"函数的执行时间{end_time - start_time}") return inner @timer
def hogwarts():
print("霍格沃兹测试学社") hogwarts() @timer
def hogwarts2():
print("霍格沃兹测试学社2") hogwarts2()

六、装饰器带参数

def timer(func):
# 如果被装饰函数有参数,那么需要在内函数加形参以及在函数参数调用的时候添加参数信息
# 如果写死一个参数,但是无法确定被装饰函数的参数数量,这种写法就不行,会报错
# 解决方法:把两个地方的参数全部换成不定长参数
def inner(*args, **kwargs):
# 获取当前时间
start_time = datetime.datetime.now()
func(*args, **kwargs)
end_time = datetime.datetime.now()
print(f"函数的执行时间{end_time - start_time}") return inner @timer
def hogwarts(name, age):
print("霍格沃兹测试学社", name, age) hogwarts('Tom', 4) @timer
def hogwarts2(name, age, sex):
print("霍格沃兹测试学社2", name, age, sex) hogwarts2('jack', 11, 'man')

python闭包函数&装饰器的

python闭包函数&装饰器
作者 admin
发布于 2022-01-22
分类
软件分享

那年今日
01月
22日
  • 2022年01月22日眼睛为他下着雨,心却为他打着伞,这就是恋爱
  • 2022年01月22日一生里途经的人虽多,但有些人是一阵子,有些人是一辈子
  • 2022年01月22日品味女人:女人兴趣女人味
  • 2022年01月22日逝去的器械,最好不见,最好不念
  • 2022年01月22日关于男子:成熟男子绝对不会做的事
Book of the Dead 死者之书Demo工程回顾与学习 模拟axios的创建[ 实现调用axios()自身发送请求或调用属性的方法发送请求axios.request() ]

微信分享二维码

赞 (0)
分享
QQ
QQ空间
微信
微博
赞赏
×
生成中,请稍候...
海报

随机文章

利用Typecho ByeTyp插件迁移更换至WordPress

老蒋看到有不少...
2022年02月26日

我把故事都换成了酒 - 海生

我把故事都换成...
2023年04月29日

这条街最靓的仔-爱朵女孩

这条街最靓的仔...
2022年03月08日

晚安心语:最怕的不是在追梦的时候丢了梦,而是在追梦的时候丢了自己

其实,很多偶然...
2022年01月22日

行走在青春的蹊径上(原创首发)

行走在青春的蹊...
2022年01月22日

恋爱文章:恋爱是什么

我们都领会爱,...
2022年01月22日

评论区(暂无评论)

取消回复

我要评论

这里空空如也,快来评论吧~


拾光
如果你错过五点的日出,也许你可以等待六点的夕阳!
99+
文章
99+
评论
7
分类
4
页面
文章分类
  • 闲言碎语 (587)
  • 聆听 (1494)
  • 软件分享 (1061)
  • 亿次元&COS (203)
  • 精品文摘 (4544)
  • 说一说 (119)
  • 相册 (9)
最近文章
  • 中意你 - 咖菲 /猪老三儿
    2026/02/15 · 暂无评论
  • 说散就散 - JC 陈咏桐
    2026/02/15 · 暂无评论
  • 又一年枫叶落 - 陈默默
    2026/02/15 · 暂无评论
  • 命不如她 - 任夏
    2026/02/15 · 暂无评论
  • 朝圣者 - 李雨儿
    2026/02/15 · 暂无评论
最新评论
  • admin
    暂时还不支持1.30

    评论于:typecho接口API(非插件)
    2026-02-15
  • Gavin
    应该是第三版1.42那个,因为我也是同样…

    评论于:typecho接口API(非插件)
    2026-01-31
  • admin
    请问是哪个版本?

    评论于:typecho接口API(非插件)
    2026-01-08
  • evhans
    app上面,当我在首页上点击文章,显示加…

    评论于:typecho接口API(非插件)
    2026-01-05
  • 蒙需
    免费版的经常回答到一半就中断了,可以回复…

    评论于:deepseek本地使用收费接口
    2025-12-25
文章标签
  • 歌曲
  • 一言
  • 原文
  • 分享
  • 照片
  • 二次元
  • typecho
  • 小姐姐
  • 软件
  • 插件
  • wordpress升级
  • 美女
  • wordpress技巧
  • 情感
  • 房子
  • 建筑
  • 别墅
  • WordPress插件
  • Wordpress
  • 视频

赞赏支持作者

×
支付宝
微信
支付宝二维码
微信二维码
友情链接:
拾光
规则之树
幻焕博客
旧时光
ping爱检测


© 2026 拾光
Powered by Typecho & BearSimple
湘ICP备18006110号
× 微信二维码

微信扫码联系我

× QQ二维码

QQ扫码联系我