python_005_匿名函数,闭包函数,递归函数

一.匿名函数

#匿名函数:帮助开发人员完成简单的业务处理逻辑"""语法lambda 参数1, 参数2, 参数3...: 函数体注意函数体内部代码只能存在一句表达式,如果该表达式计算之后有结果,此时该结果作为匿名函数的返回值返回给外界"""
#fun1 = lambda x, y, **kwargs: max(x, y)#num = fun1(1,2)#print(num)

二.闭包函数

#闭包函数"""两个函数A,B,如果函数B在函数A内部定义,并且B作为函数A的返回值返回给外界,此时B称为A的闭包函数闭包函数的作用:闭包函数可以延迟局部变量被系统回收的时间,保证变量可以根据用户的需求动态的使用"""import random#函数Adef getRandomSum(min, max, num):    list1 = [random.randint(min, max) for i in range(num)]    print(list1)    #函数B    def getSum():        print(list1)        return sum(list1)

    return getSum

#调用函数A,此时函数A执行完之后会返回一个闭包函数Bfun1 = getRandomSum(10,50,5)print(fun1())

三.递归函数

#递归函数"""递归函数的定义:在函数A内部调用一个和函数A同名的函数,此时函数会根据内部代码的实现完成任务的逐层递交注意:1、递归函数首先完成的是任务测逐层递交,因此任务递减必须能够终止2、其次任务执行会从最后一次开始,逐层向上执行,直到最外层调用结束"""#求5的阶乘def jiecheng(n):    if n == 1:        return 1    else:        return n*jiecheng(n-1)

print(jiecheng(5))
四 回掉函数(先进再出)"""A,B两个函数,B函数作为A函数调用时的一个参数被传入到A函数内部,在A内部调用B函数,此时B函数称为A函数的回掉函数回掉函数一般情况下会作为主函数A的一个条件传入,目的是对A函数产生的结果做出处理,从而实现对A函数功能的扩充"""# 定义A函数(完成对所有可迭代数据的遍历)def mapList(data, fun):#fun是一个函数    for item in data:        fun(item)#调用函数

#回掉函数B(输出遍历得到的元素)def outPut(num):    print(num)

#定义回掉函数完成求列表数据的和sum_num = 0def sumNum(num):    global sum_num    sum_num += num

mapList(range(1, 10), outPut)#函数B相当于fun中的参数,在函数A中被调用mapList(range(1,10), sumNum)#内部函数被外界调用,回掉函数完成求列表数据的和
print(sum_num)
五,装饰器"""装饰器的作用:在不改变原函数任何代码情况下对原函数功能进行升级"""# 定义函数完成对参与运算的数据类型的比对import functools#functools 作用于函数的函数 functools 模块提供用于调整或扩展函数和其他可调用对象的工具def adjust(fun):    # 将被修饰函数的名字绑定给wrapper    @functools.wraps(fun)    def wrapper(*args, **kwargs):#闭包(可变参数,命名关键字参数)        kind = type(args[0])#类型判断        or_common = True        for item in args:            if kind != type(item):                or_common = False                break        if or_common:            return fun(*args, **kwargs)        else:            print(‘数据类型不匹配,无法完成运算‘)            return None    return wrapper"""@adjust在修饰qiuhe函数时等价于qiuhe = adjust(qiuhe)#外部求和qiuhe==fun#装饰器调用#fun==wrapper==qiuhe
"""@adjustdef qiuhe(num1, num2, num3):    return num1+num2+num3

print(qiuhe.__name__)#求和的名字# qiuhe = adjust(qiuhe)

@adjustdef qiucha(num1, num2):    return num1-num2@adjustdef qiuji(num1, num2):    return num1*num2

print(qiuhe(10,"30", 30))
import functools#带参数装饰器def logs(log):    def adjust(fun):        print(log)        @functools.wraps(fun)        def wrapper(*args, **kwargs):            kind = type(args[0])            or_common = True            for item in args:                if kind != type(item):                    or_common = False                    break            if or_common:                return fun(*args, **kwargs)            else:                print(‘类型不匹配‘)                return None        return wrapper    return adjust

@logs(‘当前运行的是第22行代码‘)def qiuhe(*args):    num_sum = 0    for item in args:        num_sum += item    return num_sum# 带参数的装饰器修饰函数时等价于# qiuhe = logs(‘当前运行的是第22行代码‘)(qiuhe)print(qiuhe(10,20,30,40))
 

原文地址:https://www.cnblogs.com/t-a-n-g-124798/p/11236616.html

时间: 2024-10-05 09:36:25

python_005_匿名函数,闭包函数,递归函数的相关文章

速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数

[源码下载] 作者:webabcd 介绍速战速决 之 PHP 函数基础 函数参数 函数返回值 可变函数 匿名函数 闭包函数 回调函数 示例1.函数的相关知识点 1(基础)function/function1.php <?php /** * 函数的相关知识点 1(基础) */ // 可以在相关的 function 声明语句之前调用该函数 f1(); function f1() { echo "f1"; echo "<br />"; } // 这里调用

PHP匿名函数(闭包函数)详解_php技巧 - PHP

文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 在PHP中匿名函数(Anonymous functions),也叫闭包函数( closures ),允许临时创建一个没有指定名称的函数.经常用作回调函数(callback)的参数. 当然,也有其他应用的情况. 注:php闭包是PHP5.3版本之后才有的 什么是闭包?闭包是可以包含自由(未绑定到特定对象)变量的代码块:这些变量不是在这个代码块内或者任何全局上下文中定义的,而是在定义代码块的环境中定义(局部变量).“闭包

匿名与闭包函数

一.匿名函数写法  最常见的用法: (function() {   alert('water');})(); 当然也可以带参数: (function(o) {     alert(o); })('water'); 想用匿名函数的链式调用?很简单: (function(o) {    alert(o);     return arguments.callee;})('water')('down'); 二.匿名函数后面小括号表示执行1.没有弹出框 <script language="javas

函数-闭包函数

闭包函数: 内部函数引用外部函数而非全局作用域的变量,该内层函数称为闭包函数 闭包好处:若python检测到闭包,局部作用域不会随着函数的结束而关闭,会一直在内存中. 这才是闭包函数最常用的用法:爬虫,装饰器 def func(): name = 'eva' def inner(): print(name) return inner f = func() f() 判断闭包函数的方法__closure__ #输出的__closure__有cell元素 :是闭包函数 def func(): name

PHP函数(六)-匿名函数(闭包函数)

匿名函数能够临时创建一个没有名称的函数,常用作回调函数参数的值 <?php $test = function($a){ echo "Hello,".$a; }; $test("world"); ?> 一定要在匿名函数的结尾处加上分号 执行结果 回调函数将匿名函数做参数 <?php function callback($a){ $a(); } callback(function(){ //声明一个匿名函数并传给callback()函数 echo &q

PHP 闭包函数 Closures 匿名函数

/*  * 匿名函数   * 闭包函数(closures)  * 依靠匿名函数实现闭包  * 子函数可以使用父函数中的局部变量,这种行为就叫做闭包  * 连接闭包和外界变量的关键字 use  * 闭包的两个特点  * 1.作为一个函数变量的一个引用,当函数返回时,其处于激活状态.  * 2.一个闭包就是当一个函数返回时,一个没有释放资源的栈区.  * 闭包函数返回时,该函数内部变量处于激活状态,函数在栈区依然保留.  *   * 总结  * 1.闭包外层是个函数  * 2.闭包内部都有函数  *

Swift语法基础入门三(函数, 闭包)

Swift语法基础入门三(函数, 闭包) 函数: 函数是用来完成特定任务的独立的代码块.你给一个函数起一个合适的名字,用来标识函数做什么,并且当函数需要执行的时候,这个名字会被用于“调用”函数 格式: func 函数名称(参数名:参数类型, 参数名:参数类型...) -> 函数返回值 { 函数实现部分 } 没有参数没有返回值 可以写为 ->Void 可以写为 ->() 可以省略 Void.它其实是一个空的元组(tuple),没有任何元素,可以写成() func say() -> V

闭包函数、无参装饰器2

一.闭包函数 闭包函数:函数内部定义函数,成为内部函数.该内部函数包含对外部作用域,而不是对全局作用域名字的引用,那么该内部函数成为闭包函数. name='alex' #定义全局变量name='alex' def func(): name='egon' #定义局部变量name='egon' def bar(): print(name) return bar #返回bar函数名 b=func() #执行func()结果为bar的函数名 相当于b=bar name='haha' #重新定义全局变量n

&lt;04day&gt;_函数嵌套--闭包函数--装饰器--迭代器--生成器

一.函数的嵌套定义 1.python函数支持嵌套 def f1(): #f1函数的定义 def f2(): #f2函数的定义 print('from f2') def f3(): #f3函数的定义 print('from f3') f2() f1() 嵌套函数--运行结果说明: 1首先调用f1()结果,f1函数为空.担保函f2函数,f2函数有内容打印并且有调用,f2函数包含f3函数,但f3函数无调用. 运行结果: 列子:多个数据之间的大小比较. #!/usr/bin/python # -*- c