1. 程式人生 > >python基礎--異常,對象和叠代器

python基礎--異常,對象和叠代器

代碼 error: cto not 中一 val tex .cn data-

  • 異常處理
  • 面向對象
  • 叠代器和生成器

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)

  

python基礎--異常,對象和叠代器