闭包与迭代器
1.python内置函数
def compare(*args): return max(args),min(args) a,b=compare(1,2,3,4,5,6) print("max:{},min:{}".format(a,b))
2.若定义的函数参数为可变类型的变量,若果调用改变了此变量,其他可以看到此位置的变量也跟随改变
def extendList(val, list=[]): list.append(val) return list list1 = extendList(10) list2 = extendList(123, []) lis3=extendList("a") print('list1=%s' % list1) print('list2=%s' % list2) print('list3=%s' % lis3)
3.闭包
def fun(): name="jack" def inner(): print(name) return inner c=fun() print(c())
闭包是内层函数对外层函数变量的引用,目的一是为了使变量常驻内存,二是为了保证参数的安全性
4.迭代与迭代器
迭代数据类型:str,list,dict,tuple,文件操作句柄
同过dir()查询类中定义好的方法,查询是否有__iter__()方法,如若对象中有__iter__()方法,则我们认为次类遵循了迭代协议,可以用此方法获取迭代器
lis=[1,2,3,4,5] it=lis.__iter__() while 1: try: c=it.__next__() print(c) except: StopIteration break