第四章笔记

1、并行迭代————内置函数zip()

>>> names = ['ame','burning','yyf','longdd','dd']
>>> ages = [22,23,24,25,26]
>>> for name,age in zip(names,ages):
        print(name,' is ',age,' years old.')    
ame  is  22  years old.
burning  is  23  years old.
yyf  is  24  years old.
longdd  is  25  years old.
dd  is  26  years old.
#当两个序列长度不同时,以最短序列用完就停止

方法enmuerate()能迭代索引-值对,索引起始值可选

>>> w = ['q','w','e','r','t']
>>> for index,i in enumerate(w):   #默认从0开始
        print(index,i)  
0 q
1 w
2 e
3 r
4 t

>>> for index,i in enumerate(w,2):   #索引起始值为2
        print(index,i)    
2 q
3 w
4 e
5 r
6 t

2、关于exec和eval
函数exec将字符串作为代码执行

>>> exec("print('Hello, world!')")  #注意符号
Hello, world!

pass

3、判断某个对象能否调用,用内置函数callable

>>> import math
>>> x = 1   #不是函数
>>> y = math.sqrt
>>> callable(x)
False
>>> callable(y)
True

4、文档字符串

>>> def square(x):
        'Calculates the square of the number x'
        return x*x
>>> square.__doc__
'Calculates the square of the number x'

5、收集参数
* 收集多余的值组成一个元组,若没有可供收集的参数,就创建一个空元组(* 不收集关键字参数)

>>> def param(x,*y,z):
        print(x,y,z)
>>> param(1,2,3,4,5,6,z=7)
1 (2, 3, 4, 5, 6) 7

** 收集关键字参数,返回一个字典

>>> def pa(**c):
        print(c)
>>> pa(q=1,w=2,e=3)
{'q': 1, 'w': 2, 'e': 3}
  • 和 ** 可以组合使用:
>>> def gaa(x,y,z=3,*one,**two):
        print(x,y,z,one,two)
>>> gaa(1,3,2,11,22,33,f=11,d=22,g=33)
1 3 2 (11, 22, 33) {'f': 11, 'd': 22, 'g': 33}

6、作用域
变量可以视为指向值的名称,如执行赋值语句x=1后,变量x指向值1。这类似于字典,但是这是一个“ 看不见的字典 ”。这种“ 看不见的字典 ” 称为命名空间或者作用域。除了全局作用域外,每个函数调用都将创建一个。
若想在函数中访问全局变量,如下:

>>> def combine(parameter):
        print(parameter + external)
>>> external = 'berry'
>>> combine('straw')
strawberry

虽然可以读取全局变量的值,但是这样访问全局变量是众多BUG的根源,务必谨慎使用
当局部变量和要访问的全局变量同名时,全局变量会被局部变量遮挡,导致无法访问,这时要使用globals(),它返回一个包含全局变量的字典(locals返回一个包含局部变量的字典)

>>> def com(parameter):
        print(parameter + globals()['parameter'])
>>> parameter = 'berry'
>>> com('straw')
strawberry

7、作用域嵌套
嵌套:一个函数放在另一个函数内,多用于使用一个函数来创建另一个函数。

>>> def multiplier(factor):
        def multiplyByFactor(number):
            return number ** factor
        return multiplyByFactor
>>> double = multiplier(2)
>>> double(3)
9
>>> double(5)
25

这里外面的函数返回里面的函数,返回的结果是一个函数
重要的是,返回的函数能够访问其定义所在的作用域,即它携带着自己所在的环境和相关的局部变量。
每当外部函数被调用时,都将重新定义内部的函数,而变量factor的值也可能不同。
闭包
pass

内容概要:本文深入探讨了Kotlin语言在函数式编程和跨平台开发方面的特性和优势,结合详细的代码案例,展示了Kotlin的核心技巧和应用场景。文章首先介绍了高阶函数和Lambda表达式的使用,解释了它们如何简化集合操作和回调函数处理。接着,详细讲解了Kotlin Multiplatform(KMP)的实现方式,包括共享模块的创建和平台特定模块的配置,展示了如何通过共享业务逻辑代码提高开发效率。最后,文章总结了Kotlin在Android开发、跨平台移动开发、后端开发和Web开发中的应用场景,并展望了其未来发展趋势,指出Kotlin将继续在函数式编程和跨平台开发领域不断完善和发展。; 适合人群:对函数式编程和跨平台开发感兴趣的开发者,尤其是有一定编程基础的Kotlin初学者和中级开发者。; 使用场景及目标:①理解Kotlin中高阶函数和Lambda表达式的使用方法及其在实际开发中的应用场景;②掌握Kotlin Multiplatform的实现方式,能够在多个平台上共享业务逻辑代码,提高开发效率;③了解Kotlin在不同开发领域的应用场景,为选择合适的技术栈提供参考。; 其他说明:本文不仅提供了理论知识,还结合了大量代码案例,帮助读者更好地理解和实践Kotlin的函数式编程特性和跨平台开发能力。建议读者在学习过程中动手实践代码案例,以加深理解和掌握。
内容概要:本文深入探讨了利用历史速度命令(HVC)增强仿射编队机动控制性能的方法。论文提出了HVC在仿射编队控制中的潜在价值,通过全面评估HVC对系统的影响,提出了易于测试的稳定性条件,并给出了延迟参数与跟踪误差关系的显式不等式。研究为两轮差动机器人(TWDRs)群提供了系统的协调编队机动控制方案,并通过9台TWDRs的仿真和实验验证了稳定性和综合性能改进。此外,文中还提供了详细的Python代码实现,涵盖仿射编队控制类、HVC增强、稳定性条件检查以及仿真实验。代码不仅实现了论文的核心思想,还扩展了邻居历史信息利用、动态拓扑优化和自适应控制等性能提升策略,更全面地反映了群体智能协作和性能优化思想。 适用人群:具备一定编程基础,对群体智能、机器人编队控制、时滞系统稳定性分析感兴趣的科研人员和工程师。 使用场景及目标:①理解HVC在仿射编队控制中的应用及其对系统性能的提升;②掌握仿射编队控制的具体实现方法,包括控制器设计、稳定性分析和仿真实验;③学习如何通过引入历史信息(如HVC)来优化群体智能系统的性能;④探索中性型时滞系统的稳定性条件及其在实际系统中的应用。 其他说明:此资源不仅提供了理论分析,还包括完整的Python代码实现,帮助读者从理论到实践全面掌握仿射编队控制技术。代码结构清晰,涵盖了从初始化配置、控制律设计到性能评估的各个环节,并提供了丰富的可视化工具,便于理解和分析系统性能。通过阅读和实践,读者可以深入了解HVC增强仿射编队控制的工作原理及其实际应用效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值