函数的进阶

一.函数的命名:

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
原文地址:https://www.cnblogs.com/982336352ryan/p/9457532.html