python 函数碎片化知识点
args: arguments 参数的意思
kwargs:keyword arguments 关键字参数的意思
*args : 可以接收任意多个位置参数, 元组
例子 def fn1(*args )
print(args )
fn(1,2,3)
**kwargs: 接收任意多个关键字参数,字典
例子 def fn1(**kwargs )
print(kwargs )
fn(a=1, b=2, c=3)
返回值: 如果不写return 默认返回None; return 会立刻结束函数,并返回值
函数参数顺序:
形参顺序: 位置参数, *args, 默认参数, **kwargs
如: def fn(a, b, *args, c=1, e=2, **kwargs)
函数嵌套
函数名称: 既是函数名,也是指向该函数的变量(对象);只要是指向该函数的变量,就可以调用该函数。
def fn3(x)
print("fn3:", x )
fn3(1) #fn3: 1
f3 = fn3
f3(2) #fn3: 2
匿名函数: lambda
特点: 没有函数名称; 自带return; 只表示一些简单,有返回值的函数
def fn(x):
return x**2
=> lambda x: x**2
高阶函数 : 把一个函数作为参数传入另外一个函数中
map: 映射,对列表做批量处理
n = map(lambda x:x**3)
print(list(n)) # [1, 8, 27]
filter: 过滤,找到符合要求的数据
n = filter(lambda x: x>0, [-1, -2 0, 3])
print( list(n ))
回调函数: 把函数当做参数传入另一个函数中
def fn(n, cb)
n2 = cd(n)
sort(key = lambda)
降序: reverse = True
print(n2) ## 9
fn(3, lambda x: x**2).
函数的作用域:变量起作用的范围
全局变量: 全局作用域,不会释放内存
局部变量: 局部作用域,退出作用域(函数)时会自动将变量占的内存释放掉
if while for 语句没有作用域
关键字: global nonlocal(声明使用的是函数作用域下的变量)
闭包: 函数嵌套,且返回内部函数,就会形成闭包、
装饰器:作用是在其他函数的前面或者后面添加功能,但是不修改原函数
列表推导式: 用一行代码快速生成新列表
nums = [ i for i in rang(1, 6)]
生成器函数:
1、函数内部要有yield
2、需要用next来调用
3、每个next都会在yield处暂停
4、 yield 会暂停,可以返回值
yield 用来定义生成器(generator),遇到 yield 就暂停函数,把值返回出去;下次迭代的时候,从暂停位置继续往下执行,不是从头跑。
普通函数 return:直接结束函数,销毁局部变量。 yield:暂停 + 保留现场。
next() 是驱动生成器 / 迭代器往下走一步的内置函数,去执行代码直到碰到 yield,拿到产出的值;没有更多元素时抛出 StopIteration
例如:
def demo():
yield 1。
yield 2
g = demo() # 生成器对象,此时函数代码还没执行! res1 = next(g) # 启动,执行到 yield 1 → 返回1,暂停 res2 = next(g) # 从暂停位置继续跑,到 yield2 → 返回2,暂停 next(g) # 后面没有yield了,抛出 StopIteration
迭代器 Iterator
可迭代对象 Iterable
type() : 查看数据类型
isinstance() 判断某个变量是否为某个数据类型
可迭代器 Iterator
可以使用for循环遍历
可以使用next 调用
可迭代对象 Iterable
可以使用for循环遍历
iter() 可以把可迭代对象转换成 迭代器

浙公网安备 33010602011771号