编写一个闭包函数,要实现的功能是计数功能

简介: 编写一个闭包函数,要实现的功能是计数功能

大家好,我是皮皮。


一、前言


前几天在Python最强王者交流群有个叫【杰】的粉丝问了一个Python装饰器的问题,这里拿出来给大家分享下,一起学习下。

c640e1be2595577ae347a358180be5c4.png


二、解决过程


这里【东哥】给出了解答,其实这个题目就是在考你装饰器的内容。

967e0f9d61645da93c39d8db64cc6691.png

代码如下:

count = 0
def wrapper(func):
    def inner(*args, **kwargs):
        global count
        count += 1
        result = func(*args, **kwargs)
        return result
    return inner
# while True:
#     @wrapper
#     def calc(count):
#         print(count)
#
#     calc(count)
for i in range(10):
    @wrapper
    def calc(count):
        print(count)
    calc(count)

注释的那块是死循环,不过代码稍微有点冗余。

cdd1212f225a737161d340150573c2e.jpg

这里更新了下,如下:

count = 0
def wrapper(func):
    def inner(*args, **kwargs):
        global count
        count += 1
        result = func(*args, **kwargs)
        return result
    return inner
@wrapper
def calc():
    print(count)
calc()

因为调用了一次,下面再加一个calc(),这样效果就出来了。

e08eb941f6201179321afda65c5ebd82.png


三、总结


大家好,我是皮皮。这篇文章主要分享了Python的装饰器问题,针对该问题给出了具体的解析和代码演示,帮助粉丝顺利解决了问题。


最后感谢粉丝【杰】提问,感谢【月神】、【东哥】给出的具体解析和代码演示,感谢【dcpeng】等人参与学习交流。


小伙伴们,快快用实践一下吧!如果在学习过程中,有遇到任何问题,欢迎加我好友,我拉你进Python学习交流群共同探讨学习。


相关文章
|
2月前
|
存储 算法 程序员
【C++20 新特性 】模板参数包展开与Lambda初始化捕获详解
【C++20 新特性 】模板参数包展开与Lambda初始化捕获详解
71 3
|
2月前
|
机器学习/深度学习 存储 算法
C++ 模版函数介绍:介绍模版函数的基本概念、用法和作用
C++ 模版函数介绍:介绍模版函数的基本概念、用法和作用
19 1
|
7月前
|
存储 编译器 Go
Go语言隐藏的接口陷阱:nil值判断的各种误区
Go语言隐藏的接口陷阱:nil值判断的各种误区
76 0
|
3月前
学习使用如何调用外部函数
学习使用如何调用外部函数。
21 2
|
5月前
|
搜索推荐 C++
【C++】lambda解决个性化排序问题(对比仿函数)(代码演示)
【C++】lambda解决个性化排序问题(对比仿函数)(代码演示)
|
5月前
|
JavaScript 前端开发 网络架构
JavaScript开发中ES6+新特性:解释箭头函数的作用以及它与普通函数的区别。
JavaScript开发中ES6+新特性:解释箭头函数的作用以及它与普通函数的区别。
42 1
|
5月前
|
JavaScript 前端开发
js函数:函数是JS的基本组成单元,用于封装代码块以实现特定功能。理解函数的定义、调用和参数传递方式非常重要。具体案例详解
js函数:函数是JS的基本组成单元,用于封装代码块以实现特定功能。理解函数的定义、调用和参数传递方式非常重要。具体案例详解
34 1
|
6月前
简化对象和函数写法
简化对象和函数写法
19 1
|
12月前
|
JavaScript 前端开发
|
前端开发
前端学习案例4-闭包定义4
前端学习案例4-闭包定义4
52 0
前端学习案例4-闭包定义4