函数
函数的定义与调用
'''
1.函数遵循先定义后调用的原则
2.函数在定义阶段只检测语法不执行代码
3.函数体代码只有在调用时才会执行函数体代码,调用的方法时函数名加括号,如果有参数就在括号内传递参数
4.函数名相当于变量名指向的是内存中函数体代码所在的位置
'''
def func ():
print ("i am iron man" )
func()
>>> i am iron man
函数的分类
内置函数与自定义函数
eg: len () count()
有参函数无参函数与空函数
def func ():
print ('hello world' )
func()
>>>hello world
def func (name ):
print (name)
func('jason' )
>>>jason
def func ():
pass
'''
空函数能够在项目初期,罗列出项目的大致功能,让程序整体框架更加清晰,空函数大量的使用在项目前期的功能框架搭建
'''
函数的返回值
eg:
s = 'hello world'
print (len (s))
>>>11
1. 当函数体代码没有return 关键字的之后返回值是None
def func (name ):
print (name)
print (func('jason' ))
>>>jason
>>>None
2. 当函数体代码写了return 但后面没有跟任何值的时候,返回值也是None
def func (name ):
print (name)
return
print (func('jason' ))
>>>jason
>>>None
3. 当函数体代码写了return 并且跟了数据那么些什么就返回什么
def func (name ):
print (name)
return 'hello world'
print (func('jason' ))
>>>jason
>>>hello world
4. return 后面可以跟多个值用逗号间隔开,会自动组成元组并返回
def func (name ):
print (name)
return 1 ,2 ,'hello'
print (func('jason' ))
>>>jason
>>>(1 , 2 , 'hello' )
5. 函数体代码遇到return 后会立刻结束函数的运行
函数的参数
参数的分类
'''
函数的参数分为两大类:
1.函数定义阶段括号内写的参数
被称之为‘形式参数’ 简称为形参
2.函数在调用阶段括号内写的参数
被称之为‘实际参数’ 简称为实参
'''
'''
形参与实参的关系:
形参类似变量名而实参类似变量的值 在调用函数是传入实参,会与形参临时绑定 函数运行结束后接触绑定
'''
def func (name,age ):
print (name,age)
func('jason' ,12 )
'''
实参jason 临时绑定给 name 实参12临时绑定给形参age
函数体代码运行期间 可以通过形参直接使用到实参
函数体代码执行完,解除绑定
解除绑定后 形参name age 处于没有绑定之转台 等待下一次函数调用传入实参进行绑定
'''
位置参数
在函数定义阶段括号内从左向右依次填写变量名
def func (name,age ):
print (name,age)
在函数调用阶段括号内从左向右一次传入真是数据
func('jason' ,12 )
1. 位置形参与位置实参再绑定的时候是按照从左往右的顺序依次绑定
2. 位置形参与位置实参的个数要一致多传少传或者不传都不可以
关键字参数
出现在实参中,指名道姓的给形参传至,不需要遵循位置,但是位置参数必须在关键字参数前面
def func (a, b, c ):
print (a,b,c)
func(b=112 ,a=123 ,c=789 )
>>>123 112 789
func(112 ,c=789 ,b=456 )
func(c=123 ,456 ,478 )
func(789 ,a=456 ,b=456 )
'''
位置实参数必须在关键字实参的前面,一个形参只能绑定一个实参
'''
默认参数
出现在形参中
在函数定义阶段就已经给行参进行赋值
如果后续不传值则默认使用该值
传入新的值就使用
默认参数必须定义在位置参数后面
默认参数的出现打破了形参与实参之间个数一致的情况
def register (name, age, gender='男' ):
print (f'姓名:{name} 年龄:{age} 性别:{gender} ' )
register('jason' ,28 )
register('tom' ,17 ,'女' )
可变长参数
def func (*args ):
print (a)
func()
>>>()
func(1 ,2 ,3 ,3 ,4 )
>>>(1 ,2 ,3 ,3 ,4 )
'''
*在形参中可以接受多余的位置参数 并组成元组赋值给*后面的变量名
'''
def func (a,b,*args ):
print (a,b,args)
func(1 ,2 )
>>>1 2 ()
func(1 )
func(1 ,2 ,2 ,2 ,2 ,2 )
>>>1 2 (2 ,2 ,2 ,2 )
'''
**在形参中可以接收多余的关键字参数 并且组织成字典的形式赋值给**后面的变量名
'''
def func (a,b,**kwargs ):
print (a,b,kwargs)
func(a=1 ,b=2 )
>>>1 2 {}
func(a=1 ,b=2 ,c=3 ,d=5 )
>>>1 2 {'c' :3 ,'d' :5 }
可变长形参
def func (*args,**kwargs ):
print (args,kwargs)
func()
>>>() {}
func(1 ,2 ,a=3 ,b=4 ,5 )
func(1 ,2 ,a=3 ,b=4 )
>>>(1 , 2 ) {'a' : 3 , 'b' : 4 }
'''
*和**并不是关键,后面的变量名可以随便写,但是推荐使用arg和kwargs
'''
补充说明
*和**不单单可以在形参中使用,还可以在实参中使用
def func (*args, **kwargs ):
print (args, kwargs)
func(*[1 ,2 ,3 ]) 等价于 func(1 ,2 ,3 )
func(*(1 ,2 ,3 )) 等价于 func(1 ,2 ,3 )
func(**{'name' :'jason' ,'age' :18 ,'pwd' :123 })
>>>() {'name' : 'jason' , 'age' : 18 , 'pwd' : 123 }
func({'name' :'jason' ,'age' :18 ,'pwd' :123 })
>>>({'name' : 'jason' , 'age' : 18 , 'pwd' : 123 },) {}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)