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)

  

时间: 2024-10-07 07:32:09

python基础--异常,对象和迭代器的相关文章

python基础-异常

什么是异常? python用异常对象(exception object)来表示异常情况.遇到错误后,就会引发异常.如果异常未被处理或捕获,程序就会用所谓的回溯(traceback)终止执行. >>> 1 / 0 Traceback (most recent call last): File "<stdin>", line 1, in <module> ZeroDivisionError: integer division or modulo b

第八章 Python可迭代对象、迭代器和生成器

8.1 可迭代对象(Iterable) 大部分对象都是可迭代,只要实现了__iter__方法的对象就是可迭代的. __iter__方法会返回迭代器(iterator)本身,例如: >>> lst = [1,2,3] >>> lst.__iter__() <listiterator object at 0x7f97c549aa50> Python提供一些语句和关键字用于访问可迭代对象的元素,比如for循环.列表解析.逻辑操作符等. 判断一个对象是否是可迭代对象

(转)python基础学习-----生成器和迭代器

在Python中,很多对象都是可以通过for语句来直接遍历的,例如list.string.dict等等,这些对象都可以被称为可迭代对象.至于说哪些对象是可以被迭代访问的,就要了解一下迭代器相关的知识了. 迭代器 迭代器对象要求支持迭代器协议的对象,在Python中,支持迭代器协议就是实现对象的__iter__()和next()方法.其中__iter__()方法返回迭代器对象本身:next()方法返回容器的下一个元素,在结尾时引发StopIteration异常. __iter__()和next()

Python基础(7)——迭代器&amp;生成器

1.列表生成式 1 [i*2 for i in range(10)] 2 [fun(i) for i in range(10)] 2.生成器 1 # Author Qian Chenglong 2 3 #列表生成器 4 a=(i*2 for i in range(10)) 5 #a[1]#只是将算法存储了,只有在调用时才会生成相应的数据,不能直接读取 6 a.__next__()#生成器只能一个一个往后取,且只存储当前值 7 8 #函数生成器 9 10 # def fib(max): 11 #

python基础之三大器中迭代器和生成器

迭代器 迭代对象: 在python中,但凡内部含有iter方法的对象,都是可迭代对象. **迭代器: 在python中,内部含有__Iter__方法并且含有__next__方法的对象就是迭代器.** 可迭代对象 str list set dic python中规定,只要具有__ iter__()方法就是可迭代对象 str.__iter__()# list.__iter__()# tuple.__iter__()# dict.__iter__()# set.__iter__() 将可迭代对象转换成

[python] 之 异常对象

一.异常对象 类异常支持异常的层次结构:超类变成分类名称,而子类变成这个分类中特定种类的异常.except字句列出一个通用的异常超类,就可捕捉整个分类中的各种异常:任何特定的子类都可匹配. 1 class General(Exception):pass 2 class Specific1(General):pass 3 class Specific2(General):pass 4 5 def raise0(): 6 x=General() 7 raise x 8 9 def raise1():

Python-Day4 Python基础进阶之生成器/迭代器/装饰器/Json &amp; pickle 数据序列化

一.生成器 通过列表生成式,我们可以直接创建一个列表.但是,受到内存限制,列表容量肯定是有限的.而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了.所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间.在Python中,这种一边循环一边计算的机制,称为生成器:generator. 要创建一个generator,有很多种

Python基础06 - 生成器、迭代器

@@@文章内容参照老男孩教育 Alex金角大王,武Sir银角大王@@@ 一.生成器 列表生成式 1 a = [i * 2 for i in range(10)] 2 print(a) 3 # [0, 2, 4, 6, 8, 10, 12, 14, 16, 18] 生成器 通过列表生成式,我们可以直接创建一个列表.但是,受到内存限制,列表容量肯定是有限的,而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大数元素占用的空间都是浪费的. 所以,

Python 基础 -2.4.3 迭代器

迭代器 = 循环 迭代器 我们已经知道,可以直接作用于for循环的数据类型有以下几种: 一类是集合数据类型,如list.tuple.dict.set.str等: 一类是generator,包括生成器和带yield的generator function. 这些可以直接作用于for循环的对象统称为可迭代对象:Iterable. 可以使用isinstance()判断一个对象是否是Iterable对象: >>> from collections import Iterable >>&

python基础之循环与迭代器

循环 python 循环语句有for循环和while循环. while循环while循环语法 while 判断条件: 语句 #while循环示例 i = 0 while i < 10: i += 1; print(i) while else 语句 语法 while 判断条件: 语句 else: 语句 #while else 示例 n = 0 while n < 10: n += 1; print(n); else: print("n不小于10") for循环 for循环可以