首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

第51p,万能参数与返回值,Python中函数的返回值

大家好,我是杨数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原创,欢迎关注,带你一起长知识。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200722A0CCBU00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券