1、 闭包函数必须满足三个点:
1)函数中嵌套一个函数
2)外层函数返回的是内层函数的函数名
3)内层函数对外部作用域有非全局变量的引用(不能引用全局变量)
"""
# b = 2
# def func():
# a = 10
# def wrapper():
# print(a)
# print("内部嵌套的函数")
# return wrapper
#
2、 装饰器的作用:在不修改原功能代码的基础上,给代码扩展新的功能。
# def func(fu):
# def wrapper():
# print("--------开始执行----
# fu()
# print("--------结束执行----
#
# return wrapper
#
# @func
# # 打印两个数的和
# def add():
# a = 10
# b = 20
# print("a + b =", a + b)
#
# add()
3、可迭代对象(iterable):只要可以通过for循环进行遍历的都
迭代器(iterator):能够使用next函数取值(取完所有值之
所有的可迭代对象都可以使用内置函数iter()转换为迭代器
# li = [11,22,33]
#
# li2 = iter(li)
#
# print(li2)
#
# print(next(li2))
4、生成器(generator):一种特殊的迭代器,比迭代器多几个方法
send():和生成内部进行数据交互
生成器的定义:
第一种:生成器表达式
第二种:生成器函数
只要函数中定义yield这个关键字,那么这个函数就不再是一
生成器函数在调用时,会自动返回一个生成器对象
# 生成器表达式
#
# g1 = (i for i in range(10))
# print(g1)
# print(next(g1))
# 生成器函数
# def gen():
# print("--------开始执行-------"
# for i in range(10):
# res = yield i
# print(res)
#
# g2 = gen()
# print(g2)
# print(next(g2))
# print(g2.send(666))
5、深浅复制【一般是列表嵌套列表】
# import copy
li = [4,5,6]
list1 = [1,2,3,li]
#浅复制:列表自带的copy()方法:复制一层,表面是什么就是什
list2 = list1.copy()
li.append(999)
print(list1,id(list1))
print(list2,id(list2))
#深复制deepcopy【需要导入copy模块】:会把嵌套列表的
# list3 = copy.deepcopy(list1)
# print(list1,id(list1))
# print(list3,id(list3))
# li.append(999)
# print(list1,id(list1))
# print(list3,id(list3))
python之高级编程【面试必问】
于 2021-11-19 10:33:00 首次发布