Python基础学习(7)

谢谢指正错误!
46. 异常:处理异常是使用try/except方式,在try中包含会可能抛出异常的代码,在except中指明所抓取的异常,并按照接下来代码处理异常,可以一次处理多个异常,也可逐个处理异常。
Python基础学习(7)_第1张图片
Python基础学习(7)_第2张图片
当except后不接任何异常,即默认捕获所有异常然后执行其后操作。

清理操作finally,在try/except后使用,即不论执行try的内容还是except内容,在执行后都要执行finally的内容。

为了确保即使异常发生也能及时进行清理操作,例如关闭文件,还可以采用with语句,例如:

>>>num = 1
>>>f = open('test.txt')
>>>for line in f:
    print('%04d %s' % (num,line),end='')
num += 1
>>>with open('list.py','r') as f:
      for line in f:
        print('{0:04} {1}'.format(num,line),end='')
        num += 1

当for循环结束时,with语句将立即关闭文件,避免了不再需要的f处于打开状态。

47. 类的创建:例如:

#person.py
class Person:
 """Class to represent a person
 """
 def __init__(self):
  self.name = ‘’
  self.age = 0

这个名为Person的类中,包含name和age,当前唯一一个函数_init_,这是用于将对象值初始化的标准函数。当你创建Person对象时,python将自动调用_init_
术语说明:在一些OOP语言中,_init_被称为构造函数,因为它构造对象,每次创建新对象时,都将调用构造函数。在Java和c++中使用new。

当我们使用语句p=Person()时,并没有提供任何参数,但是函数期望传入一个名为self的输入,这是因为在OOP中,self是一个指向对象本身的变量。

所有类都必须要有_init_(self),这个方法的职责是初始化对象,方法_init_仅被调用一次,即创建对象时调用。

显示对象:1.采用定义函数来显示,
2.采用Python提供的特殊方法_str_用于生成对象的字符串,需要使用print显示

 #Person.py
class Person:
    """Class to represent a person
    """
    def __init__(self):
        self.name = ''
        self.age = 0
    def display(self):
        print("Person('%s',%s)" %  (self.name,self.age))
    def __str__(self):
        return "Person('%s',%s)" % (self.name,self.age)
p = Person()
print(str(p))#直接print(p)即可
p.display()

3.还可以定义特殊方法_repr_,它返回对象的官方表示,在大多数类中,方法_repr_都与_str_相同,如果定义了_repr_,但是没有定义_str_,则对对象调用str()时,将执行_repr_

class Person:
    """Class to represent a person
    """
    def __init__(self):
        self.name = ''
        self.age = 0
    # def display(self):
    #     print("Person('%s',%s)" % (self.name,self.age))
    # def __str__(self):
    #     return "Person('%s',%s)" % (self.name,self.age)
    def __repr__(self):
        return "Person('%s',%s)" % (self.name,self.age)
p = Person()
print(str(p))

初始化可以在_init_的参数列表进行,不过要更改其参数列表,例如:

class Person2:
    def __init__(self,name='',age=0):
        self.name = name
        self.age = age
        def set_age(self,age):
            if 0150
            self.age = age

对于设置函数,我们可以看到,其p.set_age = 30 相比 p.age = 30更加繁琐,于是,可以使用装饰器,装饰器的语法结构@装饰器,本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。它经常用于有切面需求的场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景。装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量与函数功能本身无关的雷同代码并继续重用。概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能。
http://blog.csdn.net/money_bear/article/details/11730729 中对于装饰器的介绍尤为详细。

48. 私有变量:当在Person类中使用p.age=-4时,根据if判断并不会赋值,但是当使用p._age访问时,便会改变age的值,为了尽量避免这种情况,一般来说给私有变量加上两个下划线开头,p.__age,表明它是私有变量。但是,不以下划线打头的变量是公有变量,任何代码都可以访问。tips:编写大型程序时,一般先将所有对象变量设为私有的,再在需要的情况下改为公有变量。

49. 继承:继承是一种重用类的机制,能创建全新的类:给原有的类进行拷贝和拓展。
继承是将父类作为参数写在子类的参数中,例如有父类Father,现在定义子类Son,

class SonFather):
    pass

这是对于Python来说是一个最简单的继承,pass代表什么都不做,完全继承全有的内容,但是也可以重写方法,即使用相同的函数名,表示在子类中覆盖父类中的这个方法。

50. 常用的一些Python包:
PIL:Python图像处理库
Tkinter:Python GUI
Django:交互式网站
Bottle:交互式网站
Pygame:2D动画
Scipy:科学计算
Twisted:网络编程
PyPI:Python包索引


乌拉拉,终于学习完《Python编程入门》了,也对Python有了初步认识,接下来就是学习《Python Cookbook》了,嘻嘻。

你可能感兴趣的:(python)