1.函数
-
函数是代码的一种组织形式
-
函数的使用
- 函数使用需要先定义
- 定义一个函数
- 只是定义不会被执行;def关键字,后跟一个空格;函数名,自己定义,通俗易懂;后面的括号冒号不能省;所有代码缩进
- 使用函数,俗称调用
- 直接打出函数名
函数的参数与返回值
-
参数 负责给函数传递一些必要的数据与信息
- 形参 (形式参数):在函数定义时,没有具体值,只是一个占位符
- 实参 (实际参数):在调用函数输入的值
-
返回值 :调用函数的时候执行的一个结果
- return,None返回结果
-return None
表示结束- 函数一旦执行return,则函数立即结束
help函数
- 提供帮助
九九乘法表
for o in range(1,10):
for i in range(1,o + 1):
print(o * i,end=" ")
print()
end参数,在print中,将一列改为一行
换行,print()
2.参数分类
- 普通参数/位置参数
- 默认参数
- 关键字参数
- 收集参数
普通参数
-
定义的时候直接定义变量名
-
调用的时候直接把变量或者值放入指定位置
def 函数名(参数1,参数2, ....): 函数体 调用,调用的时候,具体指参考的是位置,按位置赋值 函数名(value1,value2,......)
默认参数
-
形参带有默认值
-
调用的时候,如果没有对相应形参赋值,则使用默认值
def func_name(p1=v1,p2=v2......): func block 调用1 func_name() 调用2 value1 = 100 value2 = 200 func_name(value1,value2......)
关键字参数
-
不容易混淆,一般实参和形参只是按照位置一一对应即可,容易出错
-
使用关键字参数,可以不考虑参数位置
def func(p1=v1, p2=v2, ......): func_body 调用,可以不考虑参数位置 func(p1=value1, p2=value2, ......)
收集参数
-
把没有位置,不能和定义时的参数位置相对应的参数,放入一个特定的数据结构中
-
参数名不一定要求写为args,但是约定俗成
-
参数名前要有星号*
-
收集参数可以和其他参数共存
-
一般采用for循环,对list,tuple进行工作
def func_name1(*args): func_body 调用 func_name1(p1, p2, p3, .....)
收集参数之关键字收集参数
-
把关键字参数按照字典dict格式存入收集参数
-
是为了解决在调用关键字参数,形参为收集参数的问题上会出错的情况
-
参数名kwargs,约定俗成
-
参数名前要有两个星号**
-
访问时注意for循环,注意使用方式
def func(**kwargs): func_body 调用 func(p1=v1, p2=v2, p3=v3, ...)
3.有关收集参数的问题
1.收集参数混合使用的顺序问题
- 收集参数,关键字参数,普通参数,默认参数可以混合使用
- 使用原则就是,普通参数和关键字参数优先
- 定义的时候一般找普通参数,关键字参数,收集参数tuple,收集参数dict
2.集参数的解包问题
- 把参数放入list或者dict中,直接把list/dict中的值放入收集参数中
- 对于dict解包,需要在前输入一个星号;对dict进行解包,需要在前加入两个星号*
- 语法:查看案例
4.函数文档
- 函数的文档的作用是对当前函数提供使用相关的参考信息
- 文档的写法:
- 在函数内部开始的第一行使用三引号字符串定义符
- 一般具有特定的格式
- 参看案例
- 文档查看
- 使用help函数,形如 help(func)
- 使用__doc__,查看案例
5.变量作用域
- 变量有作用范围限制
- 分类:按照作用域分类
- 全局(global):在函数外部定义
- 局部(local):在函数内部定义
- 变量的作用范围:
- 全局变量:在整个全局范围都有效
- 全局变量在局部可以使用(即函数内部可以使用函数外部定义的变量)
- 局部变量可以在局部范围使用,在全局范围无法使用
- !即内部可以使用外部的变量,外部不能使用内部的变量 # 有!在前的是自己总结
- LEGB原则(现在只了解,不必知道其含义)
- L(local) 局部作用域
- E(Enclosing function locale) 外部嵌套函数作用域
- G(Global module) 函数定义所在模块作用域
- B(Buildin) python内置魔抗的作用域
提升局部变量为全局变量
- 使用global
- 可以使用同一个global语句指定多个全局变量。例如global x, y, z