python函数
2023-03-17 21:02:22 25 举报
AI智能生成
python函数总结
作者其他创作
大纲/内容
函数的结构
def func():
函数体;
函数体;
函数的执行(调用)
函数名()
空间与取值
空间
局部作用域
局部名称空间
全局作用域
内置名称空间
全局名称空间
加载顺序
内置 -> 全局 -> 局部
取值顺序
就近原则,LEGB原则
global
在局部名称空间声明全局变量
# def func():
# global name
# name = 'alex'
#
# print(name) # 报错,name未定义
# func()
# global name
# name = 'alex'
#
# print(name) # 报错,name未定义
# func()
在局部修改全局变量
nonlocal
不能操作全局变量
内层函数对外层函数变量进行修改,用到nonlocal
闭包
什么是闭包?
存在嵌套函数中
内层函数对外层函数非全局变量的引用
闭包的好处?
对于你引用的这个自由变量不会在内存中消失,保证数据安全
__code__.co_freewars()
# def wrapper(a):
# name = '太白'
# def inner():
# print(a)
# print(name)
# return inner
# ret = wrapper('烧饼')
# print(ret.__code__.co_freevars) # 自由变量
# name = '太白'
# def inner():
# print(a)
# print(name)
# return inner
# ret = wrapper('烧饼')
# print(ret.__code__.co_freevars) # 自由变量
什么是函数?
减少代码的重复性
增强代码的可读性
函数的返回值
没有return
返回None
return
return单个值
与单个值的数据类型相同
return多个值
元组的形式返回
函数的参数
形参角度
位置参数
从左到右一一对应
默认值参数
传值覆盖,不传默认
万能参数
*args, **kwargs
仅限关键字参数
在*args和**kwargs参数之间
形参角度顺序:位置参数, *args, 默认参数, 仅限关键字, **kwargs
实参
位置参数
从左到右一一对应
关键字参数
以一对应
混合参数(既有位置参数,又有关键字参数)
位置参数一定要在关键字参数前面,一一对应
*的魔性用法
函数的定义:*代表聚合
函数的调用:*代表打散
函数的嵌套
遇到函数名()执行函数
函数名的应用
函数名就是变量
函数名对应的是函数的内存地址
函数名可以作为容器类类型的元素
函数名可以作为函数的参数传递
函数名可以作为函数的返回值
函数的三大器
生成器
本质就是迭代器
唯一区别:
生成器是自己用python代码构建的
生成器的三种产生方式
生成器函数
函数中含有yield就是生成器
生成器表达式
循环模式:(变量(加工后的变量) for 变量 in iterable)
筛选模式:(变量(加工后的变量) for 变量 in iterable if 条件)
python提供的
列表推导式
循环模式:[变量(加工后的变量) for 变量 in iterable]
筛选模式:[变量(加工后的变量) for 变量 in iterable if 条件]
装饰器
本质就是闭包,在不改变原函数的代码以及调用方式的前提下,给其增加额外的功能
满足开放封闭元组
应用:登录认证,打印日志等等
装饰器的基本结构
def wrapper(f):
def inner(*args, **kwargs):
ret = f(*args, **kwargs)
return ret
return inner
def inner(*args, **kwargs):
ret = f(*args, **kwargs)
return ret
return inner
迭代
迭代器
字面意思:重复的更新迭代的工具
专业角度:内部含有 __inter__ 方法, 并且含有 __next__ 方法
优点
节省内存
惰性机制
不走回头路
缺点
操作方法单一
不直观
查询速度较慢
可迭代对象
字面意思:重复的更新迭代的数据
专业角度:内部含有 __inter__ 方法
可迭代对象
str, list, tuple, dict, set, range
优点
直观
操作方便
缺点
占用内存
转化成迭代器
iter(可迭代对象)
内置函数
pass, 单独总结
0 条评论
下一页