zoukankan      html  css  js  c++  java
  • 简单回顾之闭包

    温故而知新。

    现在回顾下之前的闭包,感觉比之前要更好地理解了。

    定义:

    闭包就是能够读取其他函数内部变量的函数。例如在javascript中,只有函数内部的子函数才能读取局部变量,

    所以闭包可以理解成“定义在一个函数内部的函数“。在本质上,闭包是将函数内部和函数外部连接起来的桥梁。

    闭包:

    函数对象+函数内部需要使用的一个外部变量=函数返回的整体

    直接上代码

    def timer(func):
        def func1():
            print("start...")
            t1=time.time()
            func()
            print("end...")
            t2=time.time()
            return t2-t1
        return func1

    @timer
    def a():
        i=1
        while i<1000000:
            i+=10

    print(a())   #将a函数对象作为参数传到timer中这个是由装饰器自动完成的,a()相当于func1()

    带参数的:

    def run(func):
        def func1(*args,**kwargs):
            print("start...")
            a=func(*args,**kwargs)
            print("end")
            return a
        return func1

    @run
    def count(*args,**kwargs):
        result=0
        for i in args:
            result+=i
        for j in kwargs.values():
            result+=j

        return result

    print(count(1,2,3,a=3,b=3))

  • 相关阅读:
    [BZOJ3535][Usaco2014 Open]Fair Photography
    [LOJ#2270][BZOJ4912][SDOI2017]天才黑客
    [UOJ#122][NOI2013]树的计数
    [BZOJ4816][Sdoi2017]数字表格
    [BZOJ2154]Crash的数字表格
    [BZOJ3529][Sdoi2014]数表
    [BZOJ2820]YY的GCD
    [BZOJ2301][HAOI2011]Problem b
    [UOJ#223][BZOJ4654][Noi2016]国王饮水记
    [BZOJ4653][Noi2016]区间
  • 原文地址:https://www.cnblogs.com/King-Tong/p/13204455.html
Copyright © 2011-2022 走看看