什么是函数
函数就是对具有一定功能的代码块的封装,实现对代码的复用。
定义函数的规则
1.定义:def 关键词开头,空格之后接函数名称和圆括号()。
2.参数:圆括号用来接收参数。若传入多个参数,参数之间用逗号分割。
参数可以定义多个,也可以不定义。
参数有很多种,如果涉及到多种参数的定义,应始终遵循位置参数、*args、默认参数、**kwargs顺序定义。
如上述定义过程中某参数类型缺省,其他参数依旧遵循上述排序
3.注释:函数的第一行语句应该添加注释。
4.函数体:函数内容以冒号起始,并且缩进。
5.返回值:return [表达式] 结束函数。不带表达式的return相当于返回 None
def 函数名(参数1,参数2,*args,默认参数,**kwargs):
"""注释:函数功能和参数说明"""
函数体
……
return 返回值
函数的参数
定义函数的时候,我们将函数的参数名字和位置确定下来,函数的接口定义就完成了,在使用参数时,除了必选参数外,我们还可以使用默认参数、可变参数和关键字参数,是函数可以处理各种传入的数据。
一、位置参数
1.通过位置进行传参
1 def mymax(x, y): 2 the_max = x if x > y else y 3 return the_max 4 5 m = mymax(10,20) 6 print(m)
2.按照关键字传参
1 def mymax(x, y): 2 the_max = x if x > y else y 3 return the_max 4 5 m = mymax(y=20, x=10) 6 print(m)
3.未知参数和关键字参数混用
*** 未知参数必须在关键字参数前面
*** 一个形参只能赋值一次
1 def mymax(x, y): 2 the_max = x if x > y else y 3 return the_max 4 5 m = mymax(10, y=20) 6 print(m)
二、默认参数
***** 注意!
1 def defult_param(a,l = []): 2 l.append(a) 3 print(l) 4 5 defult_param('alex') 6 defult_param('egon')
['alex']
['alex', 'egon']
三、动态参数
1.按位置的动态传参 *args
1 def mysum(*args): 2 the_sum = 0 3 for i in args: 4 the_sum+=i 5 return the_sum 6 7 the_sum = mysum(1,2,3,4) 8 print(the_sum)
2.按关键字的动态传参 **kwargs
1 def stu_info(**kwargs): 2 print(kwargs) 3 print(kwargs['name'], kwargs['sex']) 4 5 stu_info(name = 'alex',sex = 'male')
四 、动态参数的聚合与打散
在形参前的*表示吧接收到的位置参数聚合成一个元组,**表示把接收到的关键字参数聚合成一个字典,而在实参前*表示把字符串、列表、元组等可迭代对象打散,**表示把字典打散。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术