装饰器,闭包,高阶函数,嵌套函数


高阶函数代码形式:(1.函数接收的参数是一个函数名 2.函数的返回值是一个函数名)
def too():
    print(‘from too‘)     #高阶函数
def foo():
    print(‘from foo‘)
    return too
a = foo()
a()
def too():
    print(‘from too‘)
def foo(func):
    print(‘from foo‘)
    func()
a = foo(too)

函数嵌套 定义一个函数,在该函数的代码块中在定义函数(可以一直定义下去)
def foo():
    print(‘from in foo‘)
    def too():
        print(‘from in too‘)
    return too
too = foo()
too()
闭包,将变量(函数本身也是一种变量)用函数封装起来
def foo():
    def woo():
        print(‘闭包‘)
    return woo
woo = foo()
woo()
装饰器:
什么是装饰器. 装饰器是一个函数(具有高阶函数,嵌套函数,闭包等的特性),作用:装饰器就是装饰函数的,及给函数添加功能原则:1.不改变被装饰的函数的内部代码 2.不改变被装饰函数的调用方式

例如:给一个函数加一个测试函数调用时间的装饰器
import time
def foo(func):
    def woo(*args,**kwargs):
        a = time.time()                #定义了一个具有计算函数运行时间的装饰器
        res = func(*args,**kwargs)
        b = time.time()
        print(b - a)
        return res
    return woo
语法规定,@foo等同与two = foo(two).作用是在给不同的函数加装饰器时,只要在函数的前面加上@装饰器的函数名就可以了.不需要给函数添加功能的就不需要加.(同时,还可以给函数加多个装饰器)运行加了装饰器的函数,实质上是在运行装饰器(把函数放在装饰器内部运行)
@foo
def two(name,age):
    time.sleep(1)
    print(‘我叫%s,今年%s岁‘%(name,age))
    return ‘不错‘
#two = foo(two)
res1 = two(‘jiang‘,‘18‘)
print(res1)
 

原文地址:https://www.cnblogs.com/jiangxiaolong-1996/p/9277871.html

时间: 2024-08-05 19:24:59

装饰器,闭包,高阶函数,嵌套函数的相关文章

python_20_装饰器_高阶函数的使用_01

登陆验证代码. 1 #用户验证功能,不修改源代码,使用装饰器. 2 user_dic={'username':None,'login':False} #定义全局变量 3 4 def auth_func(func): 5 def wrapper(*args,**kwargs): 6 if user_dic['username'] and user_dic['login']: 7 res = func(*args, **kwargs) 8 return res 9 user_name = input

【react】---react中使用装饰器(高阶组件的升级用法)

一.creact-react-app中使用装饰器 运行 npm run eject 可以让由create-react-app创建的项目的配置项暴露出来 此时,项目中多了一个config文件,并且各个配置文件已经暴露出来了.(运行npm run eject之前,保证本地没有待提交到git的文件) 安装babel插件npm install --save-dev @babel/plugin-proposal-decorators 修改package.json文件的babel配置项 "babel&quo

python-函数&高阶函数&嵌套函数&装饰器

学习随笔: 简单介绍: 函数:函数即变量高阶函数:1.把一个函数名当做一个实参传给一个参数 2.返回值中包含函数名嵌套函数:函数内部再次定义函数装饰器:装饰器就是函数,是为了给其他函数添加功能 原则上不能改变被装饰函数的源代码,不能修改装是函数的调用方式 高价函数+嵌套函数=装饰器 代码如下:1.函数 1 #函数 2 def foo(name):#定义一个函数 3 print('is this foo name:',name) 4 foo('FOO') #函数foo的调用 5 foo2=foo

Go的魅力, 函数式(柯里化, 闭包, 高阶函数), [email protected]装饰器, 封装

Go朴实无华的代码风格是函数式的无尽魅力. 函数式有3个别名, 高大上的"柯里化", 编程语言的"闭包", 数学气息的"高阶函数". Python没有Go的func匿名函数, 但是具有可爱的语法糖(@装饰器). 编程语言都是相通的, 层层封装造就了灵活的风格. 理解了Go的"函数式", 再理解内嵌/接口/重写(设计模式), 剩下的是各个领域的工具了, 就可以写出服务于业务的代码. 感悟于 函数式 http://www.jian

python之装饰器、生成器、内置函数、JSON

一.装饰器: 装饰器,器在这里的意思是函数,也就是装饰函数.作用是给其他函数添加新功能,它可以不改变原有的函数,原来的函数和原来一模一样,什么都不需要改变,只需要在函数外部加上调用哪个装饰器就可以了,装饰器的作用就是不改变原来函数的调用方式,不改变原来函数的代码,给它增加了一个新功能.但是不改变函数,给它增加新功能,那是不可能的,装饰器只不过是偷偷改变了原来的函数而已,而原来的函数不知不觉. 学习装饰器前的知识储备: 1.函数即变量,在python里面函数就是一个变量,函数名就是变量名,函数名里

python学习--装饰器、生成器、内置函数、json

这周学习了装饰器和生成器,写下博客,记录一下装饰器和生成器相关的内容. 一.装饰器 装饰器,这个器就是函数的意思,连起来,就是装饰函数,装饰器本身也是一个函数,它的作用是用来给其他函数添加新功能,比如说,我以前写了很多代码,系统已经上线了,但是性能比较不好,现在想把程序里面每个函数都加一个功能,用来统计每个函数的运行时间是多少,找出来运行比较慢的函数,来优化代码,就需要添加一个新的功能,来统计程序的运行时间,那这样的话,就得修改每个函数了,需要改代码,但是代码特别多,改完了公司倒闭了,这时候装饰

python学习笔记(五):装饰器、生成器、内置函数、json

这周学习了装饰器和生成器,写下博客,记录一下装饰器和生成器相关的内容. 一.装饰器 装饰器,这个器就是函数的意思,连起来,就是装饰函数,装饰器本身也是一个函数,它的作用是用来给其他函数添加新功能,比如说,我以前写了很多代码,系统已经上线了,但是性能比较不好,现在想把程序里面每个函数都加一个功能,用来统计每个函数的运行时间是多少,找出来运行比较慢的函数,来优化代码,就需要添加一个新的功能,来统计程序的运行时间,那这样的话,就得修改每个函数了,需要改代码,但是代码特别多,改完了公司倒闭了,这时候装饰

python 培训第三章 ,函数,装饰器,模块,内置函数之一函数

目录: 函数示例装饰器模块内置函数一.函数示例: 1.定义函数: def fun(args): '描述信息' 函数体 return 返回值 定义函数的三种形式: 无参函数def foo():print('in the foo') foo() 有参函数: def bar(x,y): print('in the bar') bar(1,2) 空函数: def func(): pass 空函数的应用示例: def put():pass def get():pass def cd():pass def

PYTHON学习0026:函数---嵌套函数和作用域----2019-6-19

1.函数定义后,只要没调用,其内部代码永远不会执行.2.函数内部可以再定义函数3.嵌套函数里有变量时,先在本级函数作用域找函数值,没有则逐级往上找.(本级--父级--爷爷级--....-全局),找到了则就不继续再往上找了. 作用域:一.在PYTHON中,一个函数就是一个作用域,函数定义完成后,作用域已经生成,以后不管在哪里调用,作用域不变. 原文地址:https://blog.51cto.com/13543767/2411285