Python入门(六)

参数传递

1.普通传参

通过判断对应位置来传递。

2.关键字传参

用关键字(Keyword)的方式来传递参数。在定义函数时,我们给了形参一个符号标记,即参数名。关键字传递是根据参数名来让数据与符号对应上。因此,如果在调用时使用关键字传递,那么不用遵守位置的对应关系。沿用上面的函数定义,改用参数传递的方式:

注意:普通传参和关键字传参可混合使用,但需要注意的是,在混合使用的过程中,所有的位置参数需要出现在关键字参数前。实例如下:

包裹传参

以上传递参数的方式,都要求在定义函数时说明参数的个数。但有时在定义函数时,我们并不知道参数的个数。有时是希望函数定义的更加松散,以便于函数能运用于不同形式的调用。这时候,用包裹( packing)传参的方式来进行参数传递会非常有用。

和之前一样,包裹传参也有位置和关键字两种形式。
位置传参

下面是包裹位置传参的例子:

def package_position(*all_arguments) :

print(type(all_arguments))

print(all_arguments)

package_position(1,4,6)

package_position(5,6,7,1,2,3)

两次调用,尽管参数个数不同,但都基于同一个package_position()定义。在调用package_position()时,所有的数据都根据先后顺序,收集到一个元组。
包裹关键字传参

在函数内部,我们可以通过元组来读取传入的数据。这就是包裹传参。包裹位置传参。为了提醒Python参数all_arguments是包裹位置传递所用的元组名,我们在定义package_position()时要在元组名all_arguments前加*号。

def package_keyword(**all_arguments) :

print(type(all_arguments))

print(all_arguments)

package_keyword(a=1,b=9)

package_keyword(m=2,n=1,c=11)

与上面一个例子类似,当函数调用时,所有参数会收集到一个数据容器里。只不过,在包裹关键字传递的时候,数据容器不再是一个元组,而是一个字典。每个关键字形式的参数调用,都会成为字典的一个元素。参数名成为元素的键,而数据成为元素的值。字典all_arguments 收集了所有的参数,把数据传递给函数使用。为了提醒,参数all_arguments是包裹关键字传递所用的字典,因此在all_arguments前加**。

注意:包裹传参中的两种方式也可以混合使用。

解包裹

除了用于函数定义,*和**还可用于函数调用。两者是为了实现一种叫作解包裹( unpacking)的语法。解包裹允许我们把一个数据容器传递给函数,再自动地分解为各个参数。需要注意的是,包裹传参和解包裹并不是相反操作,而是两个相对独立的功能。

相关推荐
weixin_307779139 分钟前
C++代码实现MATLAB中的ode45函数功能
开发语言·c++·算法·matlab
泡茶喝茶写代码13 分钟前
量化数据开发实战系列(第 25 篇):基金基础接口实战:基金列表、ETF-LOF 分类、基金概况、净值数据
java·数据库·人工智能·python·mysql
张小姐的猫16 分钟前
【AI大模型接入SDK】 —— 数据管理 & 与Session模块进行联动
数据结构·数据库·c++·人工智能·python·chatgpt
troy12820 分钟前
Python 进阶提升(十二):自动化测试与 DevOps 实战
python·devops
chnyi6_ya25 分钟前
论文阅读笔记:VBVR-Pro 把「用生成来推理」变成一个可训练、可验证、可优化的闭环
论文阅读·笔记
contro1_h41 分钟前
关于ArcGIS许可管理器服务无法启动的问题
经验分享·笔记·学习方法
是立不是利1 小时前
大文件导致请求被拒的连锁反应
开发语言·前端·javascript
ynchyong1 小时前
SQLAlchemy 更新操作:values() 与 ordered_values() 的隐藏差异
python·sqlalchemy·update·values·ordered_values
1314lay_10071 小时前
SQL SERVER 修改已创建的表
经验分享·笔记
東隅已逝,桑榆非晚1 小时前
vector(模拟实现)
c++·笔记·学习