大家好,我是杨数Tos,这是《从零基础到大神》系列课程的第51篇文章,第三阶段的课程:Python进阶知识:详细讲解Python中的函数(四)====>函数的参数与返回值(下篇)。
函数是非常重要的内容,在这里,我会用10篇左右的文章详细讲解Python中函数定义与使用的规则。
阅读提醒:建议小白先看一遍:【计算机基础知识】和【Python基础知识】课程,否则你不一定听得懂!
我们接着上一篇文章讲函数传参与函数的返回值。
一、Python中函数的传参规则
1、一般传参规则
有几个形参就传入几个实参,按照定义阶段为准;
如果所有类型的参数都有,则按照以下规则进行传参:
函数名(位置参数,关键字参数/默认参数,*args,**kwargs)
2、不定长参数的传参
如果在函数定义时,定义了*args和**kwargs这些不定长形参,在进行传参时,遇到列表[]、字典{}这类数据时,会自动将相相应数值传入到*args与**kwargs这两个形参中;
这是Python内置的强制规则。
3、解压传参
解压传参指的是,定义参数时并没有定义*args和**kwargs这两种不定长参数,但却传入了列表或元组或字典这类数据;
有人会觉得,没有定义不定长参数,怎么传列表、字典?这里用到了解压传参的功能。
a. 列表的解压传参:
定义函数:函数名(位置参数1,位置参数2)
实例化函数:
X = [1,2];
函数名(*x)
b. 字典的解压传参:
定义函数时:函数名(参数1,参数2)
实际传参时:函数名(**)
c. 还有一种情况是,定义函数时,是这样的:
函数名(位置参数1,位置参数2,*args)
实际传参时,是这样的:
X = [1,2,3,4,5,6]
函数名(*x)
解压传参的底层逻辑是这样的:【重要】
1、传参时遇到一个星或两个星(*或**)时,会相当于执行一次for循环;
2、将传入的列表或字典进行for循环取值;
3、再将列表或字典中取出来的值,按照位置参数传参的方式,从左到右依次传;传参过程中也会遵循一般传参规则,即有几个形参,就传几个实参。
4、如果传入的是字典,则用两个星传参的方式进行传参,最后会得到的时字典key对应的value。
例:def fun(x,y,z)
实参:fun(*[11,12,13])
这里会严格按照位置参数的数量进行传参,返回的结果是,x=11,y=12,z=13。
4、万能传参的方法
万能传参是指,不管你传入的是1个或1万个参数,传入的参数是列表、元组、字典,都可被函数接收;这里利用的是不定长参数的特点;具体使用方式如下:
定义函数时:函数名(*argw,**kwargs)
这种传参方式,也是我们经常使用的传参方式。
注:*args返回的是元组,**kwargs返回的是字典。
5、设置传参时的提示
我们在使用Python内置的函数时,会看到有相应的英文提示,告诉我们这个参数应该传入什么样的数据类型;我们自己在定义函数时也可以设置提示,使用语法如下:
函数名(参数1:“这里传入数字)
例如:def fun(x:”please input int”):
当函数被使用时,会显示相应的提示。
二、Python中函数的3种返回值
函数中,只要执行了一次return语句,无论后面有多少语句都不会再往下执行;return是函数结束的标志;Python中的函数返回值分为3种:
1、没有return,默认返回None;
2、返回单个值,语法:return 值;
3、返回多个值,用逗号分隔开,会被return返回成元组;
如:return x,y;会返回成(x,y);
返回元组的主要原因是利用元组的不可变特性,这样函数的返回值就不会有被修改的可能。
4、规定函数返回值数据类型
我们可以在定义函数时,规定函数的返回值数据类型,具体方法如下:
函数名(参数:)->:int
例:def fun(x): ->:int
这里给使用者提示了fun函数的返回值为int(整数);不过,我们一般很少使用这种方式定义函数。
补充两点前面漏写的:
a. Python中的函数名的命名规则和变量名的命名规则一样;函数名的命名风格:纯小写字母;
b. 函数的功能注释,一般都写在函数名下面用3引号注释,一般看需求确定是否要详细写注释。
以上是本期内容,如果有表达不对的内容,欢迎您的留言、斧正,我们一起天天向上。
感谢您的阅读,您的三连【关注、点赞、收藏】就是对我最大的支持,谢谢!
本文由杨数Tos原创,欢迎关注,带你一起长知识。
领取专属 10元无门槛券
私享最新 技术干货