默认形参和关键字实参,收集参数,命名关键字参数,return自定义返回,全局变量和局部变量,函数名的使用---day10
1.函数定义处(默认形参在函数的定义)
1.1.函数的调用处(关键字实参在函数的调用处)
2.收集参数
1 2 3 4 5 6 7 8 | ( 1 )收集参数: ( 1 ) 普通收集参数 在参数的前面加一个 * ,代表的是普通收集参数 作用:收集多余的没人要的普通实参,构成一个元组 ( 2 )关键字收集参数 在参数的前面加上两个 * ,代表的是关键字收集参数 作用:收集多余的没人要的关键字实参,构成一个字典 |
3.命名关键字参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 命名关键字参数 def func(参数 1 ,参数 2 , * ,参数 3 ): ( 1 ) 在 * 号后面定义的参数是命名关键字参数 def func( * args,参数, * * kwargs): ( 2 ) 在普通收集和关键字收集参数之间的,是命名关键字参数 如果是命名关键字参数,必须使用关键字实参的形式调用 #(1) 定义方式一 def func(a,b, * ,c): print (a,b) print (c) #函数的调用处 #(2)定义方式二 def func( * args,dd, * * kwargs): print (args) print (kwargs) print (dd) |
3.1 关于 * 和 ** 的使用方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 在函数的定义处, * 和 * * 用来接收数据, * 打包成一个元组, * * 打开成一个字典 在函数的调用处, * 和 * * 用来解包结束, * 一般应用在列表或元组, * * 一般用在字典 # * 一个星条用处的用法 def func(a,b, * ,c,d): print (a,b) #1,2 print (c,d) #3,4 #函数的调用处 func( 1 , 2 ,c = 4 ,d = 4 ) lst[ 1 , 2 ] # *lst =>把列表里面的每一个元素都打散拿出来,当成参数赋值给func进行调用 func( * lst,c = 3 ,d = 4 ) # **两个星调用处的语法 func( 1 , 2 ,c = 3 ,d = 4 ) # **dic <==> 把字典里面的键值对拿出来,转换成关键字实参的形式,当成参数赋值给func进行调用 dic = { 'c' : 3 , 'd' : 4 } func( 1 , 2 , * * dic) #c=3,d=4 #定义处的*号用法 和 调用处的*号用法,是一对相反操作 一个用来打包,一个用来解包 优点:控制了参数的个数 |
1 2 3 4 5 6 7 | 参数的顺序 形参顺序: 普通形参 - - >默认形参 - - >普通收集参数 - - >命名关键字参数 - - >关键字收集参数 #收集所有实参 def func( * args, * * kwargs): pass |
4.return自定义返回值
1 2 3 4 5 6 7 8 | return 自定义返回值 函数可以自定义返回值,通过 return , return 会把这个值返回到函数的调用处 ( 1 ) return + 返回值 后面出了可以接 6 大标准数据类型之外,还可以返回函数和类对象 如果没有定义任何返回值,默认返回的是 None ( 2 )在函数中,如果只选了 return ,一位这立刻终止函数,后面的代码统统不执行 ( 1 ) return + 可返回的类型 ( 2 ) return 之后意味着立刻终止函数,后面的代码不执行 |
5.全局变量和局部变量
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | 局部变量:在函数内部定义的变量就是局部变量(局部命名空间) 全局变量:在函数外面定义的变量,或者在函数内部用 global 关键字定义是全局变量(全局命名空间) 作用域:作用的范围 局部变量的作用的范围仅仅限定在函数的内部 全局变量的作用的范围横跨整个文件 生命周期: 内置命名空间> 全局命名空间>局部命名空间 内置变量 > 全局变量 > 局部变量 #(1) 局部变量 def func(): #定义一个局部变量 a = 1 #获取局部变量 print (a) #修改局部变量 a = 20 print (a) func() print (a) error 局部外无法获取局部内变量的值 ( 2 ) 全局变量 1. 定义全局变量 c = 100 2. 获取全局变量 print (c) 3. 修改全局变量 c = 200 print (c) ( 3 ) 在函数内部定义全局变量 global def func(): #标记d这个变量是一个全局变量 global d d = 400 print (d) #400 func() print (d) #400 因为在局部内声明了一个全局变量,所以在局部外也能用 ( 4 ) 在函数内部可以修改全局变量 e = 500 def func(): global e #声明e为全局变量 e = 600 #修改全局变量 print (e) #600 func() print (e) #600 |
5.1global 全局变量的作用域:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 如果函数外部有这个全局变量,在函数内部使用 global 关键字,可以修改全局变量 如果函数外部没有这个全局变量,在函数内部使用 global 关键字,可以定义全局变量 在函数内部可以直接获取全局变量 但是无法直接修改全局变量,需要通过 global f = 101 def func(): f = 102 print (f) #102 用局部自己的 func() print (f) #101 f = 101 def func(): print (f) #101 函数内部可以直接获取全局变量 func() print (f) #101 |
6.函数名的使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 函数名的使用 python中的函数可以像变量一样,动态创建,销毁,当参数传递,作为返回值,也叫作第一类对象,其他语言不能比拟功能有限 1. 函数名是个特殊的变量,可以当做变量赋值 def func1(): print ( '我是func1' ) return 111 res = func1() print (res) #动态创建函数 print (func1) func = func1 func() #动态撤销函数 del func() func() |
1 2 3 4 5 6 7 8 9 10 11 | 6.2 函数名可以作为容器类型数据的元素 def func2(): print ( '我是func2' ) def func3(): print ( '我是func3' ) def func4(): print ( '我是func4' ) return 'func' lst = [func2,func3,func4] for i in lst: i() |
1 2 3 4 5 6 7 | 3. 函数名可以作为函数的参数 def myfunc(f): res = f() print (res) #f <==> func4 <==> res <==> func4() print(res) myfunc(func4) |
1 2 3 4 5 6 7 | #4.函数名可作为函数的返回值 def myfunc2(f): return f f2 = myfunc2(func4) print (f2) f2() |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #__doc__ 或者help查看文档 # 模拟一个吃猪大肠的过程 def eat_big_chang(something): ''' 功能:模拟一个吃猪大肠的过程 参数:吃什么? 返回:吃没吃完? ''' print ( "step1=>先把{}洗一洗" . format (something)) print ( "step2=>找肠子头放嘴里" ) print ( "step3=>使劲嘬" ) print ( "step4=>吃完了,满意的放下肠子" ) return "真好吃~" res = eat_big_chang( '大肠' ) print (res) #函数.__doc__ =>>获取函数的帮助文档 print (eat_big_chang.__doc__) |
总结:
今天讲了默认形参和关键字实参,收集参数,命名关键字参数,return自定义返回值,全局变量和局部变量一级函数名的使用。
默认形参在函数的定义,定义处参数相当于k=v的形式,关键字在函数的调用处k=v的形式。
收集参数:
(1)普通收集参数:在参数的前面加上一个*,代表的是普通收集参数。作用是收集多余的没人要的普通实参,构成一个元组
(2)关键字收集参数:在参数的前面加上两个*,代表的是关键字收集参数,作用是收集多余的没人要的关键字实参,构成一个字典
命名关键字参数:
(1)在*号后面定义的参数是命名关键字参数
(2)在普通收集和关键字收集参数之间的,是命名关键字参数
调用:必须使用关键字实参的形式调用
* 和 **的使用方法:
在函数的定义处,*和**用来接收数据,*打包成一个元组,**打包成一个字典
在函数的调用处,*和**用来解包数据,*一般应用在列表或元组,**一般用在字典
参数的顺序
形参声明的位置顺序:
普通形参->默认形参->普通收集参数->命名关键字形参->关键字收集参数
return 自定义返回值
函数可以自定义返回值,通过return,return会把这个值返回到函数的调用处。
return后面可以跟6大数据类型同时还可以返回函数和类对象,如果没有当以返回值,默认返回的是None
return也可以终止函数
全局变量和局部变量:
局部变量:在函数内部定义的变量就是局部变量(局部命名空间)
全局变量:在函数外面定义的变量,或者在函数内部用global关键字定义的全局变量(全局命名空间)
作用范围:
局部变量的作用范围仅仅是限定在函数的内部
全局变量的作用范围横跨整个文件
生命周期的:
内置命名空间 > 全局命名空间 >局部命名空间
内置变量 >全局变量 >局部变量
1.当在局部内定义一个变量,在局部外是无法获取局部内的变量的值
2.在局部在定义一个变量,局部内没有定义变量时,可以获取局部外的变量
3.在函数内部定义全局变量global,在局部外可以获取局部内的变量
4.在局部外定义一个变量,然后再局部内声明这个变量为全局变量global,然后在局部内修改这个全局变量,外部调用这个变量是修改后的变量。
函数名的使用:可以当做变量赋值,动态创建函数,动态销毁函数,函数名可以作为容器类型数据的元素,for循环遍历然后得到的变量名+()就直接可以调用函数。同时函数名也可以作为函数的参数传参,也可以作为函数的返回值。
最后讲了一个查看函数帮助文档的用法 -------> 函数名.__doc__
__EOF__

本文链接:https://www.cnblogs.com/weiweivip666/p/12879524.html
关于博主:可能又在睡觉
版权声明:转载请注明出处
声援博主:如果看到我睡觉请喊我去学习
-------------------------------------------
个性签名:代码过万,键盘敲烂!!!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人