Python 函数参数类型

函数的参数类型

一、位置参数

1.函数调用时,实参默认按位置顺序传递形参。按位置传递的参数称之为位置参数

2.位置参数是参数定义的最基本形式,本章前面的函数定义采用的都是位置参数

执行结果为:

位置参数必须以函数定义中的顺序来传递,如函数调用f(1, 2, 3)中的123分别对应函数定义f(a,b, c)中的a、b和c。

 二、默认值参数

1.可以为一个或多个参数指定默认值,这样,在调用时就可以传入比定义时更少的实际参数

 执行结果为:

 参数a是位置参数,调用时必须传入。参数bc给出了默认值,调用时这些参数如果不指定实参,将采用默认值

2.上例中的f() 函数可以通过几种不同的方式调用参数:

位置参数调用时必须传入: f()       # 调用时会报错
只给出必要的参数:f(1)
给出部分可选的参数: f(1, 2)
给出所有的参数: f(1, 2, 3)

3.对于引用传递的参数(实参值在函数内部可能改变),即使函数被多次调用,默认值也只会被赋值一次,参数值的改变可能在多次调用中累积。

执行结果为:

 

 三、关键字参数

函数调用时可以通过关键字的形式来传递参数,使用关键字参数具有三个优点:参数按名称意义明确;传递的参数与顺序无关;如果有多个可选参数,则可以选择指定某个参数值

执行结果:

上例中,正确的调用方式包括:

ü 位置参数也可以用关键字参数的形式来指定值, f(a=1) 是正确的。
ü 指定关键字参数的顺序可以任意, f(b=2, c=3, a=1) 是正确的。

错误的调用方式包括:

在函数调用中,关键字的参数必须跟随在位置参数的后面,所以 f(a=1, 2) 是错的。
任何参数都不可以多次赋值,所以 f(1, a=2) 是错的。
传递的所有关键字参数必须与函数接受的某个参数相匹配,所以 f(1, d=2) 是错的。

四、元组参数的封装与拆封

1.传递的元组参数必须在位置参数和默认参数之后。

执行结果:

在前两个调用中,前两个实参被传递给了形参ab,剩余的参数被封装传递给形参name。第三个调用只有一个实参,该实参传递给形参a,形参b使用默认参数,而name只能接收到一个空元组。

2.在函数定义中,任何出现在*name后面的参数都被当成是关键字参数

 执行结果:

3.元组参数的拆封需注意:

调用时元组名前面需要加一个*号
元组的元素数量必须与函数接受的参数数量一致

 

执行结果:

 4.封装参数可以与一般参数组合使用

执行结果:

五、字典参数的封装与拆封

1.可以使用形如“**dict的形式,使用字典传递数量可变的关键字参数

 执行结果:

2.字典参数的拆封

执行结果:

总结:

带星或双星的参数位于形参列表的最后位置
在带星号的参数后面申明参数会导致 强制命名参数( Keyword-only
调用时必须 显式使用命名参数传递值 ,因为按位置传递的参数默认收集为一个元组,传递给前面带星号的可变参数
如果不需要带星的可变参数,只想使用强制命名参数,可以简单地使用一个星号。例如: def my_func( *, a, b, c)

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值