Python中的错误处理
Python中的异常处理
2016.12.06
Handling Exceptions即异常处理,下面举一个在Python中异常的举例。
while True: try: x=int(input("Please enter a number:")) break except ValueError: print("Oops! That was no valid number. Try again...")在离开try语句之前,始终执行finally子句,无论是否发生异常。 当在try子句中发生异常并且没有被except子句处理(或者它出现在except或else子句中)时,它在执行finally子句之后重新生成。 当通过break,continue或return语句留下try语句的任何其他子句时,finally子句也被“在出口”执行。 一个更复杂的例子:
try: raise KeyboardInterrupt finally: print('Goodbye,world!')在离开try语句之前,始终执行finally子句,无论是否发生异常。 当在try子句中发生异常并且没有被except子句处理(或者它出现在except或else子句中)时,它在执行finally子句之后重新生成。 当通过break,continue或return语句留下try语句的任何其他子句时,finally子句也被“在出口”执行。 一个更复杂的例子:
def divide(x, y): try: result = x / y except ZeroDivisionError: print("division by zero!") else: print("result is", result) finally: print("executing finally clause")实例化操作(“调用”类对象)创建一个空对象。 许多类喜欢创建具有针对特定初始状态定制的实例的对象。 因此,类可以定义一个名为__init __()的特殊方法,如下所示:
def __init__(self): self.data = []
当类定义了__init __()方法时,类实例化会为新创建的类实例自动调用__init __()。 所以在这个例子中,一个新的初始化实例可以通过以下方式获得:
x = MyClass()
__init __()方法可以具有更大灵活性的参数。 在这种情况下,赋给类实例化运算符的参数被传递给__init __()。 例如,
>>> class Complex: def __init__(self, realpart, imagpart): self.r = realpart self.i = imagpart >>> x = Complex(3.0, -4.5) >>> x.r, x.i (3.0, -4.5)
x.counter = 1 while x.counter < 10: x.counter = x.counter * 2 print(x.counter) del x.counter 一般来说,实例变量用于每个实例唯一的数据,类变量用于类的所有实例共享的属性和方法:
class Dog: kind = 'canine' # class variable shared by all instances def __init__(self, name): self.name = name # instance variable unique to each instance >>> d = Dog('Fido') >>> e = Dog('Buddy') >>> d.kind # shared by all dogs 'canine' >>> e.kind # shared by all dogs 'canine' >>> d.name # unique to d 'Fido' >>> e.name # unique to e 'Buddy'