日报5.11

本文深入探讨了高阶函数的概念,包括函数作为参数和返回值的特性,并详细解析了闭包的定义及其三个核心特征。通过实例展示了局部变量的不同形态及闭包在实际编程中的应用。

高阶函数

什么是高阶函数

1,接收的参数,是一个函数名(是一个函数的引用)

2,函数的返回值,是一个函数名

满足任一条,就是高阶函数

情况一

"""
高阶函数之,函数接收的参数是一个函数名
"""

def eat():
    print('吃肉')


def func(f):
    # f = eat
    f()  # eat()
    
func(eat)

情况二

"""
高阶函数之,函数的返回值是一个函数名
"""
def run():
    print('在跑')

def eat():
    print('吃肉')
    return run


r = eat()  # r = run
r()  # run()

函数名的本质

函数名本质就是一个标识符

函数体才是函数的本体

函数名会指向函数本体

如果把一个函数名赋值给另一个变量

那么通过这个变量加上括号

也可以调用函数

1557449949935

例子

def func():
    print('这是func函数')

m = func
m()

n = m
n()

f = n
f()

C:\Users\python_hui\Anaconda3\python.exe G:/untitled2/43/t1高阶函数/main.py
这是func函数
这是func函数
这是func函数

Process finished with exit code 0

函数的嵌套

函数里面定义函数

"""
函数的嵌套
"""

def cat():
    def run():
        print('在跑')
    run()

cat()

闭包

首先给出闭包函数的必要条件:

  • 闭包函数必须返回一个函数名
  • 闭包函数返回的那个函数必须引用父级函数变量(一般不能是全局变量)

闭包

1,它是一个高阶函数

因为外部的函数返回值是一个函数名(内部函数)

2,它是一个函数的嵌套

外部函数里面又定义了内部函数

3,内部的函数要用到外部函数的局部变量

闭包模型

def outer():
    name = "张三"
    def inner():
        print(name)
    return inner   # 高阶函数

m = outer()
m()

局部变量的两种形态

局部变量的特点

生命,从函数执行,到函数结束

形态1,函数内部直接通过赋值方式定义的变量

它就是一个局部变量

本例中的age就是一个函数中的局部变量

def func():
    age = 18
    print(age)


func()

形态2,通过形参方式接收的数据也是局部变量

本例中的age就是一个局部变量

实参的数据赋给形参的过程

就相当于,在函数的内部定义

age = 18

最终的效果和形态一是一样的

def func(age):
    print(age)

func(18)

外部函数带参数的闭包

def outer(name):
    # name = "吕布"
    def inner():
        print(name)
    return inner

m = outer("吕布")
m()

三层函数闭包

def func():
    name = "李白"
    def outer(name):
        def inner():
            print(name)
        return inner
    return outer

name = "赵云"

f = func()
o = f(name)
o()
def func(age):
    def outer(name):
        def inner():
            print(name)
            print(age)
        return inner
    return outer

f = func(18)
o = f("刘备")
o()
内容概要:本文研究基于SPEA2(Strength Pareto Evolutionary Algorithm 2)的移动机器人路径规划方法,利用该多目标优化算法在复杂环境中寻找最优或近似最优的机器人运动路径。文中详细阐述了SPEA2算法的基本原理及其在路径规划中的具体应用流程,并通过Matlab代码实现仿真验证,展示了算法在避障、路径平滑性和多目标优化方面的有效性。研究结合栅格地图建模,定义了包括路径长度、安全性与能耗在内的多个优化目标,体现了SPEA2在处理多目标冲突问题上的优势。; 适合人群:具备一定Matlab编程基础,从事智能优化算法、机器人路径规划或人工智能相关领域的研究生及科研人员;熟悉进化算法并希望将其应用于实际工程问题的技术开发者。; 使用场景及目标:①掌握SPEA2算法在移动机器人路径规划中的建模与实现方法;②学习如何将多目标优化思想融【移动机器人路径规划】基于SPEA2的移动机器人路径规划研究(Matlab代码实现)入路径规划问题;③为后续研究NSGA-II、MOEA/D等其他多目标算法提供对比基准和技术参考; 阅读建议:此资源以Matlab代码为核心支撑,建议读者结合算法原理部分仔细研读代码实现细节,动手运行仿真案例,深入理解适应度函数设计、非支配解集维护及环境建模的关键步骤,从而全面提升对多目标进化算法在机器人应用中的实践能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值