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的多态性实例分析
Jul 07 Python
python之文件的读写和文件目录以及文件夹的操作实现代码
Aug 28 Python
在Python中执行系统命令的方法示例详解
Sep 14 Python
python获取酷狗音乐top500的下载地址 MP3格式
Apr 17 Python
Python 创建空的list,以及append用法讲解
May 04 Python
Python装饰器使用你可能不知道的几种姿势
Oct 25 Python
python 基于dlib库的人脸检测的实现
Nov 08 Python
解决tensorflow 释放图,删除变量问题
Jun 23 Python
python设置表格边框的具体方法
Jul 17 Python
python基于exchange函数发送邮件过程详解
Nov 06 Python
python lambda的使用详解
Feb 26 Python
解决pytorch 模型复制的一些问题
Mar 03 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
设置php页面编码的两种方法示例介绍
2014/03/03 PHP
smarty内部日期函数html_select_date()用法实例分析
2015/07/08 PHP
PHP创建word文档的方法(平台无关)
2016/03/29 PHP
php中文乱码问题的终极解决方案汇总
2017/08/01 PHP
jQuery代码优化之基本事件
2011/11/01 Javascript
在js中判断checkboxlist(.net控件客户端id)是否有选中
2013/04/11 Javascript
js为鼠标添加右击事件防止默认的右击菜单弹出
2013/07/29 Javascript
js获取电脑分辨率的思路及操作
2013/11/22 Javascript
JavaScript动态改变HTML页面元素例如添加或删除
2014/08/10 Javascript
JavaScript编写连连看小游戏
2015/07/07 Javascript
JavaScript数组去重的五种方法
2015/11/05 Javascript
jQuery Ajax和getJSON获取后台普通json数据和层级json数据用法分析
2016/06/08 Javascript
AngularJS中的Promise详细介绍及实例代码
2016/12/13 Javascript
微信小程序开发教程-手势解锁实例
2017/01/06 Javascript
详解jQuery同步Ajax带来的UI线程阻塞问题及解决办法
2017/08/09 jQuery
bootstrap treeview 扩展addNode方法动态添加子节点的方法
2017/11/21 Javascript
vue-better-scroll 的使用实例代码详解
2018/12/03 Javascript
PHP实现基于Redis的MessageQueue队列封装操作示例
2019/02/02 Javascript
如何利用nodejs实现命令行游戏
2020/11/24 NodeJs
python中的一些类型转换函数小结
2013/02/10 Python
python实现可以断点续传和并发的ftp程序
2016/09/13 Python
Python+Socket实现基于UDP协议的局域网广播功能示例
2017/08/31 Python
Python实现霍夫圆和椭圆变换代码详解
2018/01/12 Python
详解用python写一个抽奖程序
2019/05/10 Python
通过字符串导入 Python 模块的方法详解
2019/10/27 Python
Python操作多维数组输出和矩阵运算示例
2019/11/28 Python
Python 实现日志同时输出到屏幕和文件
2020/02/19 Python
image-set实现Retina屏幕下图片显示详细介绍
2012/12/24 HTML / CSS
2014端午节活动策划方案
2014/01/27 职场文书
教师职称自我鉴定
2014/02/12 职场文书
企业趣味活动方案
2014/08/21 职场文书
预备党员对照检查材料思想汇报
2014/09/24 职场文书
2014年餐厅服务员工作总结
2014/11/18 职场文书
生死抉择观后感
2015/06/09 职场文书
用python基于appium模块开发一个自动收取能量的小助手
2021/09/25 Python
Oracle安装TNS_ADMIN环境变量设置参考
2021/11/01 Oracle