1.函数分为两大类,分别是什么?二者在使用时有何区别?
答:函数分为有参函数和无参函数,有参函数在定义函数时需要定义形参,同时在调用函数时需要实参。无参函数则不用,可以直接调用。
2.什么是形参、什么是实参?形参与实参之间的关系是什么?
答:形参相当于“变量名”,实参相当于“变量值”;实参就是绑定(赋值)给形参。
3.简述两种形参的区别:位置形参、默认形参。
答:位置形参就是这种直接定义形参的:def index(x,y);默认形参就是定义形参时加上赋值:def index(x=1,y=2)。
4.简述两种实参的区别:位置实参、关键字实参。
答:位置实参就是与形参按位置先后一一对应赋值,关键字实参就是不用按顺序,而是按关键字赋值:index(x=1,y=2)。
5.简述*与**在形参与实参中的区别
答:
在形参中,*表示有和紧跟它后面的形参形成可变长形参,就是可以储存多个值,当赋值的实参是位置实参并且个数多于形参时,多出的实参就会以元组的形式赋值给可变长形参。
在实参中,*表示有和紧跟它后面的实参形成可变长实参,*后面跟列表或元组,然后将其打散,再赋值给形参。
在形参中,**表示有和紧跟它后面的形参形成可变长形参,用**一般是用在实参是关键字实参,多出的实参变为字典形式赋值给可变长形参。
在实参中,**表示有和紧跟它后面的形参形成可变长实参,**后面跟字典,然后将其打散,再赋值给形参。
如果形参和实参同时都是可变长类型,那么赋值的个数就随意了。
6.解释下述形式,即函数wrapper的参数特点是什么?
def index(x,y):
print(x,y)
def wrapper(*args,**kwargs):
index(*args,**kwargs)
wrapper(1,y=2)
答:?