python参数分为以下几类:
- 普通参数
- 默认参数
- 关键字参数
- 收集参数
def func(a):
print(a)
return None
a = "hahaha"
func(a)
输出结果
hahaha
2.默认参数
指的是形参带有默认值
如果函数调用时没有相应实参赋值,则使用默认值
def stu(name, age, gender = "male"):
print("i am %s, %d old, gender is %s"%(name,age,gender))
name = "x"
age = 18
stu(name, age)
输出结果:
i am x, 18 old, gender is male
我们传给函数stu的参数只有name和age,对应形参的name和age,然后输出时gender使用了我们赋给它的默认值
3.关键字参数
指的是函数调用时的实参,在调用时给参数命名(注意,实参列表中的名字和形参列表中的名字得一致)
def stu(name, age, gender):
print("i am %s, %d old, gender is %s"%(name, age, gender))
stu( age = 18, name = "A", gender = "male")
输出结果
i am A, 18 old, gender is male
可以看到,实参和形参的列表并没有对应上,但是我们输出的结果仍然是我们想要的,所以关键字参数的好处就在这:可以指定初始化参数,并且不用担心实参的顺序(我个人喜欢用这种写法)
4.收集参数
把没有位置,不能和形参位置对应的实参,放入一个特定的参数中,这个参数叫收集参数
eg1:
def stu(*args):
print("i am %s, %d old, gender is %s"%(args))
name = "s"
age = 18
gender = "male"
stu(name, age, gender)
输出结果
i am s, 18 old, gender is male
我们可以看到,输出结果是我们想要的,如果我们调换一下实参顺序呢?
改为:stu(name, gender, age)
这时就会报错了,因为参数顺序和格式化输出符的顺序不一致,第二个%d应该输入的是int,结果输入了string,导致了报错
注意:使用收集参数时,收集参数变量名前要有一个*来声明这个参数是一个收集参数