函数. 就是对一个代码块或者功能的封装. 什么时候用, 什么时候执行
语法:
def 函数名():
函数体(代码块)
函数的调用:
函数名() # 所有的()都是函数的调用
函数名和变量名一样.
1.字母, 数字, 下划线
2.不能以数字开头, 更不能全是数字
3. 不能是关键字 (默写目前已经学过的关键字)
4. 不能太长
5. 有意义
6. 不要用中文
7. 驼峰体和下划线
返回值
函数在执行过程中或者执行完毕. 可以使用return返回给调用者一个结果
只要程序执行到return. 函数就会被停止 后面的内容就不会再执行.
break 循环
三种情况:
1. 直接写个return或者不写return, 不返回任何内容, 接收的是None
2. return 一个变量或者值(返回值)
3. return 多个变量或者值. 返回的时候解释器会帮我们把多个返回值组装成一个tuple
接收的地方可以接收一个变量. 多个变量. 解构成多个变量
参数
函数在访问的时候. 给函数传递的一些信息, 参数写在小括号里面
1. 形参: 在函数声明的位置给出的变量的声明, 形式参数
2. 实参: 在函数调用的时候. 给函数传递的具体的值. 实际参数
参数可以有很多个.每个参数之间用逗号隔开
先说实参
1. 位置参数.
按照位置把实参赋值给形参
2. 关键字参数.
对照形参. 给每个参数赋值
3. 混合参数
位置参数和关键字参数混合着使用
必须先写位置参数, 然后才是关键字参数
关于形参: (有三种形式,今天两种)
1. 位置参数
到目前位置使用的都是位置参数
2. 默认值参数
当出现很多重复的参数的时候. 考虑使用默认值参数
默认值参数必须在位置参数后面
当调用的地方不给出值的时候. 会使用默认值
3.动态参数
1. 动态传参, 可以接收任意的参数
顺序: 位置参数 *args 默认值参数 **kwargs
形参的一种方式
1. 位置参数的动态传参 写法: *参数名 例如: *args
接收的参数是tuple类型
2. 关键字参数的动态传参. 写法: **参数名 例如: **kwargs
接收的参数是dict类型
无敌传参:
def func(*args, **kwargs):
pass
*,** 的作用:
在形参: 聚合
在实参: 打散
2. 作用域的问题
1. globals() 获取全局作用域中的内容
2. locals() 获取局部作用域中的内容
3. 函数嵌套--函数的执行流程
所有的()表示的是函数的调用
4. global和nonlocal
global: 寻找全局作用域中的内容
nonlocal: 寻找上一级作用域中的内容, 但不能是全局的
命名空间
1. 内置命名空间-> python内部的一些东西
2. 全局命名空间-> 自己定义的全局变量
3. 局部命名空间-> 函数的内部
作用域:
全局作用域:内置空间+ 全局空间
局部作用域:局部空间
globals() 全局空间中的内容
locals() 局部空间的内容
global和nonlocal
global: 在局部应用全局变量
nonlocal: 外层中离他最近的一个变量(非全局)