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编写Linux系统守护进程实例
Feb 03 Python
python函数局部变量用法实例分析
Aug 04 Python
Python pass详细介绍及实例代码
Nov 24 Python
python数据清洗系列之字符串处理详解
Feb 12 Python
在CentOS6上安装Python2.7的解决方法
Jan 09 Python
Python父目录、子目录的相互调用方法
Feb 16 Python
django框架基于模板 生成 excel(xls) 文件操作示例
Jun 19 Python
在Django model中设置多个字段联合唯一约束的实例
Jul 17 Python
浅谈Tensorflow 动态双向RNN的输出问题
Jan 20 Python
python super函数使用方法详解
Feb 14 Python
numpy矩阵数值太多不能全部显示的解决
May 14 Python
python中scipy.stats产生随机数实例讲解
Feb 19 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 5.0 Pear安装方法
2006/12/06 PHP
PHP四种基本排序算法示例
2015/04/09 PHP
laravel框架创建授权策略实例分析
2019/11/22 PHP
基于JQuery的数字改变的动画效果--可用来做计数器
2010/08/11 Javascript
js封装的textarea操作方法集合(兼容很好)
2010/11/16 Javascript
js 阻止子元素响应父元素的onmouseout事件具体实现
2013/12/23 Javascript
NodeJS学习笔记之MongoDB模块
2015/01/13 NodeJs
jquery插件hiAlert实现网页对话框美化
2015/05/03 Javascript
写给小白的JavaScript引擎指南
2015/12/04 Javascript
JS实现部分HTML固定页面顶部随屏滚动效果
2015/12/24 Javascript
理解javascript中的MVC模式
2016/01/28 Javascript
js密码强度实时检测代码
2016/03/02 Javascript
jQuery Easyui加载表格出错时在表格中间显示自定义的提示内容
2016/12/08 Javascript
Vue.js实现模拟微信朋友圈开发demo
2017/04/20 Javascript
《javascript少儿编程》location术语总结
2018/05/27 Javascript
js+html5实现手机九宫格密码解锁功能
2018/07/30 Javascript
零基础之Node.js搭建API服务器的详解
2019/03/08 Javascript
用VsCode编辑TypeScript的实现方法
2020/05/07 Javascript
Node.js API详解之 assert模块用法实例分析
2020/05/26 Javascript
详解React 元素渲染
2020/07/07 Javascript
python中的列表推导浅析
2014/04/26 Python
跟老齐学Python之关于类的初步认识
2014/10/11 Python
python解析xml文件实例分析
2015/05/27 Python
Python实现删除文件但保留指定文件
2015/06/21 Python
python生成以及打开json、csv和txt文件的实例
2018/11/16 Python
python 字符串常用函数详解
2019/09/11 Python
pytorch载入预训练模型后,实现训练指定层
2020/01/06 Python
利用Python计算KS的实例详解
2020/03/03 Python
Python 线性回归分析以及评价指标详解
2020/04/02 Python
Python之字典添加元素的几种方法
2020/09/30 Python
外企求职信范文分享
2013/12/31 职场文书
2014年百日安全生产活动总结
2014/05/04 职场文书
机电一体化应届生求职信
2014/08/09 职场文书
Windows10下安装MySQL8
2021/04/06 MySQL
Pytorch 如何实现常用正则化
2021/05/27 Python
人工智能深度学习OpenAI baselines的使用方法
2022/05/20 Python