一.函数的命名:
1.函数的名的应用(第一类对象)
函数名的命名规范和变量是一样的.
函数名其实就是变量名
1 def func(): 2 print('我是一个小小的函数') 3 a=func 4 func() 5 6 func=3 7 print(func)
可以作为列表中的元素进行存储:
1 def func1(): 2 print('我是1') 3 def func2(): 4 print('我是2') 5 def func3(): 6 print('我是3') 7 lst=[func1,func2,func3] 8 for el in lst: 9 el()
可以作为参数传递给函数:
1 def my(): 2 print("我是my") 3 def proxy(fn): 4 print('在处理之前') 5 fn() 6 print('在处理之后') 7 proxy(my)
可以作为函数的返回值
1 def func1(): 2 print('我是func1') 3 def func2(): 4 print('我是func2') 5 def func(fn, gn): 6 print('我是funcc') 7 fn() 8 gn() 9 print('哈哈') 10 func(func1,func2)
2.闭包
闭包:在内层函数中访问外层函数的局部变量
好处:
1.保护你的变量不受外界影响
2.可以让变量常驻内存
写法:
1 def outer(): 2 a=10 3 def inner() 4 print(a) 5 return inner
3.迭代器
使用dir来检查看该数据包含了哪些方法
用来遍历列表,字符串,元组......可迭代对象
可迭代对象:Iterable,里面有__iter__()可以获取迭代器,没有__next__()
1 s=123 2 for i in s: 3 print(i) 4 print(dir(str)) 5 print(dir(list)) 6 print(dir(int)) 7 s='唐太宗李世民' 8 it=s.__iter__() 9 # print(dir(it)) 10 print(it.__next__()) 11 print(it.__next__()) 12 print(it.__next__())
迭代器特点:
1.只能向前
2.惰性机制
3.省内存(生成器)
for循环的内部机制.
1.首先获得迭代器.
2.使用while循环获取数据
3.it.__next__()来获取数据.
4.处理异常try:xxx except StopIteration:
1 lst = ['李渊', '李世民', '李治', '武曌', '李显', '李旦'] 2 # for el in lst: 3 # print(el) 4 i=lst.__iter__() 5 while 1: 6 try: 7 print(i.__next__()) 8 except StopIteration: 9 break