1. 在python中我们可以导入模块,来调用模块里面的函数,在一个模块中,我们可以定义很多的函数和变量,但有些函数我们并不希望被别人使用,只希望在模块内部使用,那么,我们可以通过_(下划线)前缀来实现,比如_ABC,_qiuhe,但是python并没有强制限制访问函数或变量,只是一种编程的习惯而已
2. 在python中,pip是一个包管理工具,我们通过它来安装第三方软件的,一般来说,第三方库都会在Python官方的pypi.python.org网站注册,我们进入该网址,然后搜索我们要下载的模块名进行下载
3.下载完毕以后我们就用pip工具进行安装,这里要注意的是,我们下载文件保存在哪个路径下的,如果是python不能访问的路径就会报错,我们通过import sys模块,再sys.path,查看path属性就知道python能够访问的路径,这个属性返回的是一个列表,里面有很多元素,表示的是python能访问的路径,如果我们下载的文件不再这个列表中,我们可以通过sys.path.append()进行添加路径,这种添加路径的方法自在运行时有效,运行结束后就失效了
4. 如果我们其他常用的第三方库还有MySQL的驱动:mysql-connector-python用于科学计算的NumPy库:numpy,用于生成文本的模板工具Jinja2,Pillow等等
5. 面向对象的程序设计,设计思想就是通过抽象出类class,再根据类写出具体化的实例
6. 在类中的函数和不同函数不同之处就是第一个参量永远是self
7. 在python中以双下划线开头的属性是私有属性,不能在外部进行修改的,只有内部函数可以进行修改,双下划线开头并且双下划线结尾的我们成为特殊属性,特殊属性是可以直接访问的
8. 在类里面,我们可以将属性进行私有化,前面加两个下划线,这样,在具体化一个实例后,这个实例就不能以实例名.属性=..,这样来进行修改属性的值,而且也不能以这种形式进行访问,因为属性被私有化了,如果要访问我们可以在类里面定义函数,get_属性(),set_属性(),通过实例调用这些函数来显示实例的属性,或者对实例的属性进行修改
9. 在继承关系中,如果一个实例的数据类型是某个子类,那它的数据类型也可以被看做是父类。但是,反过来就不行
10. 类其实也是一种数据类型,和int,str,list类似的,定义函数的时候,如果我们需要指定实参的数据类型,那么我们的形参名就应该是这个数据类型,def a(int,list,类名),这样,传值的时候,第一个必须是整形,第二个必须是列表,第三个必须是指定的类名。
11. 类的多态性,当某个函数里面的参数名是某个类名的时候,如果传入的实参是这个类的子类,那么函数也会把这个类当作他们的父类一样进行处理,这就是类的多态性
12. python是动态语言,参数名是某类名,因为动态性,所以python中有一中鸭子类型,也就是说不管你是不是一只鸭子,只要你走路像鸭子,那么python就认为你是鸭子,所以,传入实参的类中,只要有该函数体中涉及到的函数,就能够被调用,不需要是参数类的子类。
13. power(x,y,z)表示x的y次方再对z取余,其中z是可选的,而x,y是必选的
14. 判断一个对象是什么类型我们可以用type()函数,判断对象是否是某种类型可以用isinstance(,),利用函数dir(对象名)可以得到这个对象的所有属性(变量)和方法(函数),getattr(对象名,'属性名'),从这个函数中获取这个属性所对应的值,hasattr(对象名,'属性名'),判断这个对象属否存在这个属性,setattr(对象名,'属性名',值),将该对象里面的这个属性赋值
15. 在类中,如果定义了属于类的属性,那么在创建实例的时候,这个实例也会拥有这个类里面的所有属性,
16. __slots__特殊变量,用在类里面,用来限定以该类创建的实例可以添加哪些属性,如果添加了不在这里面的属性就会报错,__slots__=('属性名','属性名',...),如果用子类创建的实例子类中如果没有这个特殊属性,那么子类就不继承父类的这个特殊属性,如果有,那么该实例的限制就是子类加父类的限制
17. 对于绑定到类的函数和类中定义的函数的区别就是,绑定的函数只绑定到类中,对于多个实例同时调用这个函数的话,返回的是最有一个调用结果,也就是说会覆盖,对于内部定义的函数就相当于,绑定到每个实例,那么多次调用的时候,各自返回各自调用的结果。
18. 定义在类中的方法一般都是动态方法(如过不强制静态的话),这种动态方法,类是不能直接调用的,必须绑定到一个实例上,通过实例才能调用,定义在类中的属性也是一样的,是静态的,但是实例是可以访问的,但该属性只属于类,不属于实例,如果实例添加了一个和类属性一样的属性,那么实例就可以更改属性值。
19. 多重继承指的是一个子类可以继承多个父类,那么这个子类就可以有多个父类的属性和方法
20. a.__len__就相当于len(a)
21. 通过在类中写入__iter__ (),__next__()函数来将类变成一个可迭代对象,__iter__()函数将类变成可迭代对象,而__next__()将一个一个取出值,其实for .. in ...语句里面的循环变量取后面的可迭代性的值就是通过next函数一个一个取出的,