1、函数名的应用
函数名是一个特殊的变量,与括号配合可以执行函数的变量
a、函数名的内存地址:
def func():
print("哈哈")
print(func)
结果:<function func at 0x000002088C972EA0
b、函数名可赋值
def func():
print("哈哈")
a = func # 函数当成变量赋值
a() # 函数调用func()
c、函数名做容器类元素
def func1():
print("哈哈")
def func2():
print("哈哈")
def func3():
print("哈哈")
li = [func1,func2,func3]
for i in li:
i()
d、函数名做函数参数
def func():
print("哈哈")
def func2(fn):
print("我是func2")
fn() #执行传递过来的fn
print("我是func2")
func2(func) #把函数func当成参数传递给func2
结果:我是func2
哈哈
我是func2
e、函数名做函数的返回值
def func():
print("函数1")
def func2():
print("函数2")
return func2
fn = func() #执行1,返回2
fn() #执行返回的函数
2、闭包函数的变量
内层函数调用外层,让局部变量常驻内存
def func():
name = 'bubble' # 常驻内存 防止其他程序修改这个变量
def inner():
print(name)
print(inner.__closure__) # 查看是否为闭包,若为none则不是
return inner
ret = func()
ret()
3、迭代器
可迭代对象(Iterable):str,list,tuple,set,dict,range这些数据类型都包含了函数__iter__(),可以通过dir()来查看对象包含了那些东西
迭代器(Iterator):file
li = [1,2,3]
it = li.__iter__()
# 模拟for循环
while True:
try:
name = it.__next__()
print(name)
except StopIteration: #拿完了
break
4、 li = [1,2,3]
print("__iter__" in dir(li)) #判断是否可迭代
print("__next__" in dir(li)) #判断是否为迭代器
from collections import Iterable # 可迭代
from collections import Iterator # 迭代器
print(isinstance(li,Iterable)) # isinstance(对象,类型) 判断xx对象是否是xx类型
print(isinstance(li,Iterator))
总结:iterable可迭代对象,内部包含__iter__()函数
iterable迭代器,内部包含__iter__()、__next__()函数
迭代器一定可迭代,可迭代不一定是迭代器
特点:节省内存、惰性机制、不能反复,只能向下执行
python(day8)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.