1.函数的参数(较难)
Python中定义函数,需要我们确定参数的个数,位置,以及参数的类型。调用时则需要知道如何正确传递,以及函数返回的值。
Python的函数定义简单,但灵活度却非常大,为了提高函数的实用性,往往还会使用 默认参数、可变参数和关键字参数。
python的函数中的每个变量参数,又称为位置参数,因为定义和使用时,其位置是固定,即调用时会按照顺序赋值;
当函数使用时常常会用到固定的数值时,,我们可以用‘x=2’(x为参数,2为常用的值)的参数形式,这种参数称为默认参数,使用时仍可赋值,不赋值则为默认值;函数有多个参数时,往往将有默认值的参数放在后边,以便于使用。当不按照默认顺序使用参数时,需要将参数名和值以赋值的方式都写上。
当函数的参数数量是可变的时候,在定义函数时使用'*numbers'(可变参数,numbers仅为参数名是自定义的)参数,调用函数时传入list或tuple也可在其名前加“*”代表传入的为列表或元组。
当函数调用时传入多个参数,而函数中能用到的只有固定的参数时,可以使用‘**kw’(关键字参数),在函数内部对传入的参数进行判断;也可以使用特殊分隔符‘*’(单独为一个元素),‘*’后面跟需要用到的参数(称为命名关键字参数),如果命名关键字参数前面有可变参数是,分隔符可以省略。(注意:命名关键字参数,使用时要传入参数名)
注意:虽然函数在定义时,参数类型可以随意组合,但为了使用的简洁,尽量减少搭配
2.递归函数
Python的函数内部,可调用其他的函数,当调用的函数是其本身时,该函数就称为递归函数。例如:
def fact(n):
if n==1:
return 1
return n * fact(n - 1)
其代表的是一种循环的模式,但逻辑比循环更加清晰
注意:过深的使用递归函数会导致栈溢出,使用递归函数传入的参数值不能过大。