函数
2019-12-16 10:57:56 0 举报
AI智能生成
python函数的内容
作者其他创作
大纲/内容
格式化输出
%类型
输出字符串:%s
整型输出:%d
format
"{}".format
f'{} '
内置函数
globals():全局作用域变量
locals() 当前作用域变量。
闭包
什么是闭包?
1,存在嵌套函数中
2, 内存函数对外层函数非全局变量的使用。
闭包的好处
对于你引用的这个自由变量不会再内存中消失,保证数据安全。
什么是函数?
减少代码的重复性。
增强了代码的可读性。
函数的结构
函数是以功能为导向
def 函数名():
函数体(功能)
函数名:数字字母下划线 要具有可描述性。
(): 放置形参用的。
函数体(功能)
函数名:数字字母下划线 要具有可描述性。
(): 放置形参用的。
函数的执行(调用)
函数名()
函数的返回值
没有return
返回的是None
return
return 单个值
与单个值的数据类型相同
return 多个值 1,'alex', [1,2,3]
(1, 'alex',, [1,2,3])
函数的参数
形参
1,位置参数。
从左至右一一对应。
2,默认参数。
传值覆盖,不传则默认。
3,万能参数。
*args, **kwargs。
4,仅限关键字参数。
*args,仅限关键字参数,**kwargs,
形参角度顺序:位置参数,*args, 默认参数,仅限关键字参数, **kwargs
实参
1,位置参数: 从左至右一一对应。
2, 关键字参数:
一一对应。
3, 混合参数(位置参数,关键字参数):
位置参数一定要在关键字参数前面,一一对应。
* 的魔性用法
函数的定义;*聚合。
函数的调用:*打散。
函数的嵌套
遇到函数名() 执行该函数
函数名的应用
1,函数名就是变量。
2,函数名对应的是函数的内存地址。
3,函数名可以作为容器类类型的元素。
4,函数名可以作为函数的参数传递。
5,函数名可以作为函数的返回值。
global
1,在局部名称空间声明一个全局变量
def func():
global name
name = 'alex'
print(name)
func()
global name
name = 'alex'
print(name)
func()
2, 在局部修改全局变量
全局不可变的变量 修改声明
nonlocal
1, 不能操作全局变量
2, 内存函数对外层函数的变量进行修改,用到nonlocal
局部不可变的变量 修改
空间,取值
空间
局部作用域
局部名称空间(临时命名空间)
函数内部的变量与值得对应关系。随着函数的执行而开启,随着函数的结束而关闭。
全局作用域
内置名称空间
存储的是内置函数print, iniput等等,模块等
全局名称空间
当前py文件中变量与值得对应关系(除去函数 类内部的变量)
加载顺序
内置--> 全局-->局部
取值顺序
就近原则 局部-->全局-->内置(单向不可逆)
函数的三大器
生成器
本质就是迭代器。
唯一的不同:生成器是自己用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
迭代
迭代器
字面意思: 重复的更新迭代的工具
专业角度:内部含有__iter__,并且含有__next__方法
优点:
1,节省内存。
2,惰性机制。
3,不走回头路。
缺点:
操作方法较少,不直观,查询速度较慢。
可迭代对象
字面意思: 重复的更新迭代的数据
专业角度:内部含有__iter__方法
可迭代对象:str,list tuple dict,set range
优点:
直观。
操作方便。
缺点:
占用内存。
转化:iter(iterable)
0 条评论
下一页