python2
编码格式
ASCII其最多只能用 8 位来表示(一个字节),即:2**8 = 256,所以,ASCII码最多只能表示 256 个符号;
ASCII码最左边一位是0,再设计之初是七位预留了一位为后续发展使用,当时设计时只考虑到美国本土的使用。ASCII无法将世界上的各种文字和符号全部表示,所以,就需要新出一种可以代表所有字符和符号的编码,即:Unicode,
View Code
View Code
Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定虽有的字符和符号最少由 32 位来表示(4个字节),即:2 **32 ,
注:此处说的的是最少4个字节,可能更多(中文是用四个字节表示,造成了资源的浪费,中文有九万多字)
UTF-8,是对Unicode编码的压缩和优化,他不再使用最少使用4个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存...(中文用三个字节表示)
gdk仅国内使用,一个中文用2个字节表示
python2
源码重复量大,语法不清晰,掺杂着c,java、PHP的陋习
由于python2的编码方式是ASCII,无法表示中文,如果要表示中文的话,需要在代码顶端输入#!-*- encoding:utf-8 -*-
程序交互使用raw_input
print ‘dsfa' 与 print(‘asdf’)两种表示方法
print(5/2)在进行除法运算时,只保留整数部分,只有进行运算的两个数有小数部分时,才会保留有小数
>>> print('abc') abc >>> print 'abc' abc >>> print(5/2) 2 >>> print(5.0/2.0) 2.5 >>>
xrange (python3中的是range,使用方法是一样的)
python2.7既有经典类又有新式类
经典类和新式类的多继承问题,继承顺序问题
经典类:博大精深,所以经典类就是深度优先,先往深处找
新式类:广度优先
class F(object): pass def f(self): print('F') class E(F): pass def f(self): print('E') class D(F): pass # def f(self): # print('D') class B(D): pass # def f(self): # print('B') class C(E): pass def f(self): print('C') class A(B,C): pass # def f(self): # print('A') a = A() a.f()





python2没有A.mro()方法,python3有该方法,可以使用print(A.mro())可以查看新式类的继承顺序,且python3中只有新式类
只要子类有,就用子类的属性或方法
只要想用父类的,就用Animal.eat(snoopy) 父类名.父类的方法(子类对象) ---这是2.7经典类中的调用方法
python2中没有super方法
class Animal: def __init__(self, name,aggressivity,life_value): self.name = name self.aggressivity = aggressivity self.life_value = life_value def eat(self): self.life_value+=10 class Dog(Animal): def __init__(self, name, breed, aggressivity, life_value): Animal.__init__(self,name,aggressivity,life_value) self.breed = breed #派生属性:父类没有的属性 def bite(self,people): #派生方法:父类没有的方法 people.life_value -= self.aggressivity #人 class Person(Animal): def __init__(self, name, aggressivity, life_value, money): # Animal.__init__(self,name,aggressivity,life_value) super().__init__(name,aggressivity,life_value) #新式类 self.money = money #派生属性:父类没有的属性 def attack(self,dog): #派生方法:父类没有的方法 dog.life_value -= self.aggressivity def get_weapon(self,weapon_obj): if self.money > weapon_obj.price: self.money -= weapon_obj.price # 金老板花钱买武器 self.weapon = weapon_obj # 金老板装备打狗棒 self.aggressivity += weapon_obj.aggr # 金老板的攻击力增加了 snoopy= Dog('太白','京巴',250,500) print(snoopy.name) print(snoopy.breed) snoopy.eat() print(snoopy.life_value) super(Dog,snoopy).eat() #Animal.eat(snoopy) print(snoopy.life_value)

浙公网安备 33010602011771号