Python中的自定义函数

img


这个为什么是选B,而不选C呢?.
(需要个凑字数,有点真麻烦)

如果没有传 age 值的话,age就是10

kw是可变数量参数,可以将多个参数以元组的形式接收

此时三个参数分别为
name是 'zhangsan'
age 是13
kw 是14,15

函数func有3个参数,name,age,kw,其中kw是可变数量参数,可以将多个参数以元组的形式接收
调用函数时,传递了4个参数,一个字符串,3个数字
字符串赋值给name,13赋值给age,14和15赋值给kw
至于答案C,你是把age参数当函数里定义的普通变量来理解的吗,不管外面传递什么参数它都不变吗
age=10是age的默认值,表示这个变量可以不传递参数,不传递参数时则使用默认值。而如果传递了参数,默认值自动失效。

理解的是:python函数在解析参数时,是按照顺序来的,age=10这个10是默认值,age参数是关键字参数,name是位置参数,以及后面的*kw虽说是形参,但本质仍然是位置参数,而关键字参数定义时除非不写成age=...形式,否则由于关键字必须在位置参数之后而报错,因此不报错时只能写成问题中的形式,这时候python解析时按照顺序自然会把13分配给age。如果想要在不配置age的情况下将13,14,15分配给kw,可以使用键值对的形参如下(但是调用时需要给与键值对,如func('zhangsan',kw=(13,14,15))):

def func(name, age=10, **kw):
    print(name, end=' ')
    print(age, end=' ')
    print(kw)