开发者学堂课程【Python 入门 2020年版:可变参数】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/639/detail/10335
可变参数
内容介绍:
一、可变参数
二、缺省参数的添加
一、可变参数
print( ' hello')
print( ' hello', ‘ok ')
print( ' hello', 'ok ', 'yes ' )
可以打印多个数值,
运行结果:
Hello
Hello ok
Hello ok yes
def add(a,b, *args):#*args 表示可变参数
*
不能省略
pass
add(1,3,9,5,4,2,0
)
给几个参数都可以,给两个
add(1,3
)
运行不报错
Add(9,5,4,2,0)
运行不报错,
去掉*args
def add(a,b
):
:#*args
pass
a
dd(1,3)
a
dd(9,5,4,2,0)
运行报错
因为*args
表示后面是可变的,可以有很多个,写几个都可以,这就是可变参数的概念。
可变参数如何传参
def add(a,b
)
print(
’a={ },b={ }’.format(a,b))
a
dd(1,3)
运行结果:a=1,b=3,所以就是1传给 a,3传给 b
参数多了以后,add(9,5,4,2,0)
运行结果:
a =9 ,b=5同样的,9传给a,5传给b
print( 'a = {},b={}'.format(a, b))
print( ' args = {'}.format( args ))
add(9, 5,4,2,0)
运行结果:
a = 9,b=5
args = (4,2,0)
多余的数字会以元组的形式保存在 args 中
求任意个数字之和,
P
rint(
add(1,3))
Print(add(9,5,4,2,0))
Print(add(8,9,7,5,7,9,8,7,5,3))
print( ' args = {'}.format( args ))
c
=a+b
f
or arg in args:
c+=arg
r
eturn c
P
rint(
add(1,3))
Print(add(9,5,4,2,0))
Print(add(8,9,7,5,7,9,8,7,5,3))
运行结果:
4
2
0
6
8
先将给的 a 和 b 加起来,Print(add(1,3))
Print(add(9,5,4,2,0))
Print(add(8,9,7,5,7,9,8,7,5,3))
(2)①d
ef add(*args):
Pass
Add( )
Add(1,3)
Add(9,5,4,2,0)
运行结果不会报错
②def add(a,b,*args):
c
=a+b
f
or arg in args:
c+=arg
r
eturn c
Add( )
Add(1,3)
Add(9,5,4,2,0)
运行结果:报错
原因:②中除了可变参数,还有位置参数,所以至少需要两个参数。如果至少需要两个参数相加,就可以写一个 a,b 就用②中的方法,一个都没有就用①中的方法。
二、缺省参数的添加
def add(a,b,*args
,
mul=1):
c
=a+b
f
or arg in args:
c+=arg
r
eturn c *
mul
Add( )
Add(1,3)
Add(9,5,4,2,0)
要求计算所有的数,再乘以一个值,mul 是一个缺省参数,缺省参数要放在后面,def add(a,b, mul=1,*args):这种写法是错误的,运行结果不报错,但是传参会有错误,420到底传给 mul,还是 args 是有问题的,要先写可变参数,再写缺省参数。
P
rint(
Add(1,3,5,7,mul=2
))
传参的时候1传给 a,2传给吧,5,7打包成一个元组传递给 args,mul=2传递给 mul=1.
运行结果:32
P
rint(
Add(1,3,5,7,mul=2
,x
=0,y=4
))
运行结果:报错,缺省参数没有 x,y
def add(a,b,*args
,
mul=1
,*
*kwargs): #*args
表示可变的位置参数,*
*
kwargs
表示可变的关键字参数
def add(a,b,*args
,
mul=1
,*
*kwargs):
c
=a+b
f
or arg in args:
c+=arg
r
eturn c *
mul
print(add( 1,3, 5,7, mul=2, x=0,y=4))
add(9,5,4,2,0, p=9,q=10)
add(8, 9,7,5,7,9,8,7,5,3, t=0,m=5)
运行结果:32
查看关键字保存
P
rint
(‘kwargs={ }
‘.
format(kwargs))
Kwargs ={‘x’:0,’
y
’
:
4}
3
2
多出来的关键字参数会以字典的形式进行保存。
右键点击 refactor,找到 rename,可以修改,就是默认的参数名,可以修改但是不要修改。