2019-09-23-23:48:00
今日所学的内容有:
一.重要知识点
1, 函数名的应用,第一类对象
函数名可以像变量一样进行使用
1.赋值
2.作为list元素
3.作为参数
4.作为返回值
2, 闭包
内部函数访问外部函数的局部变量.
注意:变量写在全局是不安全的,所以有闭包,闭包可以防止其他程序改变这个变量
好处:
1.安全
2.常驻内存. 提高效率
3, 迭代器
可迭代对象(Iterable):内部包含__iter__().
迭代器(Iterator): 内部含有__iter__() __next__()
可迭代对象:str, list, tuple, set, dict
迭代器:f, range
dir()来查看一个对象,数据类型中包含了哪些东西
迭代到最后一个元素之后. 再进行迭代就会报错
isinstence(对象, 类型) 判断xx对象是否是xxx类型的
迭代器一定是可迭代的
我们可以使⽤用__closure__来检测函数是否是闭包. 使⽤用函数名.__closure__返回cell就是闭包. 返回None就不是闭包
迭代器的特点:
1.省内存
2.惰性机制
3.只能向前.
二.错误总结
1.内存地址的概念
def extendList(val,list=[]):
list.append(val)
return list
list1 = extendList(10)
list2 = extendList(123,[])
list3 = extendList('a')
print('list1=%s' % list1)
print('list2=%s' % list2)
print('list3=%s' % list3)
#注意:这里是容易出错在内存地址的指向是否有改变
最后真的有点不知道怎样写博客好.有点难受.