Python专用方法与迭代机制实例分析
admin
2023-07-31 02:13:05
0

本文实例讲述了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程序设计的学习有所帮助。

相关内容

热门资讯

Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...
项目管理和工程管理的区别 项目管理 项目管理,顾名思义就是专注于开发和完成项目的管理,以实现目标并满足成功标准和项目要求。 工...