day_10 函数名,闭包,迭代器

1. 函数名的使用
   1.函数名是一个变量,函数名储存的是函数的内存地址
   2.函数名可以赋值给其他变量
   3.函数名可以当容器类对象的元素
   4.函数名可以当其他函数的参数
   5.函数名可以做函数的返回值
2.闭包:闭包就是内层函数对外层函数(非全局)变量的使用
   1.闭包的作用
     1.可以保护变量不收侵害
	 2.常用变量常驻内存
   2.闭包的判断
     1.print(函数名._closure_)  返回值为cell表示闭包,返回值为NONE表示不是闭包
	 2.闭包后内层函数怎么访问外层函数?
	 一层层返回就行
	 列:def func1():
			def func2():
				def func3():
					print("嘿嘿")
			return func3
		return func2
		func1()()()

  

3.迭代器 
    1.查看变量能够执行的方法 dir
    2.itrator:迭代器,具有的方法  _iter_(),_next_()
    3.iterable:可迭代的对象 具有的方法  _iter_()
    for循环的机制
    i=lst._iter_()
    while 1:
        try:
            el=i._next_()
            print(el)
        except stopitration
            break
    从迭代器中获取元素的唯一方法_next_
    4.三个特征:
     1.省内存
     2.惰性机制
     3.只能向前(迭代器是一次性用品,想返回只能重新获取迭代器)
4.如何判断对象是否可迭代
  1.print(dir(对象))  出现了_iter_->可迭代对象
  2.print(dir(对象))  出现了_next_->迭代器
     print("__iter__" in dir(lst)) # True 可迭代的
     print("__next__" in dir(lst)) # False 不是迭代器
     i=xx._iter_(),能够执行的话,i就是一个迭代器,迭代器本身是可迭代的
  3.from cellection import iterable,itreator
    print(isinstance(lis,itreable))  TRUE
    print(isinstance(lis,itreator))  FALSE
5.关联的小点
     1.defunc(a,b)
     '''
     文档注释
     这个函数用来计算两个数的和并返回
     :param a: 第一个数
     :param b: 第二个数
     :return:  第一个数和第二个数的和
     author:sylar
     date:2018-10-31
     '''
     print("我是func")
     return a + b
 print(func.__doc__) # document 文档注释
 print(func.__name__) # name 名字 获取函数名
     




原文地址:https://www.cnblogs.com/tjp40922/p/9890311.html