singer 2019-12-20
一、python3的一些不同之处的简记:
1)python中用elif代替了else if,所以if语句的关键字为if-elif-else(并不是说不能有if-else)。
2)每个条件后面都要使用冒号‘:‘,表示接下来是满足条件后要执行的语句块。
3)python采用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。
4)python中没有switch-case语句。
5)python中没有do-while循环。
6)break用于跳出for/while的循环体,没有下一轮的说法了。而continue用于跳过当前循环块中的剩余语句,然后继续进行下一轮循环。
7)循环语句可以有else字句,它在穷尽列表(以for循环)或条件变为false(以while循环)导致循环终止时被执行,但循环被break终止时不执行。
8)python3已经不支持<>运算符,但是可以使用 != 代替。
9)end关键字可以用于将结果输出到同一行中。或者说在输出的末尾添加不同的字符:如:
>>> a,b = 0,1
>>> while b < 1000:
>>> print(b,end=‘,‘)
>>> a,b = b,a+b #这部分的赋值是同一层的,也就是:不是执行a = b后,更新了a的值,再执行b = a+b。
执行上面的程序,将会输出:1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,
二、python面向对象的简记
1、创建一个类:
>>>class Myclass:
>>> i = 123 #类的属性
>>> __j = 0 #带双下划线的为类的私有属性,私有属性在类外部是无法直接进行访问的,在类内部直接使用self.__j调用就行。
>>> def fun(self): #类的方法
>>> return ‘yang‘
>>> def __fun1(self): #类的私有方法,以两个下划线开头,只能在类内部调用,不能在外部调用,间接调用也不行。
>>> return ‘yangrongkuan‘
2、创建对象(类的实例):对象包括两个数据成员(类变量和实例变量)和方法。
>>>x = Myclass() #将该对象赋给局部变量x,x此时为空的对象
3、类的构造函数:
>>>def __init__(self): #跟其他语言一样,可以创建为带参构造函数
>>> pass
这里顺便总结一下继承中的构造函数调用问题:
a、子类不重写__init__()方法的话,实例化子类后,子类会自动调用父类的__init__()方法。
b、子类如果重写__init__()方法的话,实例化子类后,子类将不会调用父类的__init__()方法。
c、子类如果重写__init__()方法,但又需要调用父类的构造方法的话,可以使用super关键字进行调用:
super(子类类名,self).__init__(参数1,参数2,...)
或者:父类名称.__init__(self,参数1,参数2,...)
4、python的类的方法与普通函数的区别:它们必须有一个额外的第一个参数名称-self(self代表的是类的实例,代表当前对象的地址,不是类,self.class则是指向类)。也就是说,带self的那是方法,不带self的那些是函数。且是用def关键字来定义一个方法。 【当然,用self不是定死的,也可以用this代替,但是一般按照约定用self】
5、继承:
>>>class DerivedClassName(BaseClassName1,BaseClassName2,BaseClassName3...):
>>> pass
如果是多继承的话,若基类中有相同的方法名,而在子类使用时没有指定,python会从左到右的顺序查找基类中是否包含方法。(所以要注意顺序)
6、类变量和实例变量:
类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
在类的声明中,属性是用变量来表示的,这种变量就称为实例变量,实例变量就是一个用 self 修饰的变量。