|
第八天
1.主题:高阶函数与OOP
https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014317852443934a86aa5bb5ea47fbbd5f35282b331335000
2.摘要
map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。
reduce把一个函数作用在一个序列[x1, x2, x3, ...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算;
filter()也接收一个函数和一个序列。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。
sorted()也是一个高阶函数。用sorted()排序的关键在于实现一个映射函数。它还可以接收一个key函数来实现自定义的排序。
按目录来组织模块的方法,称为包(Package)。
面向对象的设计思想是从自然界中来的,因为在自然界中,类(Class)和实例(Instance)的概念是很自然的。Class是一种抽象概念,比如我们定义的Class——Student,是指学生这个概念,而实例(Instance)则是一个个具体的Student,比如,Bart Simpson和Lisa Simpson是两个具体的Student。
所以,面向对象的设计思想是抽象出Class,根据Class创建Instance。
面向对象的抽象程度又比函数要高,因为一个Class既包含数据,又包含操作数据的方法。
数据封装、继承和多态是面向对象的三大特点。
和普通的函数相比,在类中定义的函数只有一点不同,就是第一个参数永远是实例变量self,并且,调用时,不用传递该参数。除此之外,类的方法和普通函数没有什么区别,所以,你仍然可以用默认参数、可变参数、关键字参数和命名关键字参数。
方法就是与实例绑定的函数,和普通函数不同,方法可以直接访问实例的数据;要定义一个方法,除了第一个参数是self外,其他和普通函数一样。
3.心得感悟
class==类==香烟类、汽车类、人类
instance==实例==红塔山、比亚迪、王老三
直接在Student类的内部定义访问数据的函数就把“数据”给封装起来了。这些封装数据的函数是和Student类本身是关联起来的,我们称之为类的方法method;==类内部定义的可访问类内部数据的内部函数。
再难也要爬下去。。。加油啊
4.时间统计
昨日阅读5小时,累计145小时
|