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 re模块介绍
Nov 30 Python
Python实现多线程抓取妹子图
Aug 08 Python
浅谈Python生成器generator之next和send的运行流程(详解)
May 08 Python
django反向解析URL和URL命名空间的方法
Jun 05 Python
在python中pandas读文件,有中文字符的方法
Dec 12 Python
pthon贪吃蛇游戏详细代码
Jan 27 Python
详解python中init方法和随机数方法
Mar 13 Python
python中数组和矩阵乘法及使用总结(推荐)
May 18 Python
Python 网络编程之TCP客户端/服务端功能示例【基于socket套接字】
Oct 12 Python
Numpy与Pytorch 矩阵操作方式
Dec 27 Python
Python内置异常类型全面汇总
May 28 Python
pytorch model.cuda()花费时间很长的解决
Jun 01 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怎样调用MSSQL的存储过程
2006/10/09 PHP
浅析ThinkPHP中execute和query方法的区别
2014/06/13 PHP
WordPress中对访客评论功能的一些优化方法
2015/11/24 PHP
PHP5.5.15+Apache2.4.10+MySQL5.6.20配置方法分享
2016/05/06 PHP
ThinkPHP自定义Redis处理SESSION的实现方法
2016/05/16 PHP
picChange 图片切换特效的函数代码
2010/05/06 Javascript
JQuery中getJSON的使用方法
2010/12/13 Javascript
jQuery中需要注意的细节问题小结
2011/12/06 Javascript
javaScript复制功能调用实现方案
2012/12/13 Javascript
JavaScript采用递归算法计算阶乘实例
2015/08/04 Javascript
JS实现带圆弧背景渐变效果的导航菜单代码
2015/10/13 Javascript
javascript学习笔记整理(概述、变量、数据类型简介)
2015/10/25 Javascript
JavaScript正则表达式的分组匹配详解
2016/02/13 Javascript
Bootstrap每天必学之滚动监听
2016/03/16 Javascript
vue.js实现用户评论、登录、注册、及修改信息功能
2020/05/30 Javascript
js Dom实现换肤效果
2017/10/21 Javascript
浅谈Vue响应式(数组变异方法)
2018/05/07 Javascript
Angular ui-roter 和AngularJS 通过 ocLazyLoad 实现动态(懒)加载模块和依赖
2018/11/25 Javascript
vue-preview动态获取图片宽高并增加旋转功能的实现
2020/07/29 Javascript
Python中的Numpy入门教程
2014/04/26 Python
用Python编写分析Python程序性能的工具的教程
2015/04/01 Python
在Python的struct模块中进行数据格式转换的方法
2015/06/17 Python
教大家玩转Python字符串处理的七种技巧
2017/03/31 Python
python算法演练_One Rule 算法(详解)
2017/05/17 Python
PyTorch中permute的用法详解
2019/12/30 Python
印尼购物网站:iLOTTE
2019/10/16 全球购物
100%法国制造的游戏和玩具:Les Jouets Français
2021/03/02 全球购物
招聘与培训专员岗位职责
2014/01/30 职场文书
《在家里》教后反思
2014/03/01 职场文书
中学生评语大全
2014/04/18 职场文书
2014年教师节寄语
2014/08/11 职场文书
学校推普周活动总结
2015/05/07 职场文书
关于战胜挫折的名言警句大全!
2019/07/05 职场文书
小程序教您怎样你零成本推广获取数万用户的方法
2019/07/30 职场文书
PyTorch 如何设置随机数种子使结果可复现
2021/05/12 Python
Pandas||过滤缺失数据||pd.dropna()函数的用法说明
2021/05/14 Python