python2

编码格式

ASCII其最多只能用 8 位来表示(一个字节),即:2**8 = 256,所以,ASCII码最多只能表示 256 个符号;
ASCII码最左边一位是0,再设计之初是七位预留了一位为后续发展使用,当时设计时只考虑到美国本土的使用。ASCII无法将世界上的各种文字和符号全部表示,所以,就需要新出一种可以代表所有字符和符号的编码,即:Unicode,

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()
View Code

 

 

 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)
View Code

 

 

 

 

posted @ 2017-10-20 16:31  dwenwen  阅读(247)  评论(0)    收藏  举报