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 随机数生成的代码的详细分析
May 15 Python
Python的装饰器模式与面向切面编程详解
Jun 21 Python
Python 模块EasyGui详细介绍
Feb 19 Python
python利用dir函数查看类中所有成员函数示例代码
Sep 08 Python
Python向Excel中插入图片的简单实现方法
Apr 24 Python
Python3.5面向对象程序设计之类的继承和多态详解
Apr 24 Python
Python基础知识点 初识Python.md
May 14 Python
Python-Seaborn热图绘制的实现方法
Jul 15 Python
python如何实现不用装饰器实现登陆器小程序
Dec 14 Python
tensorflow生成多个tfrecord文件实例
Feb 17 Python
Python 解决火狐浏览器不弹出下载框直接下载的问题
Mar 09 Python
Django实现将一个字典传到前端显示出来
Apr 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动态图像的创建
2006/10/09 PHP
PHP开发需要注意的安全问题
2010/09/01 PHP
PHP+jQuery 注册模块的改进(一):验证码存入SESSION
2014/10/14 PHP
Laravel框架使用Seeder实现自动填充数据功能
2018/06/13 PHP
Add Formatted Data to a Spreadsheet
2007/06/12 Javascript
javascript Array.remove() 数组删除
2009/08/06 Javascript
JavaScript prototype对象的属性说明
2010/03/13 Javascript
jQuery修改li下的样式以及li下的img的src的值的方法
2014/11/02 Javascript
深入讲解AngularJS中的自定义指令的使用
2015/06/18 Javascript
jQuery插件实现适用于移动端的地址选择器
2016/02/18 Javascript
限制复选框最多选择项的实现代码
2016/05/30 Javascript
Vue.js第四天学习笔记(组件)
2016/12/02 Javascript
JavaScript装饰器函数(Decorator)实例详解
2017/03/30 Javascript
windows下vue-cli及webpack搭建安装环境
2017/04/25 Javascript
JS实现鼠标移动拖尾
2020/12/27 Javascript
[10:07]2014DOTA2国际邀请赛 实拍选手现场观战DK对阵Titan
2014/07/12 DOTA
Python图像灰度变换及图像数组操作
2016/01/27 Python
python读取oracle函数返回值
2016/07/18 Python
python 用lambda函数替换for循环的方法
2018/06/09 Python
Python实现base64编码的图片保存到本地功能示例
2018/06/22 Python
浅谈Django中view对数据库的调用方法
2019/07/18 Python
python 代码实现k-means聚类分析的思路(不使用现成聚类库)
2020/06/01 Python
keras的siamese(孪生网络)实现案例
2020/06/12 Python
一文带你了解Python 四种常见基础爬虫方法介绍
2020/12/04 Python
如何使用python-opencv批量生成带噪点噪线的数字验证码
2020/12/21 Python
Bibloo荷兰:女士、男士和儿童的服装、鞋子和配饰
2019/02/25 全球购物
C#和SQL Server的面试题
2016/08/12 面试题
CSS代码检查工具stylelint的使用方法详解
2021/03/27 HTML / CSS
应聘收银员个人的求职信
2013/11/30 职场文书
求职简历的自我评价
2014/01/31 职场文书
社团活动总结
2014/04/28 职场文书
大学生求职计划书
2014/04/30 职场文书
庐山导游词
2015/02/03 职场文书
2015年美容师个人工作总结
2015/10/14 职场文书
关于企业的执行力标语大全
2020/01/06 职场文书
Windows Server 2019 配置远程控制以及管理方法
2022/04/28 Servers