Python专用方法与迭代机制实例分析


Posted in Python onSeptember 15, 2014

本文实例讲述了Python专用方法与迭代机制,分享给大家供大家参考之用。具体分析如下:

众所周知,Python 设计哲学是“优雅”、“明确”、“简单”,对于一件事只用一种最好的方法来做,而这种优雅在于背后很自然的隐藏了很多细节。比如对一些对象直接用for 语句来迭代,一些全局函数可以作用于很多具有共同特征的对象,还有生成器装饰器自省等特性。其中很多实现都是借助 Python  内部专用方法,而对外则使用统一的全局函数来进行操作,在配合一些语法糖,使得 Python 写起来愈发的方便,符合人的直觉。

Python 专用方法

类的私有方法:以双线划线开头,但是不以双下划线结尾的方法;
类的专有方法:以双下划线开头和结尾,常用来被内建函数调用;
模块私有对象:以单下划线开头,不能被导入到其他的模块中去;

#!/usr/bin/env python 
# Python3 实现 
_modeluprivate = '本模块私有'  #不能用 from module import * 导入 
 
class People(): 
  def __myprivate(self): 
    print("This is a private fun") 
  def __test__(self): 
    print('call __private: ',end='') 
    self.__myprivate() 
 
if __name__ == '__main__': 
  a = People() 
  a.__test__()      # 专有方法,一般系统专用,自己的类方法不要用这种新式命名 
  a._People__myprivate() # 私有方法被对外被翻译成了这种名字,从而达到私有的效果 
  print(_modeluprivate) 
   
''''' 
输出 
call __private: This is a private fun 
This is a private fun 
本模块私有 
'''

Python 迭代机制

Python 中的可迭代对象是实现了 __iter__() 方法的对象,而 __iter__() 方法返回一个迭代器对象,迭代器对象内部要实现 __next__() 方法。迭代器对外提供了一个统一的遍历集合的接口,并且可以直接用 for 语句来进行操作,非常的方便。对于一些特别大甚至无限的集合,迭代器避免了一次性将数据集载入,几乎是唯一的访问方法。

#!/usr/bin/env python 
# Python3 实现 
class IterTest(): 
  def __init__(self): 
    self.a = 0 
  def __iter__(self): 
    return self 
  def __next__(self): 
    self.a += 1 
    if self.a > 3: 
      raise StopIteration 
    return self.a 
 
if __name__ == '__main__': 
  a = IterTest() 
  for i in a: 
    print(i,end=' ') 
  b = IterTest() 
  print(list(b)) # list()构造器,可以接受可迭代对象 
  c = IterTest() 
  print(next(c), next(c), next(c)) 
 
''''' 
输出 
1 2 3 [1, 2, 3] 
1 2 3 
'''

Python 的生成器其实返回的也是一个迭代器,同样可以对其使用 next() 函数,对其使用 for操作,有了 yield 关键字使得创建生成器更加的方便。

#!/usr/bin/env python 
# Python3 实现 
def funGenerate(): 
  yield 1 
  yield 2 
  yield 3 
 
if __name__ == '__main__': 
  a = funGenerate() 
  for i in a: 
    print(i, end=' ') 
  b = funGenerate() 
  print(next(b),next(b),next(b)) 
 
''''' 
输出 
1 2 3 1 2 3 
'''

希望本文所述对大家Python程序设计的学习有所帮助。

Python 相关文章推荐
Python中的Matplotlib模块入门教程
Apr 15 Python
在Python的gevent框架下执行异步的Solr查询的教程
Apr 16 Python
Python常用的内置序列结构(列表、元组、字典)学习笔记
Jul 08 Python
Python基础教程之内置函数locals()和globals()用法分析
Mar 16 Python
Python实现读取SQLServer数据并插入到MongoDB数据库的方法示例
Jun 09 Python
Python从list类型、range()序列简单认识类(class)【可迭代】
May 31 Python
详细介绍pandas的DataFrame的append方法使用
Jul 31 Python
python中resample函数实现重采样和降采样代码
Feb 25 Python
使用Python合成图片的实现代码(图片添加个性化文本,图片上叠加其他图片)
Apr 30 Python
django中嵌套的try-except实例
May 21 Python
完美解决keras 读取多个hdf5文件进行训练的问题
Jul 01 Python
教你怎么用python爬取爱奇艺热门电影
May 20 Python
跟老齐学Python之有容乃大的list(3)
Sep 15 #Python
跟老齐学Python之有容乃大的list(2)
Sep 15 #Python
跟老齐学Python之有容乃大的list(1)
Sep 14 #Python
跟老齐学Python之一个免费的实验室
Sep 14 #Python
跟老齐学Python之从if开始语句的征程
Sep 14 #Python
跟老齐学Python之眼花缭乱的运算符
Sep 14 #Python
跟老齐学Python之玩转字符串(3)
Sep 14 #Python
You might like
不用数据库的多用户文件自由上传投票系统(3)
2006/10/09 PHP
mysql建立外键
2006/11/25 PHP
PHP中的类型提示(type hinting)功能介绍
2015/07/01 PHP
mac下多个php版本快速切换的方法
2016/10/09 PHP
php实现socket推送技术的示例
2017/12/20 PHP
YII框架模块化处理操作示例
2019/04/26 PHP
PHP操作Redis常用命令的实例详解
2020/12/23 PHP
30个最佳jQuery Lightbox效果插件分享
2011/04/11 Javascript
Javascript的时间戳和php的时间戳转换注意事项
2013/04/12 Javascript
Jquery操作下拉框(DropDownList)实现取值赋值
2013/08/13 Javascript
jquery parent和parents的区别分析
2013/10/02 Javascript
用JQuery实现全选与取消的两种简单方法
2014/02/22 Javascript
js控制href内容的连接内容的变化示例
2014/04/30 Javascript
jquery和css3实现的炫酷时尚的菜单导航
2014/09/01 Javascript
使用jquery解析XML示例代码
2014/09/05 Javascript
node.js中的http.request方法使用说明
2014/12/14 Javascript
Javascript非构造函数的继承
2015/04/27 Javascript
jquery实现全屏滚动
2015/12/28 Javascript
vuejs指令详解
2017/02/07 Javascript
微信小程序 实现列表项滑动显示删除按钮的功能
2017/04/13 Javascript
详解webpack 打包文件体积过大解决方案(code splitting)
2018/04/10 Javascript
js实现无限瀑布流实例方法
2019/09/16 Javascript
原生javascript单例模式的应用实例分析
2020/02/23 Javascript
合并Excel工作薄中成绩表的VBA代码,非常适合教育一线的朋友
2009/04/09 Python
初步剖析C语言编程中的结构体
2016/01/16 Python
Python中的字符串查找操作方法总结
2016/06/27 Python
对Django中内置的User模型实例详解
2019/08/16 Python
tensorflow模型文件(ckpt)转pb文件的方法(不知道输出节点名)
2020/04/22 Python
中国最大的名表商城:万表网
2016/08/29 全球购物
触摸春天教学反思
2014/02/03 职场文书
考核工作实施方案
2014/03/30 职场文书
小学语文教学随笔
2015/08/14 职场文书
筑梦中国心得体会
2016/01/18 职场文书
《正比例》教学反思
2016/02/23 职场文书
高中政治教学反思
2016/02/23 职场文书
节约用水广告语60条
2019/11/14 职场文书