栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

十、python-函数

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

十、python-函数

一、形参和实参,位置参数和关键字参数,默认形参、可变长度参数

1、形参和实参

形参:定义阶段的参数

实参:调用阶段的参数

2、位置参数和关键字参数

位置参数:按照从左到右依次定义的参数(形参和实参都可以),位置形参必须传值

关键字参数(关键字实参):以不按照顺序,按key=value的形式传入实参的方式,其中key一定是与定义函数的形参名或变量名是一样的。

混用时位置实参必须放在关键字实参之前。

3、默认参数(默认形参)

再函数定义阶段,就为其赋了默认值的形参。

默认参数的值是在函数定义阶段被赋值的。

虽然函数默认参数的值可以指定成任意数据类型,但是不建议指定成可变类型。对于确实需要定义成可变类型,可以将参数赋值为None。

默认参数必须在位置参数的后边。

4、可变长度的参数:在调用函数的时候,传入的实参个数是不固定的

多出来的位置实参:

用法:*形参名     比如:*args

多出来的位置实参会被*处理成元组。

多出来的关键字实参:

用法:**形参名        比如:**kwargs

多出来的关键字实参会被**处理成字典格式。

*和**都是用来接收溢出来的实参的,必须要放在最后,就是要在位置形参和默认形参之后。

也可以利用* 传递实参值,比如:

def func(x,y,z):
    print(x,y,z)

func(*[1,2,3])
#*在此处就可以将列表里面的值给打散,打散成位置实参

只要可以for循环的值,都可以被* 打散,比如:列表、字符串、字典(字典打散就只剩下key了)

也可以利用* *传递实参值,此时**后边的变量必须是字典,并且字典key的个数和名称要一致。

5、可变长参数混用

**kwargs必须放在*args之后,主要是考虑函数以后的可扩展性

def func(x,y=2,*args,88kwargs):
    print(args)
    print(kwargs)
#其中x、y参数也可以没有,此时传入的所有值都是多出来的,一次函数调用时可以不用传值。

重点的应用形式:

def func(x,y,z):
    print('func1>>>',x,y,z)
形式1:
def func2(x,y,z):
    func1(x,y,z)

形式2:
def func2(*args,**kwargs):
     #上面的*将位置参数打包成元组,**将关键字参数打包成字典
    func1(*args,**kwargs)
    #此处的*又将上面的元组打散成位置参数,**将上面的字典打散成关键字参数

func2(1,2,3)

###############
如果使用形式1的方式,当函数func1修改后,函数func2也必须对应的修改,否则func2函数就无法使用了。但是使用形式2的方式后,即使函数func1修改了,func2也不需要修改,只需要根据func1的形参传入参数即可。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1011837.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号