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实现文件分组复制到不同目录的例子
Jun 04 Python
使用Python神器对付12306变态验证码
Jan 05 Python
Python之父谈Python的未来形式
Jul 01 Python
简单实现Python爬取网络图片
Apr 01 Python
Python实现一个服务器监听多个客户端请求
Apr 12 Python
python3+PyQt5泛型委托详解
Apr 24 Python
tensorflow: 查看 tensor详细数值方法
Jun 13 Python
Python实现获取本地及远程图片大小的方法示例
Jul 21 Python
对python中基于tcp协议的通信(数据传输)实例讲解
Jul 22 Python
Pytorch中index_select() 函数的实现理解
Nov 19 Python
Python使用Excel将数据写入多个sheet
May 16 Python
python爬虫爬取淘宝商品比价(附淘宝反爬虫机制解决小办法)
Dec 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
Sony CFR 320 修复改造
2020/03/14 无线电
FastCGI 进程意外退出造成500错误
2015/07/26 PHP
tp5框架前台无限极导航菜单类实现方法分析
2020/03/29 PHP
javascript高亮效果的二种实现方法
2008/09/14 Javascript
自动完成JS类(纯JS, Ajax模式)
2009/03/12 Javascript
JavaScript 继承详解(一)
2009/07/13 Javascript
js 巧妙去除数组中的重复项
2010/01/25 Javascript
基于Jquery的实现回车键Enter切换焦点
2010/09/14 Javascript
Javascript insertAfter() 实现函数代码
2011/10/12 Javascript
js中的preventDefault与stopPropagation详解
2014/01/29 Javascript
采用自执行的匿名函数解决for循环使用闭包的问题
2014/09/11 Javascript
javascript中setTimeout使用指南
2015/07/26 Javascript
浅析AngularJS中的指令
2016/03/20 Javascript
JavaScript继承学习笔记【新手必看】
2016/05/10 Javascript
jQuery实现的跨容器无缝拖动效果代码
2016/06/21 Javascript
jquery设置css样式的多种方法(总结)
2017/02/21 Javascript
Bootstrap table中toolbar新增条件查询及refresh参数使用方法
2018/05/18 Javascript
通过封装scroll.js 获取滚动条的值
2018/07/13 Javascript
vue中使用vee-validator完成表单校验方案
2019/11/01 Javascript
Vue在H5 项目中使用融云进行实时个人单聊通讯
2020/12/14 Vue.js
Python 字符串大小写转换的简单实例
2017/01/21 Python
Django基础知识 web框架的本质详解
2019/07/18 Python
解决Django layui {{}}冲突的问题
2019/08/29 Python
Python实现代码统计工具
2019/09/19 Python
PyQt5 如何让界面和逻辑分离的方法
2020/03/24 Python
运行Python编写的程序方法实例
2020/10/21 Python
美国在线购买和出售礼品卡网站:EJ Gift Cards
2019/06/09 全球购物
将"引用"作为函数返回值类型的格式、好处和需要遵守的规则
2016/02/09 面试题
迎新晚会邀请函
2014/02/01 职场文书
中学生期末评语
2014/02/03 职场文书
关于青春的演讲稿800字
2014/08/22 职场文书
党员个人剖析材料
2014/09/30 职场文书
置业顾问岗位职责
2015/02/09 职场文书
2016优秀护士先进个人事迹材料
2016/02/25 职场文书
导游词之南京夫子庙
2019/12/09 职场文书
解决ubuntu安装软件时,status-code=409报错的问题
2022/12/24 Servers