第九课 Python中的函数(1)
函数
函数介绍:
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
函数作用:
提高 应用的模块性 与 代码的复用性
自定义函数
定义规则:
- 函数代码块以 def 关键词 开头 ,后接 函数标识符名称 和 圆括号()
- 圆括号中间 可以 放入参数
- 函数内容以 冒号 起始,并且 缩进。
例如:实现打印100次九九乘法表
注意:函数 只有在调用时才会执行,通过 function_name(param) 进行调用
函数的参数
形参与实参
可变类型参数与不可变类型参数
位置参数
关键字参数
默认值参数
可变长度参数
形参与实参:
形参 就是 函数定义中的 参数,没有实际的值,通过别人赋值后才有意义,相当于变量。
实参 就是 调用函数时传入的 参数,是一个实际存在的参数。
可变类型参数与不可变类型参数:
不可变类型参数在函数体内对变量重新赋值,相当于重新开辟了一块内存来保存值
可变类型参数在函数体内可以改变原有的值
位置参数与关键字参数
位置参数也就是实参与形参顺序一一对应,而不论变量名
关键字参数以 形参 = 实参 形式指定,不论参数位置
默认值参数:
形参处进行赋值,所以当调用时不传该参数就默认使用形参处的值。当调用时传了该参数,则覆盖掉默认参数。
可变长度参数
*args 接收时会转为元组数据类型
**kwargs 接收时会转为字典数据类型
解包:
函数的返回值
函数的返回值定义
- 使用 return 关键字返回内容
- 将内容 返回到 函数调用处
- 函数体中没有 return 语句时,函数运行结束, 则默认返回 None,也被称为隐含返回值
例如:
摄氏度与华氏度关系如:摄氏度/1.8 + 32 = 华氏度
需求:
定义函数1:用于输出摄氏度
定义函数2:通过摄氏度计算得出华氏度
函数多个返回值
当执行函数体内代码时,遇到第一个 return 就将指定值返回到函数调用处,也就是执行到return这行代码,后面的都不执行了。
多个返回值时,用逗号隔开,但默认为元组
函数作用域介绍
Python 中,程序的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的。
变量的作用域决定了在哪一部分程序可以访问哪个特定的变量名称。Python 的作用域一共有4种,
分别是:
L(local):局部作用域,即函数中定义的变量;
E(enclosing):嵌套的父级函数的局部作用域,即包含此函数的上级函数的局部作用域,但不是全局的;
G(global):全局变量,就是模块级别定义的变量;
B(build-in):内建作用域,系统固定模块里面的变量,比如:int()等;
global关键字
当我们需要在函数内部直接修改全局变量时,我们可以将函数内部的局部变量通过 global 关键字声明为全局变量。
函数作用域的优先级
递归函数
递归的介绍
函数Func(args)直接或间接调用函数本身,则该函数称为递归函数。
例如:
阶乘本质:n! = 1 * 2 * 3 * … * n
使用递归函数实现阶乘
注意
递归函数自身没有结束条件,所以需要我们自己设置结束条件,终止函数的调用。
可以使用递归实现的循环都可以实现,并且递归效率很低,所以递归很少使用
内置文件中常用方法
例如:
实现:返回1-10的奇数列表
1.取出 1~10 每一个数
2.判断,奇数则添加到列表当中
方法一
方法二
方法三
实现:阶乘,比如n!=123*…*n
实现方法:1.循环 2.递归 3.reduce
匿名函数
当我们在传入函数时,有些时候,不需要重复调用该函数,直接传入匿名函数更方便,也无需担心函数名冲突,并且还可以将匿名函数赋值给一个变量,再利用变量来调用该函数。
匿名函数应用
- 匿名函数作返回值
- 匿名函数作实参
作业
以上是笨方法
方法一
方法二
方法一
方法二