函数总结

    函数: 对功能或者动作的封装 类中的函数一般是方法
语法:
def 函数名(参数):
函数体(return)

ret = 函数名(实参)

函数名: 函数名就是一个变量名. 可以进行赋值. 可以作为参数, 可以作为返回值. 还可以作为集合类的元素
参数:
给函数传递的信息
1. 形参:
在函数声明的位置定义的变量.
分类:
1. 位置参数
2. 默认值参数, 共享
3. 动态传参
1. *args 动态接收位置参数
2. **kwargs 动态接收关键字参数
*,** 在形参位置表示聚合
*,** 在实参位置表示打散
顺序:
位置, *args, 默认值, **kwargs

def func(*args, **kwargs): 无敌传参
pass

2. 实参:
在函数调用的时候给函数传递的具体的值.
分类:
1. 位置参数
2. 关键字参数
3. 混合参数. 位置在前, 关键字在后
3. 传参:
把实参传递给形参的过程叫传参

名称空间:
1. 内置名称
2. 全局名称
3. 局部名称
作用域:
1. 全局作用域
2. 局部作用域
globals() 查看全局作用域中的内容
locals() 查看当前作用域中的内容

global 在局部引入全局变量, 创建全局变量
nonlocal 在局部, 引入离他最近的上一个变量

函数的嵌套:
def func():
def inner():
pass
return inner

闭包: 在内层函数访问外层函数中的变量. 最好是返回内层函数
作用:
1. 保护变量不被更改
2. 可以让一个变量常驻内存

def func():
a = 10
def inner():
return a
return inner
迭代器:
可迭代对象: 在数据类型中包含了__iter__.
迭代器: 访问__iter__可以获取到该数据类型的迭代器. 包含__iter__和__next__

特点:
1. 省内存
2. 惰性机制
3. 只能向前
模拟for循环
lst = []
it = lst.__iter__() # iter(lst)
while 1:
try:
it.__next__() # next(it)
except StopIteration:
break

生成器:
生成器的本质是迭代器
生成器有三种方式来创建:
1. 生成器函数
2. 生成器表达式
3. 类型转换(range())
生成器函数:
生成器函数中包含yield
yield表示返回. 可以分段的执行函数

生成器函数在被调用的时候. 获取生成器. 而不是执行函数
def func():
yield xxxx
func() # 获取生成器

生成器使用:
1. __next__() 执行到下一个yield
2. send() 可以给上一个yield传值

yield from:
把一个可迭代对象转换成生成器

生成器表达式:
(结果 for if)

内置函数: 68个.

lambda:
匿名函数
lambda 参数: 返回值






posted @ 2019-03-29 21:45  菘蓝_YS  阅读(138)  评论(0编辑  收藏  举报