高阶函数、递归函数、内置函数

这里我们学习的是:
  高阶函数

  递归函数

  内置函数

 参数分类:

# 这里的参考文章是:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431752945034eb82ac80a3e64b9bb4929b16eeed1eb9000
'''
函数的参数的分类:
必选参数
默认参数
可变参数
关键字参数
命名关键字参数

调用的顺序就是,必选参数-默认参数-可变参数-命名关键字参数-关键字参数

这里可变参数就是多个未知的参数
关键字参数是 传入相当于多个 'xx'='ddd' 形式传入

def f(a,b,c=3,*args,**kw)

这里的
a,b是必选参数
c是默认参数
args 可变参数
kw 关键字参数

这里的命名关键字参数的左右就是想让传入的参数限定死,只能传入规定的几个关键字参数,别的传入就报错
命名参数的定义格式是
def f2(a,b,*,city,job) # 这个是没有可变参数情况下的定义
def f3(a,b,*args,city,job) #这个是存在可变参数的情况下定义命名关键字参数,city,job,也就是说传入的参数的key必须是city和job

*args是可变参数,args接收的是一个tuple;输出的结果是一个元祖
**kw是关键字参数,kw接收的是一个dict。 输出的结果是一个字典

以及调用函数时如何传入可变参数和关键字参数的语法:
可变参数既可以直接传入:func(1, 2, 3,4),又可以先组装list或tuple,再通过*args传入:func(1,*(1, 2, 3));
关键字参数既可以直接传入:func(1,a=1, b=2),又可以先组装dict,再通过**kw传入:func(1,**{'a': 1, 'b': 2})。
使用*args和**kw是Python的习惯写法,当然也可以用其他参数名,但最好使用习惯用法。
命名的关键字参数是为了限制调用者可以传入的参数名,同时可以提供默认值。
定义命名的关键字参数在没有可变参数的情况下不要忘了写分隔符*,否则定义的将是位置参数。
'''
原文地址:https://www.cnblogs.com/smail-bao/p/7867803.html