函数进阶

1.2 Spring AI V1.1.2版本 架构全景:模块拆解与设计哲学 Override// 检查请求的 Token 数量throw new TokenLimitExceededException("请求超出 Token 限制");@Override// 记录实际消耗的 Token@Override// 最先执行// 接口// 不同实现// 使用方无需改变定义抽象,保证可移植性提供 Fluent API,提升开发体验Advisor 机制提供扩展点,支持灵活定制模块化设计让你只引入需要的依赖自动配置。 阅读详情

1.函数的参数传递

参数定义与传递的基本顺序

   位置函数 -> 关键字参数 -> 可变数量参数
         *args --> **args
对于*args和**args在函数中我们称之为参数组,但是这两个还是有区别的
  1.*args的功能:接收N个位置参数,转换成元组tuple形式
  2.**args的功能:接收N个关键字参数,转换成字典dict形式
  3.位置参数一定要在关键字参数之前,也就是(*args,**args)

>>> def fun1(a,b=6,*c,**d):
        print("a =",a,",b = ",b,",c =",c,",d =",d)

>>> fun1(1)
a = 1 ,b =  6 ,c = () ,d = {}
>>> fun1(1,2)
a = 1 ,b =  2 ,c = () ,d = {}
>>> fun1(1,2,3)
a = 1 ,b =  2 ,c = (3,) ,d = {}
>>> fun1(1,2,3,4)
a = 1 ,b =  2 ,c = (3, 4) ,d = {}
>>> fun1(1,2,3,4,5)
a = 1 ,b =  2 ,c = (3, 4, 5) ,d = {}

>>> fun1(a=1)
a = 1 ,b =  6 ,c = () ,d = {}
>>> fun1(a=1,b=3)
a = 1 ,b =  3 ,c = () ,d = {}
>>> fun1(a=1,b=3,c=3)
a = 1 ,b =  3 ,c = () ,d = {'c': 3}
>>> fun1(a=1,b=3,d=3)
a = 1 ,b =  3 ,c = () ,d = {'d': 3}
>>> fun1(a=1,b=3,c=3,d=5)
a = 1 ,b =  3 ,c = () ,d = {'c': 3, 'd': 5}

>>> fun1(1,2,3,4,x=5)
a = 1 ,b =  2 ,c = (3, 4) ,d = {'x': 5}

>>> fun1(1,2,3,4,5,b=3,c=3)
Traceback (most recent call last):
  File "<pyshell#29>", line 1, in <module>
    fun1(1,2,3,4,5,b=3,c=3)
TypeError: fun1() got multiple values for argument 'b'
>>> fun1(1,2,3,4,5,b=3)
Traceback (most recent call last):
  File "<pyshell#30>", line 1, in <module>
    fun1(1,2,3,4,5,b=3)
TypeError: fun1() got multiple values for argument 'b'

#位置参数与关键字参数位置颠倒后的结果如下
>>> fun1(c=2,d=12,1,2,3)
SyntaxError: positional argument follows keyword argument

2.函数文档

  函数文档是用来查看当前函数相关信息介绍的一个特定格式。

定义函数文档方法:

def 函数名([参数列表]):
    '''注释'''
    函数体

查看函数文档方法:

help(函数名)
    此方法会直接输出函数文档的内容
 
函数名.__doc__
    直接输出显示函数文档的内容元字符串(可以使用print(函数名.__doc__)来解决无格式问题)

3.lambda匿名函数

lambda表达式

(1) lambda表达式可以用来声明匿名函数,也就是没有函数名称的临时使用的小函数,尤其适合需要一个函数作为另一个函数参数的场合。也可以定义具名函数。
(2) lambda表达式只可以包含一个表达式,该表达式的计算结果可以看作是函数的返回值,不允许包含重复语句,但在表达式中可以调用其他函数。

lambda函数

lambda函数返回函数名作为结果
(1) lambda函数是一种匿名函数,即没有名字的函数。
(2) 使用lambda保留字定义,函数名是返回结果。
(3) lambda函数用于定义简单的、能够在一行内表示的函数。
语法形式如下:
     <函数名> = lambda <参数>:<表达式>
等价于

def <函数名>(<参数>):
    <函数体>
    return <返回值>

例

>>> f = lambda x,y,z:x+y+z        #可以给lambda表达式起名字
>>> f(2,5,8)                      #像函数一样调用
15
>>> g = lambda x,y=2,z=7:x+y+z    #参数默认值
>>> g(1)
10
>>> g(2,z=7,y=9)                  #关键参数
18

4.map 函数

map() 会根据提供的函数对指定序列做映射。
第一个参数function以参数序列中的每一个元素调用function函数,返回包含每次function函数返回值的新列表。
语法为:map(function,iterable,...)
参数:function — 函数;iterable — 一个或多个序列
返回值:Python 2.x 返回列表
        Python 3.x 返回迭代器
例:

>>> def square(x):
	return x ** 2

>>> map(square,[1,2,3,4,5,6])
<map object at 0x03C0AC10>
>>> list(map(square,[1,2,3,4,5,6]))
[1, 4, 9, 16, 25, 36]

#使用lambda匿名函数
>>> map(lambda x:x ** 2,[1,2,3,4,5,6,])
<map object at 0x03C0AC10>
>>> list(map(lambda x:x ** 2,[1,2,3,4,5,6,]))
[1, 4, 9, 16, 25, 36]

#提供两个列表,对相同位置的列表数据进行相加
>>> list(map(lambda x,y:x + y,[1,3,5,7,9],[2,4,6,8,10]))
[3, 7, 11, 15, 19]

5.filter 函数

filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
  该函数接收两个参数,第一个为函数,第二个为序列,序列中的每个元素作为参数传递给函数进行判断,然后返回 True 或 False ,最后将返回 True 的元素放到新列表中。
语法为:filter(function,iterable)
参数:function — 函数,只能接收一个参数,且返回值是 True 或 False
   iterable — 可迭代对象
返回值:Python 2.7 返回列表
        Python 3.x 返回迭代器对象
例:

>>> def is_odd(n):
	return n % 2 == 1

>>> newlist = filter(is_odd,[1,2,3,4,5,6,7,8,9,10])
>>> print(newlist)
<filter object at 0x03C0AF70>
>>> print(list(newlist))
[1, 3, 5, 7, 9]

6.zip 函数

zip() 函数用于将可迭代对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用*号操作符,可以将元组解压为列表。
语法为:zip([iterable,...])
参数:iterable — 一个或多个迭代器
返回值:返回元组、列表
例:

>>> a = [1,2,3] 
>>> b = [4,5,6]
>>> zip(a,b)
<zip object at 0x009A0698>
>>> list(zip(a,b))
[(1, 4), (2, 5), (3, 6)]

#与 zip 相反,*zipped 可理解为解压,返回二维矩阵式
>>> a = [1,2,3]	 
>>> b = [4,5,6]
>>> zipped = zip(a,b)
>>> list(zip(*zipped))
[(1, 2, 3), (4, 5, 6)]

7.enumerate 函数

enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环中。
Python 2.3.以上版本可用,Python2.6 添加 start 参数。
语法为:enumerate(sequence,[start=0])
参数:sequence — 一个序列、迭代器或其他支持迭代对象
   start — 下标起始位置
返回值:返回enumerate(枚举) 对象
例:

>>> seasons = ['Spring','Summer','Fall','Winter']	 
>>> list(enumerate(seasons))		 
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]

>>> list(enumerate(seasons,start=1))
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]

8.reduce 函数

reduce() 函数会对参数序列中元素进行积累。
函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:
  用传给 reduce 中的函数 function (有两个参数)先对集合中的第1、2个元素进行操作,得到的结果再与第3个数据用 function 函数运算,最后得到一个结果。
语法为:reduce(function,iterable[,initializer])
参数:function — 函数,有两个参数
   iterable — 可迭代对象
   initializer — 可选,初始参数
返回值:返回函数计算结果
*在Python3 中,reduce() 函数已经被从全局名字空间里移除了,它现在被放置在 functools 模块里,如果你想使用它,则需要通过引入 functools 模块来调用reduce() 函数:
      from functools import reduce
例:

>>> from functools import reduce
>>> def add(x,y):
	return x + y

>>> reduce(add,[1,2,3,4,5])
15

>>> from functools import reduce
>>> reduce(lambda x,y: x+y,[1,2,3,4,5])
15

>>> from functools import reduce
>>> def add(x,y):
	return x + y

>>> print(reduce(add,range(1,100)))
4950

相关内容有来自于:1.python基础–参数组*args和**kwargs的区别
         2.python 函数文档

【已解决】飞牛nas(fnOS)异常断电导致硬盘未挂载(无法挂载),系统内部错误修复、救回数据全流程!(含更新系统后外接 NTFS 格式硬盘丢失的修复方法) fnOS 飞牛NAS遭遇非正常断电后,存储空间显示「未挂载」或更新系统后外接 NTFS 格式硬盘丢失,点击挂载提示「系统内部错误」!💥 博主已经完美恢复,本文记录了相关的解决方案,帮您恢复或最大程度保住重要数据🎉 阅读详情

相关推荐

Kafka延迟队列实现方案全解析

$ \text{时间轮} = \text{环形数组} + \text{分层设计} $$需要补充代码实例或特定场景的优化方案可进一步细化,此大纲已覆盖核心技术路径。

lz989796的博客 817

Python关键字个数可变的位置传参与个数可变的关键字传参

Python的三种可变参数 单个星号表示这个位置接收任意多个非关键字参数,并将其转换为元组 双星号代表这个位置接收任意多个关键字参数,并将其转换为字典 *arg的功能:接收N个位置参数,转换为元组形式 def add(*args): print(args) add(1, 2, 3) (1, 2, 3) **args的功能:接收N个关键字参数,并将其转换为字典格式 def add2(**kwargs): print(kwargs) add2(k1=1,k2=2,k3=3) {'

冰点契约的博客 534

ESP32-S3 + TB6600驱动42步进电机:从基础接线到AccelStepper库平滑加减速实战

本文详细介绍了如何使用ESP32-S3开发板和TB6600驱动器控制42步进电机,从基础接线到利用AccelStepper库实现平滑加减速控制。内容涵盖硬件连接、基础驱动代码、AccelStepper库的安装与参数调优,以及高级技巧与故障排除,帮助创客实现工业级精准控制。

weixin_42632434的博客 283

JavaScript进阶(四)- 函数进阶

2021.2.6 文章目录JavaScript进阶(四)函数进阶函数的定义和调用函数的定义方式函数的调用方式this函数内this的指向改变函数内部this指向call()、apply()、bind()总结严格模式什么是严格模式开启严格模式严格模式中的变化高阶函数闭包变量作用域什么是闭包闭包案例递归什么是递归利用递归求数学题浅拷贝和深拷贝 JavaScript进阶(四) 函数进阶 函数的定义和调用 函数的定义方式 函数声明方式function()关键字(命名函数) 函数表达式(匿名函数) new Fu.

Ludwig1957的博客 500

一种车内UWB圆极化天线的理论推导及具体实现

本文详细描述了一款工作于UWB channel 9也即中心频率为7987.2MHz,带宽为499.2MHz的圆极化天线。首先是理论推导圆极化天线的物理尺寸参数,分析物理尺寸参数对天线性能指标的影响。然后分析圆极化天线在汽车驾驶室这种狭窄空间应用中带来的优势,也即可以最大化的极化损失多径,提高主径接收信号的信噪比。

weixin_44555637的博客 2965

微信小程序实现锚点效果 scroll-view的scroll-into-view属性

小程序中实现锚点效果,可以直接使用scroll-view的scroll-into-view属性就可以实现锚点效果,比较方便简单。那么需要用到scroll-view那些参数呢,下面具体讲讲:效果展示: wxml **注意:**viewid值是动态的,通过setData设置即可。js wxss......

FaxMiao的博客 5449

内置函数map()

功能:map()会根据提供的函数对指定序列做映射。map()的两个参数一个是函数名,另一个是列表或元组。处理后的结果,是一个列表 元素位置未改动 map函数中第二个传的参数 只要是可迭代对象就行 语法 map() 函数语法: map(function, iterable, ...) 参数 function -- 函数 iterable -- 一个或多个序列 1.需...

weixin_30425949的博客 524

Python蓝色跳动的爱心(完整代码)

Python语言实现蓝色跳动的爱心的完整代码。 代码分析 这段代码使用了 库来创建一个动态的爱心图案,并在屏幕上显示带有动态效果的“我爱你”字样。以下是对这段代码的详细分析: 用于创建图形用户界面(GUI)。 用于生成随机数,主要用于控制爱心图案的扩散效果。 中的 , , , 用于数学计算,生成爱心形状和扩散效果。 包含了 等常量,用于控制控件的对齐方式。 2. 全局变量定义 , : 定义画布的大小。 , : 爱心的中心坐标。 : 用于定义爱心形状的缩放

AIGC 1918

python 中map()函数的使用方法(重点)_python map函数(23)

https://www.xin3721.com/eschool/pythonxin3721/截至到目前为止,其实我们已经接触了不少的python内置函数,而map函数也是其中之一,map函数是根据指定函数对指定序列做映射,在开发中使用map函数也是有效提高程序运行效率的办法之一.一.语法定义'''function:函数名iterable:一个序列或者多个序列,实际上这就是function对应的实参...

weixin_32247455的博客 887

Open3D 基于法线的双边滤波

基于法线的双边滤波是一种用于点云平滑的技术,它结合了点与其邻域点之间的几何距离和法线方向的相似性,从而在去除噪声的同时保留几何特征。这种滤波方法广泛应用于点云处理领域,尤其是在需要保留表面细节和边缘的场景中。

纵马踏花向自由 2500

lammps教程:官方自带eam_database程序拟合EAM势方法介绍

使用lammps模拟金属体系,最常用的势函数为eam、meam势。 对于大多数金属或者合金来说,可以从网上下载相对应的eam或meam势力场文件。 而对于一些新的合金材料,可能就找不到相对应的力场文件。 解决的方法有两种,一是采用混合势(pair_style hybrid),第二种方法是自己拟合势函数文件。 混合势的写法在前面文章中已经介绍过,本文介绍一种拟合EAM势的方法。 该方法是运行Xiaowang Zhou编写的一个拟合程序,该程序可自动生成所需要的合金势。 这个程序能够拟合的合金元素有: Cu,

lammps_jiayou的博客 4614

诺,你们要的Python进阶来咯!【函数、类进阶必备】

目录 一、Python进阶初体验——内置函数 1、数据类型相关 2、数值计算相关 3、bool 值判断相关 4、IO 相关 5、元数据相关 6、help()函数 7、sorted()函数 8、range()函数 二、给代码安个家——函数进阶 1、位置参数 2、参数默认值 3、关键字参数 4、任意参数列表 5、多返回值 三、让你函数更好用——类进阶 1、类属性和类方法 (1)类属性的定义 (2)类方法的定义 2、静态方法 3、私有属性、方法 4、特殊方法 5、类的

累计发表博客60余万字,优快云 博客专家、Java 领域优质创作者、华为云享专家、阿里云专家博主。专注分享 Java 优质文章,毕设实战项目开发,全网粉丝10W+ 1万+

神经进化实践:用遗传算法替代反向传播优化神经网络

神经进化用来定义应用于深度学习的特定优化模式。在本节中,我们通过遗传算法优化简单深度学习网络的权重/参数,替换在误差反向传播训练过程中的所用优化器。

盼小辉丶的博客 3615

Python函数进阶

函数进阶 目标 函数参数和返回值的作用 函数的返回值 进阶 函数的参数 进阶 递归函数 01. 函数参数和返回值的作用 函数根据 有没有参数 以及 有没有返回值,可以 相互组合,一共有 4 种 组合形式 无参数,无返回值 无参数,有返回值 有参数,无返回值 有参数,有返回值 定义函数时,是否接收参数,或者是否返回结果,是根据 实际的功能需求 来决定的! 如果函数 内部处理的数据不确...

新海说 369

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an &ldquo;advanced algorithms&rdquo; book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

函数进阶版

必须保证带有默认值的缺省参数在参数列表末尾所以,以下定义是错误的!有时可能需要一个函数能够处理的参数个数是不确定的,这个时候,就可以使用多值参数python中有两种多值参数:参数名前增加一个可以接收元组参数名前增加两个可以接收字典一般在给多值参数命名时,习惯使用以下两个名字*args—— 存放元组参数,前面有一个**kwargs—— 存放字典参数,前面有两个args是arguments的缩写,有变量的含义kw是keyword的缩写,kwargs可以记忆键值对参数print(num)

weixin_58423196的博客 786

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

JavaScript高级 函数进阶篇

相同点:都可以改变函数内部this指向;区别点:(1)、call()和apply()会调用函数,并且改变函数内部this指向;(2)、call()和apply()传递的参数不一样,call()传递参数arg1 、arg2… ,apply()必须是数组形式[arg];(3)、bind()不会调用函数,可以改变函数内部this指向;主要应用场景:(1)、call()经常做继承;(2)、apply()经常跟数组有关系,比如借助于数学对象实现数组最大值最小值;

qq_57162921的博客 1385

python函数进阶

1.函数的进阶 *的魔性用法 # *的魔性用法: (函数中) def func(*args,**kwargs): print(args) # (1, 2, 3,'太白', 'wusir', '景女神') print(kwargs) l1 = [1, 2, 3] l2 = ['太白', 'wusir', '景女神'] func(l1,l2) func(*l1,*l2) # ...

weixin_34124651的博客 206

python函数进阶及作业

​return a+b2.定义函数,接受三个参数:姓名、年龄、职业,然后打印出一个介绍信息,如“姓名:张三,年龄:25,职业:工程师”。print(f"姓名:{name},年龄:{age},职业{career}")a ( "张三", 25, "工程师")3.接收一个列表,返回这个列表的最大值 平均值 最小值4.输入一个包含若干整数的列表,输入列表的最大值,列如输入【1,2,3,4,6666】,输出6666。

annsksmd的博客 1051

C++函数进阶

函数进阶 using 指令尽量不要出现在头文件中 因为在预编译的过程中,所有引用该头文件的文件都会再次申明出现这条using指令 顶层const和底层const 由于指针本身是一个对象,所以指针所指向的对象是不是常量和指针变量本身是不是常量是两个问题: 顶层const是指指针本身是一个常量,申明一个常量指针可以通过以下方式: int a = 1; int *const var = &amp;a; //此处报错,表达式必须是可修改的左值 var = 0; 底层const是指指针所指向的对象是一个常量

yp010425的博客 310

09Python函数进阶

函数根据以及,可以,一共有组合形式。

dotnethello的博客 939

函数进阶.

目标:掌握函数相关易错点 & 项目开发必备技能。 今日概要: - 参数的补充 - 函数名,函数名到底是什么? - 返回值和print,傻傻分不清楚。 - 函数的作用域

Blk628lxy的博客 1056

python函数基础及进阶

python函数的基础及进阶分享

qq_52758588的博客 1068

Python 函数 基础及其进阶

初学者Python入门,函数的基础及其进阶的基本语法和知识点

Yean666的博客 1095
上一篇: Python calendar库的使用
下一篇: Python 集合与字典
MuZLL17
博客等级 码龄8年 42粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值