Python学习之路-函数进阶
参数和返回值的作用
函数根据有没有参数以及有没有返回值,可以相互组合,一共有4 种组合形式:无参数,无返回值;无参数,有返回值;有参数,无返回值;有参数,有返回值。
{{< admonition tip “提示” true >}}
定义函数时,是否接收参数,或者是否返回结果,是根据实际的功能需求来决定的!如果函数内部处理的数据不确定,就可以将外界的数据以参数传递到函数内部。如果希望一个函数执行完成后,向外界汇报执行结果,就可以增加函数的返回值
{{< /admonition >}}
不可变和可变的参数
无论传递的参数是可变还是不可变只要针对参数使用赋值语句,会在函数内部修改局部变量的引用**,**不会影响到 外部变量的引用。如果传递的参数是可变类型,在函数内部,使用方法修改了数据的内容,同样会影响到外部的数据
缺省参数
定义函数时,可以给某个参数指定一个默认值,具有默认值的参数就叫做缺省参数调用函数时,如果没有传入缺省参数的值,则在函数内部使用定义函数时指定的参数默认值。函数的缺省参数,将常见的值设置为参数的缺省值,从而简化函数的调用
{{< admonition tip “提示” true >}}
缺省参数需要使用最常见的值作为默认值!如果一个参数的值不能确定,则不应该设置默认值,具体的数值在调用函数时,由外界传递!
{{< /admonition >}}
缺省参数的注意事项
缺省参数的定义位置
必须保证带有默认值的缺省参数在参数列表末尾
调用带有多个缺省参数的函数
在调用函数时,如果有多个缺省参数,需要指定参数名,这样解释器才能够知道参数的对应关系!
多值参数
定义支持多值参数的函数,有时可能需要一个函数能够处理的参数个数是不确定的,这个时候就可以使用多值参数。python中有两种多值参数:
- 参数名前增加 一个
*
可以接收元组 - 参数名前增加 两个
*
可以接收字典
一般在给多值参数命名时,习惯使用以下两个名字:
-
*args
—— 存放 元组 参数,前面有一个*
-
**kwargs
—— 存放 字典 参数,前面有两个*
{{< admonition tip “提示” true >}}
args
是arguments
的缩写,有变量的含义,kw
是 keyword
的缩写,kwargs
可以记忆键值对参数
{{< /admonition >}}
元组和字典的拆包
在调用带有多值参数的函数时,如果希望:将一个元组变量,直接传递给 args
将一个 字典变量,直接传递给 kwargs
就可以使用拆包,简化参数的传递,拆包的方式是:在元组变量前,增加一个*
在字典变量前,增加两个 *
。
递归
简介
函数调用自身的编程技巧称为递归
特点
一个函数内部调用自己。函数内部可以调用其他函数,当然在函数内部也可以调用自己
代码特点
- 函数内部的代码是相同的,只是针对参数不同,处理的结果不同
- 当参数满足一个条件时,函数不再执行
{{< admonition warning “警告” true >}}
这个非常重要,通常被称为递归的出口,否则会出现死循环!
{{< /admonition >}}
{{< admonition tip “提示” true >}}
初次接触递归会感觉有些吃力!在处理不确定的循环条件时,格外的有用,例如:遍历整个文件目录的结构
{{< /admonition >}}
内置函数
Python 解释器内置了很多函数,可以在任何时候使用,在这里查看具体包含哪些与使用方法。