• 异常处理
  • 面向对象
  • 迭代器和生成器

python异常处理

  • 下面代码触发了一个FileNotFoundError
  1. >>> open("notexist.txt")
  2. Traceback (most recent call last):
  3. File "<stdin>", line 1, in <module>
  4. FileNotFoundError: [Errno 2] No such file or directory: 'notexist.txt'
  • 抛出异常
  1. >>> raise FileNotFoundError
  • 异常类型

  • 捕获异常使用try,except,finally,else
  1. try:
  2. open(r"c:\Users\kingsoft\Desktop\notexist.txt")
  3. except FileNotFoundError as e:
  4. print ("file not exist...")
  5. except (name1,name2):
  6. print ("io error is true...")
  7. else:
  8. print ("file exist..")
  9. finally:
  10. print ("always do...")

  

python面向对象

python是完全面向对象的,python中一切都是对象,包括变量,函数等。

  • 定义一个对象
  1. class MyException():
  2. pass
  • self 和init方法
  1. class Person():
  2.  
  3. def __init__(self, name):
  4. self.name = name
  5.  
  6. def sayname(self):
  7. print self.name
  8.  
  9. m = Person("joe")
  10. print(m.sayname())
  • 区分类和类的实例
  1. class Person():
  2. def __init__(self, name):
  3. self.name = name
  4. Person.name = name
  5. def sayname(self):
  6. print("myname is :" + self.name)
  7. print("myexceptionname is: " + Person.name)
  8. def changeothername(self, name):
  9. Person.name = name
  10. def __del__(self):
  11. print(self.name + "is gone")
  12. m = Person("joe")
  13. m.sayname()
  14. print("m.name : " + m.name)
  15. m.test="tt"
  16. print(m.test)
  17. j = Person("jason")
  18. j.sayname()
  19. j.changeothername(j.name)
  20. m.sayname()
  • 类的继承,多态和封装概念

生成器和迭代器

  • _iter_方法返回迭代器,迭代器指有next方法的对象
  1. class Fibs(object):
  2. """docstring for Fibs"""
  3. def __init__(self, max):
  4. self.max = max
  5. self.a = 0
  6. self.b = 1
  7. def __next__(self):
  8. fib = self.a
  9. if fib > self.max:
  10. raise StopIteration
  11. self.a, self.b = self.b, self.a + self.b
  12. return fib
  13. #返回迭代器
  14. def __iter__(self):
  15. return self
  16. fib = Fibs(1000)
  17. for f in fib:
  18. print(f, end= " ")
  • 可迭代对象Iterable和迭代器Iterator
  • 生成器,生成器通过yield语句快速生成迭代器,让函数变成一个生成器
  1. #斐波那契数列
  2. def getfibs(max):
  3. a = 0
  4. b = 1
  5. while a < max:
  6. a, b= b, a+b
  7. value = a
  8. yield value
  9.  
  10. print(getfibs(1000))
  11. for i in getfibs(1000):
  12. print(i)
  • 简单理解生成器
  1. def gen():
  2. yield "hello"
  3. yield "how"
  4. yield "are"
  5. yield "you"
  6. for i in gen():
  7. print(i)

  

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

  1. python基础-异常(exception)处理

    python基础-异常(exception)处理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 程序中难免出现错误,而错误分成两种,即语法错误和逻辑错误.语法错误根本过不了pyth ...

  2. Python可迭代对象、迭代器和生成器

    Python可迭代对象.迭代器和生成器 python 函数 表达式 序列 count utf-8 云栖征文 python可迭代对象 python迭代器 python生成器 摘要: 8.1 可迭代对象( ...

  3. python基础——获取对象信息

    python基础——获取对象信息 当我们拿到一个对象的引用时,如何知道这个对象是什么类型.有哪些方法呢? 使用type() 首先,我们来判断对象类型,使用type()函数: 基本类型都可以用type( ...

  4. python基础15上_迭代器_生成器

    # 迭代器和生成器 # 迭代器: # 双下方法 : 很少直接调用的方法.一般情况下,是通过其他语法触发的 # 可迭代的 —— 可迭代协议 含有__iter__的方法('__iter__' in dir ...

  5. Day12 Python基础之生成器、迭代器(高级函数)(十)

    https://www.cnblogs.com/yuanchenqi/articles/5769491.html 1. 列表生成式 我现在有个需求,看列表[0, 1, 2, 3, 4, 5, 6, 7 ...

  6. Python基础(7)——迭代器&生成器

    1.列表生成式 [i*2 for i in range(10)] [fun(i) for i in range(10)] 2.生成器 # Author Qian Chenglong #列表生成器 a= ...

  7. python 可迭代对象与迭代器

    生成器函数的工作原理只要 Python 函数的定义体中有 yield 关键字, 该函数就是生成器函数. 调用生成器函数时, 会返回一个生成器对象. 也就是说, 生成器函数是生成器工厂. 调用生成器函数 ...

  8. Py修行路 python基础 (十一)迭代器 与 生成器

    一.什么是迭代? 迭代通俗的讲就是一个遍历重复的过程. 维基百科中 迭代(Iteration) 的一个通用概念是:重复某个过程的行为,这个过程中的每次重复称为一次迭代.具体对应到Python编程中就是 ...

  9. Python -- 可迭代对象和迭代器

    5.9 可迭代对象 可迭代对象: str , list , tuple , set , dict , range 1.在Python中,但凡内部有__iter__方法的对象,都是可迭代对象 2.查看对 ...

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

    在Python中,很多对象都是可以通过for语句来直接遍历的,例如list.string.dict等等,这些对象都可以被称为可迭代对象.至于说哪些对象是可以被迭代访问的,就要了解一下迭代器相关的知识了 ...

随机推荐

  1. (转)Zabbix Agent-Windows平台配置指导

      原地址:http://blog.itpub.net/26739940/viewspace-1169538/   zabbix是一个CS结构的监控系统,支持ping,snmp等很多的监控,但是大部分 ...

  2. javascript . 05 json的组成、for...in 遍历对象、简单数据类型与复杂数据类型的传值与传址、内置对象

    对象字面量  JSON var obj = { aaa :999}; var json={"aaa":999,"bbb":888}; "kay&quo ...

  3. 解决VIM编辑器中文乱码

    追加如下内容到/etc/vimr (或者不同的用户家目录下的.vimrc文件中) set encoding=utf8filetype plugin indent onsyntax on" s ...

  4. Tcl与Design Compiler (七)——环境、设计规则和面积约束

    本文属于原创手打(有参考文献),如果有错,欢迎留言更正:此外,转载请标明出处 http://www.cnblogs.com/IClearner/  ,作者:IC_learner 本文的主要内容是讲解( ...

  5. React Native 可以走多远?

    对于大多数APP开发者来说,能够同时开发出Android APP和IOS APP是不是很牛逼,可是它也不是天方夜谭,自从有了一个叫React Native的东西的出现,这一切就变得可以实现了. 那么到 ...

  6. 3.XML的格式化显示

    使用CSS/XSLT格式化XML,可以使XML具有更加多彩的显示效果. 3.1 使用CSS格式化显示XML 使用CSS格式化XML只需要在XML中加上: <?xml-stylesheet typ ...

  7. android开发之-软件设置保存-快速学会使用SharedPreferences篇-实测

    我们在设计软件的时候,需要记录软件设置的基本信息,那么怎么来保存他们呢?我们可以使用SharedPreferences.   SharedPreferences是一个xml文件,用来存储软件的常规设置 ...

  8. Activity的切换动画

    Activity在切换或者退出的时候可以自定义动画的,比如AlphaAnimation.TranslateAnimation.ScaleAnimation等自定义的动画.我们在Activity启动的时 ...

  9. List分组 用于客服对话分组场景

    工作用可能会用到会话分组: Message是消息实体对象,里面有toId和fromId 指明接收方ID和发送方Id,通过组合形式"12-22-" 为map的key public M ...

  10. mysql数据库开启日志

    旧版 #开启慢查询 slow_query_log # (超过2秒的SQL语法记录起来,设短一点来记录除错也是一种方法.) long_query_time = 2 log-slow-queries=D: ...