1、形参和实参的区别
形参
就是形式上的参数,可以理解为数学的X,没有实际的值,通过别人赋值后才有意义。相当于变量。
实参
就是实际意义上的参数,是一个实际存在的参数,可以是字符串或是数字等。
2、参数类型
位置参数、默认参数、可变参数、关键字参数
【1】位置参数
调用函数时,必须将函数调用中的每个实参都关联到函数定义中的一个形参。关联方式是基于实参的顺序,这被称作位置实参
def getinfo(name,age):
print('姓名:',name,'年龄:',age)
getinfo('westos',11) #实参传输顺序与形参顺序对应
getinfo(11,'westos') #实参传输顺序与形参接收顺序不对应,形参对应值错误
getinfo(age=11,name='westos') #实参传递时,加上形参对应项名称,可正确传输
实例:
实参传输顺序与形参顺序对应
实例:
结果:
实参传输顺序与形参接收顺序不对应,形参对应值错误
实例:
结果:
实参传递时,加上形参对应项名称,可正确传输
实例:
结果:
【2】默认参数
在编写函数时,可以给每个形参设定一个固定值,即为默认值。
在调用函数给形参提供实参时,就使用实参值,否则,使用实参的默认值,因此,给形参指定默认值后,在函数调用中省略相应的实参。
def mypow(x,y=2): #形参x接收传递过来的实参值,形参y设默认值为2,如果有传送过来的实参值则赋给形参y,如果没实参传给y则形参y取其默认值
print(x ** y) #打印x的y次方
mypow(2,3) #调用函数,传递实参2,3
mypow(2) #调用函数,只传递一个实参值给x
实例:
结果:
【3】可变参数
单个 *
(1)
如:*parameter是用来接受任意多个参数并将其放在一个元组中。
实例:
结果:
(2)
函数在调用多个参数时,在列表、元组、集合、字典及其他可迭代对象作为实参,并在前面加 *
如 :* (1,2,3)解释器将自动进行解包然后传递给多个单变量形参(参数个数要对应相等),也可用中*parameter是用来做形参,接受解包后的任意多个参数并将其放在一个元组中。
实例:
结果:
【4】关键字参数
两个 **
如:
**parameter用于接收类似于关键参数一样赋值的形式的多个实参放入字典中(即把该函数的参数转换为字典)。
实例:
结果: