迭代器 (iterator) 可迭代对象 (iterable) 闭包 函数名的应用

"""
11.迭代器
本节主要内容:
1.函数名的使用以及第一类对象
2.闭包
3.迭代器
"""


# 函数名的应用是一个变量,但它是一个特殊的变量,与括号配合可以执行函数的变量

# 1.函数名的内存地址
def func():
print("你吃了吗?")


print(func) # 打印的是内存地址


# 2.函数名可以赋值给其他变量
def func():
print("你好,吃饭了吗")


print(func) # 打印的是函数func的地址位置
a = func # 将func函数名 赋值给变量a
a() # 使用()将函数func执行起来


# 3.函数名可以当做容器类的元素

def func1():
print("你好,吃饭了吗_1")


def func2():
print("你好,吃饭了吗_2")


def func3():
print("你好,吃饭了吗_3")


def func4():
print("你好,吃饭了吗_4")


lst = [func1, func2, func3]
for el in lst:
el()


# 4.函数名可以当做函数的参数

def func():
print("吃了吗?")


def func2(fu):
print("我是func2")
fu()
print("我是func2")


func2(func)


# 5.函数名可以作为返回值

def func_1():
print("这里是函数1")

def func_2():
print("这里是函数2")

print("这里是函数1")
return func_2


fu = func_1()
fu()


# 二 闭包 内层函数对外层函数变量的一个引用

def func():
name = "alex" # 1.常驻内存 2.防止其他程序改变这个变量

def inner():
print(name) # 在内层函数中调用外层函数的变量,叫闭包 可以让一个局部变量常驻内存

return inner


ret = func()
ret()
# 闭包的好处 url 统一资源定位符
# 迭代器 "__iterable__()" 的数据类型都是可迭代的数据类型iterable
# 来查看一个对象,数据类型中包含了哪些东西

lst = ['yuxin', 'niehaiyuan', 'niehaixing', ]
it = lst.__iter__() # 获取迭代器
print(it.__next__()) # yuxin
# 模拟for循环
it = lst.__iter__()
while True:
try:
name = it.__next__()
print(name)
except StopIteration:
break

# 迭代器的特点:
# 1.节省内存
# 2.惰性机制
# 3.不能反复,只能向下执行
"""
今日主要学习内容:
1.函数名的应用,第一类对象
函数名可以像变量一样进行使用
1.赋值
2.作为list元素
3.作为参数
4.作为返回值
2.闭包:
内部函数访问外部函数的局部变量.
好处:
1.安全
2.常驻内存,提高效率
3.迭代器
可迭代对象(iterable):内部包含 __iter__().
迭代器(iterator): 内部包含 __iter__() __next__() 迭代器也是可迭代对象
可迭代对象: str lsit tuple set dict
迭代器 f range

迭代器的特点:
1.省内存
2.惰性机制
3.只能往后走
"""
posted @ 2021-10-31 22:34  余鑫2020  阅读(81)  评论(0)    收藏  举报