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之字典,你还记得吗?
Sep 20 Python
python执行get提交的方法
Apr 29 Python
Python中将字典转换为XML以及相关的命名空间解析
Oct 15 Python
Python读写Json涉及到中文的处理方法
Sep 12 Python
Python操作使用MySQL数据库的实例代码
May 25 Python
Django的分页器实例(paginator)
Dec 01 Python
Python机器学习之K-Means聚类实现详解
Feb 22 Python
在ubuntu16.04中将python3设置为默认的命令写法
Oct 31 Python
Python实现GIF图倒放
Jul 16 Python
深入探讨opencv图像矫正算法实战
May 21 Python
Python中的pprint模块
Nov 27 Python
Python实战实现爬取天气数据并完成可视化分析详解
Jun 16 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
绿山咖啡和蓝山咖啡
2021/03/04 新手入门
vBulletin Forum 2.3.xx SQL Injection
2006/10/09 PHP
深入了解php4(2)--重访过去
2006/10/09 PHP
PHP运行SVN命令显示某用户的文件更新记录的代码
2014/01/03 PHP
浅谈ThinkPHP的URL重写
2014/11/25 PHP
PHP实现蛇形矩阵,回环矩阵及数字螺旋矩阵的方法分析
2017/05/29 PHP
js Math 对象的方法
2013/09/01 Javascript
MyEclipse取消验证Js的两种方法
2013/11/14 Javascript
javascript实现页面内关键词高亮显示代码
2014/04/03 Javascript
jQuery实现带有洗牌效果的动画分页实例
2015/08/31 Javascript
js实现图片无缝滚动特效
2020/03/19 Javascript
jQuery防止重复绑定事件的解决方法
2016/05/14 Javascript
JavaScript DOM 对象深入了解
2016/07/20 Javascript
jQuery制作圣诞主题页面 更像是爱情影集
2016/08/10 Javascript
JS取数字小数点后两位或n位的简单方法
2016/10/24 Javascript
js实现显示手机号码效果
2017/03/09 Javascript
基于webpack 实用配置方法总结
2017/09/28 Javascript
bootstrap table插件动态加载表头
2019/07/19 Javascript
原生js实现文件上传、下载、封装等实例方法
2020/01/05 Javascript
Javascript ParentNode和ChildNode接口原理解析
2020/03/16 Javascript
[00:15]TI9地铁玩家打卡
2019/08/11 DOTA
python pycurl验证basic和digest认证的方法
2018/05/02 Python
virtualenv 指定 python 解释器的版本方法
2018/10/25 Python
tensorflow2.0与tensorflow1.0的性能区别介绍
2020/02/07 Python
基于python3.7利用Motor来异步读写Mongodb提高效率(推荐)
2020/04/29 Python
python 利用Pyinstaller打包Web项目
2020/10/23 Python
英国卫浴商店:Ergonomic Design
2019/09/22 全球购物
linux面试题参考答案(5)
2014/09/01 面试题
教师个人剖析材料
2014/02/05 职场文书
教师民族团结演讲稿
2014/08/27 职场文书
中国梦演讲稿开场白
2014/08/28 职场文书
九一八事变演讲稿范文
2014/09/14 职场文书
电工实训报告总结
2014/11/05 职场文书
避暑山庄导游词
2015/02/04 职场文书
销售经理岗位职责范本
2015/04/02 职场文书
用Python将库打包发布到pypi
2021/04/13 Python