美文网首页
闭包函数和装饰器python

闭包函数和装饰器python

作者: 一言不合就跑步 | 来源:发表于2019-06-06 14:54 被阅读0次

1.什么是闭包

闭包是函数的内部函数,对外部作用域而非全局作用域的引用。可以打破层级关系,把外部的变量封装到内部函数中使用,直接在外面调用。

x = 10
def f1(x): 
    def f2():
        print(x)
    return f2 # 把f2函数当做一个返回值返回给f1.
f2 =f1(1) # f1()就相当于把f2的值拿到,然后在赋值给一个变量名为f2。
f2()

2.函数的两种传参方式

def f(x):
    print(x)
def outter(func):
    def warpper(*args,**kwargs):
        return func()
    return warpper

f = outer(func)
f()

闭包的意义

返回的函数对象,不仅仅是函数结果,还包含了外面一层函数。这使得函数无论如何调用,优先调用外面一层参数。
应用领域:爬虫等

import requests

def outter(url):  #outter() == spider ;spider() == response == requests.get(url)
    def spider():  # spider() == response
        response = requests.get(url)
        print(response.status_code)
        return response  
    return spider

baidu = outter('https://www.baidu.com')  # baidu == spider
baidu()

装饰器

什么是装饰器

装饰器也是一个函数,可以将原函数已闭包的形式传入新的函数中,达到不修改原函数而增加新功能的效果。

装饰器的功能:

不修改原函数
不修改原函数的调用方式

def deco(func):
    def wrapper(*args,**kwargs):
        start = time.time()
        res = func(*args,**kwargs)
        end = time.time()
        print(end - start)
        return res
    return wrapper

@deco
def time_sleep(x):
    time.sleep(x)
    print('from time_sleep',x)



time_sleep(3)

相关文章

  • python装饰器

    装饰器简述 要理解装饰器需要知道Python高阶函数和python闭包,Python高阶函数可以接受函数作为参数,...

  • python之理解闭包和装饰器

    python之理解闭包和装饰器 1、闭包函数 1.1 python中函数都是对象 结果: 上面定义一个shut函数...

  • Python装饰器-专题笔记

    学会装饰器,Python更进阶 函数作用域到闭包到装饰器讲解,及闭包和装饰器的运用。 [√] 慕课网Meshare...

  • python中的函数

    关于python中的值传递和址传递 匿名函数 缺省函数 闭包 装饰器

  • 2020-012 python闭包与装饰器

    python闭包与装饰器 闭包 函数和对其周围状态(lexical environment,词法环境)的引用捆绑在...

  • Python 2 - 高级用法 - 装饰器

    Python 2 - 高级用法 - 装饰器 一谈到 装饰器,就离不开闭包 闭包 闭包就是能够读取其他函数内部变量的...

  • Python 装饰器的诞生过程

    Python中的装饰器是通过利用了函数特性的闭包实现的,所以在讲装饰器之前,我们需要先了解函数特性,以及闭包是怎么...

  • 只需四步,让你了解Python装饰器的诞生过程

    Python中的装饰器是通过利用了函数特性的闭包实现的,所以在讲装饰器之前,我们需要先了解函数特性,以及闭包是怎么...

  • chapter7 函数式编程

    闭包 匿名函数 装饰器 偏函数

  • Python装饰器与闭包!

    闭包是Python装饰器的基础。要理解闭包,先要了解Python中的变量作用域规则。 变量作用域规则 首先,在函数...

网友评论

      本文标题:闭包函数和装饰器python

      本文链接:https://www.haomeiwen.com/subject/wdsyxctx.html