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 名字 获取函数名