異常處理 面向對象 迭代器和生成器 python異常處理 下麵代碼觸發了一個FileNotFoundError 拋出異常 異常類型 捕獲異常使用try,except,finally,else python面向對象 python是完全面向對象的,python中一切都是對象,包括變數,函數等。 定義一個 ...
- 異常處理
- 面向對象
- 迭代器和生成器
python異常處理
- 下麵代碼觸發了一個FileNotFoundError
>>> open("notexist.txt") Traceback (most recent call last): File "<stdin>", line 1, in <module> FileNotFoundError: [Errno 2] No such file or directory: 'notexist.txt'
- 拋出異常
>>> raise FileNotFoundError
- 異常類型
- 捕獲異常使用try,except,finally,else
try: open(r"c:\Users\kingsoft\Desktop\notexist.txt") except FileNotFoundError as e: print ("file not exist...") except (name1,name2): print ("io error is true...") else: print ("file exist..") finally: print ("always do...")
python面向對象
python是完全面向對象的,python中一切都是對象,包括變數,函數等。
- 定義一個對象
class MyException(): pass
- self 和init方法
class Person(): def __init__(self, name): self.name = name def sayname(self): print self.name m = Person("joe") print(m.sayname())
- 區分類和類的實例
class Person(): def __init__(self, name): self.name = name Person.name = name def sayname(self): print("myname is :" + self.name) print("myexceptionname is: " + Person.name) def changeothername(self, name): Person.name = name def __del__(self): print(self.name + "is gone") m = Person("joe") m.sayname() print("m.name : " + m.name) m.test="tt" print(m.test) j = Person("jason") j.sayname() j.changeothername(j.name) m.sayname()
- 類的繼承,多態和封裝概念
生成器和迭代器
- _iter_方法返回迭代器,迭代器指有next方法的對象
class Fibs(object): """docstring for Fibs""" def __init__(self, max): self.max = max self.a = 0 self.b = 1 def __next__(self): fib = self.a if fib > self.max: raise StopIteration self.a, self.b = self.b, self.a + self.b return fib #返回迭代器 def __iter__(self): return self fib = Fibs(1000) for f in fib: print(f, end= " ")
- 可迭代對象Iterable和迭代器Iterator
- 生成器,生成器通過yield語句快速生成迭代器,讓函數變成一個生成器
#斐波那契數列 def getfibs(max): a = 0 b = 1 while a < max: a, b= b, a+b value = a yield value print(getfibs(1000)) for i in getfibs(1000): print(i)
- 簡單理解生成器
def gen(): yield "hello" yield "how" yield "are" yield "you" for i in gen(): print(i)