Python函数(定义、参数、递归)-1

一、函数的定义

  1. 定义函数,def 、缩进、:, 使用def语句,一次写出函数名、括号、括号中的参数和冒号:,然后在缩进块中编写函数,函数的返回值用return语句返回。
  2. 如果没有return语句,函数执行后也会返回结果,结果为None,return None可以简写为return。
  3. 使用pass的代替未写完的语句,否则会出错。
  4. 参数的检查,使用isinstance()内置函数来检查数据类型。
  5. 返回多个值,但是实际是返回任然是单一值,返回的是一个tuple,但是在语法上,返回的tuple可以省略括号,而多个变量可以同时接受一个tuple,按照位置赋给对应的值。

二、函数参数

  1. 设置默认参数,必选参数在前,默认参数在后。
  2. 当多个参数时,把变化大的参数放在前面,变化小的参数放在后面。变化小的参数可以作为默认参数。
  3. 定义默认参数的时候必须定义不变对象
  4. 可变参数,定义可变参数和定义一个list或tuple参数相比,仅仅在参数前面加了一个*号。在参数内部,参数numbers,接收到的是一个tuple。如果本身是一个list,可以在传入的时候,变量名前加 *号,使得list中的元素作为可变参数传入。
  5. 关键字参数, 关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在内部自动组建为一个dict。在定义函数参数最后加上** kw。如果本身就是字典dict,方法同可变参数一样,变量名前加**
  6. 命名关键字参数,如果要限制关键字参数的名字,就要用关键字参数,例如def person(name, age, *, city, job), 如果函数定义中已经有了一个可变参数,后面跟着的命名关键字参数就不在需要一个特殊的分隔符 *了def person(name, age, *args, city, job), 同时命名关键字参数必须传入参数名,这和位置参数不同,如果没有传入参数,调用将报错。
  7. 参数组合, 在Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数,这5种参数都可以组合使用。但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。

三、递归函数

  1. 使用递归函数的优点是逻辑简单清晰,但缺点是过深的调用会导致栈的溢出。
  2. 针对尾递归优化的语言可以通过尾递归防止栈溢出,尾递归实际上和循环是等价的,没有循环语句的编程语言只能够通过尾递归实现循环。
  3. Python标准的解释器没有针对尾递归做优化,任何递归函数都存在栈溢出的现象。
posted @ 2020-03-24 21:18  睿晞  阅读(340)  评论(0编辑  收藏  举报