zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Python专用方法与迭代机制实例分析

Python实例方法迭代 分析 机制 专用
2023-06-13 09:15:45 时间

本文实例讲述了Python专用方法与迭代机制,分享给大家供大家参考之用。具体分析如下:

众所周知,Python设计哲学是“优雅”、“明确”、“简单”,对于一件事只用一种最好的方法来做,而这种优雅在于背后很自然的隐藏了很多细节。比如对一些对象直接用for语句来迭代,一些全局函数可以作用于很多具有共同特征的对象,还有生成器装饰器自省等特性。其中很多实现都是借助Python 内部专用方法,而对外则使用统一的全局函数来进行操作,在配合一些语法糖,使得Python写起来愈发的方便,符合人的直觉。

Python专用方法

类的私有方法:以双线划线开头,但是不以双下划线结尾的方法;
类的专有方法:以双下划线开头和结尾,常用来被内建函数调用;
模块私有对象:以单下划线开头,不能被导入到其他的模块中去;

#!/usr/bin/envpython
#Python3实现
_modeluprivate="本模块私有"#不能用frommoduleimport*导入

classPeople():
def__myprivate(self):
print("Thisisaprivatefun")
def__test__(self):
print("call__private:",end="")
self.__myprivate()

if__name__=="__main__":
a=People()
a.__test__()#专有方法,一般系统专用,自己的类方法不要用这种新式命名
a._People__myprivate()#私有方法被对外被翻译成了这种名字,从而达到私有的效果
print(_modeluprivate)

"""""
输出
call__private:Thisisaprivatefun
Thisisaprivatefun
本模块私有
"""

Python迭代机制

Python中的可迭代对象是实现了__iter__()方法的对象,而__iter__()方法返回一个迭代器对象,迭代器对象内部要实现__next__()方法。迭代器对外提供了一个统一的遍历集合的接口,并且可以直接用for语句来进行操作,非常的方便。对于一些特别大甚至无限的集合,迭代器避免了一次性将数据集载入,几乎是唯一的访问方法。

#!/usr/bin/envpython
#Python3实现
classIterTest():
def__init__(self):
self.a=0
def__iter__(self):
returnself
def__next__(self):
self.a+=1
ifself.a>3:
raiseStopIteration
returnself.a

if__name__=="__main__":
a=IterTest()
foriina:
print(i,end="")
b=IterTest()
print(list(b))#list()构造器,可以接受可迭代对象
c=IterTest()
print(next(c),next(c),next(c))

"""""
输出
123[1,2,3]
123
"""

Python的生成器其实返回的也是一个迭代器,同样可以对其使用next()函数,对其使用for操作,有了yield关键字使得创建生成器更加的方便。

#!/usr/bin/envpython
#Python3实现
deffunGenerate():
yield1
yield2
yield3

if__name__=="__main__":
a=funGenerate()
foriina:
print(i,end="")
b=funGenerate()
print(next(b),next(b),next(b))

"""""
输出
123123
"""

希望本文所述对大家Python程序设计的学习有所帮助。