Python专用方法与迭代机制实例分析
作者:shichen2014 发布时间:2021-09-07 22:05:22
标签:Python
本文实例讲述了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程序设计的学习有所帮助。
0
投稿
猜你喜欢
- 一、 文件的操作1.1创建文件格式:f = open(‘文件', ‘w')或者f = open(‘文件', ‘r
- matplotlib从1.1.0版本以后就开始支持绘制动画下面是几个的示例:第一个例子使用generator,每隔两秒,就运行函数data_
- 这是写给web设计者和前端开发者的教程,我们将演示如何使用Photoshop创建按钮的sprite图,然后是如何使用jQurey打造动态渐变
- 学了几天正则,差不多该总结整理写成果了,之前就想写语法高亮匹配来着,不过水平不够,看着例子都不理解。那么我们来分析下两位大神 次碳酸钴 和
- 如下所示:def str_to_hex(s): s = s.split(' ')&nbs
- 一、batch与shell中目录及文件:C:\TESTFOLDER\TEST├─Test2└─Test3
- Python中的frame是什么栈帧(frame)栈帧表示程序运行时函数调用栈中的某一帧。想要获得某个函数相关的栈帧,则必须在调用这个函数且
- 有时会统计某个目录下有哪些文件,每个文件的sha256及文件大小等相关信息,这里用python3写了个脚本用来实现此功能,此脚本可跨平台,同
- 先给大家介绍下Python除法之传统除法、Floor除法及真除法python3.0 /总是执行真除法,不管操作数的类型,都返回浮点数结果(即
- 在图像分割领域,一个重要任务便是分割出感兴趣(ROI)区域。如果是简易的矩形ROI区域其实是非常容易分割的,opencv的官方python教
- 最近实习需要对若干ppt进行格式上的调整,主要就是将标题的位置、对齐方式、字体等统一,人工修改又麻烦又容易错。因此结合网上的pptx包资料,
- 输入命令jupyter notebook --generate-config可以看到此时Jupyter Notebook的默认目录找到对应路
- 一个SELECT查询中的LIKE语句来执行这种查询,尽管这种方法可行,但对于全文查找而言,这是一种效率极端低下的方法,尤其在处理大量数据的时
- 1、在Django配置搜索结果页的路由映射"""pachong URL Configuration
- Pandas提供了便捷的方式对时间序列进行重采样,根据时间粒度的变大或者变小分为降采样和升采样:降采样:时间粒度变大。例如,原来是按天统计的
- 文章介绍OpenCV 库中包含很多运算函数,这里着重介绍按位运算的基本原理并举例说明。本篇文章中主要涉及到的函数有:按位与:bitwise_
- 本文介绍如何建立基于Web的日历,同时为不熟悉Active Server Pages(ASP)、SQL和ADO的开发者提供建立Web站点的过
- 简单Python词法分析器实现,供大家参考,具体内容如下词法分析器状态转换图:词法分析器总流程图:预处理程序:词法分析器:词法分析器程序详细
- python socket多线程实现客户端与服务器连接,供大家参考,具体内容如下之前因为一些作业需要完成一个服务器监听多个客户端的程序,于是
- 以下测试用于去除任何字符串中连线的分隔符 代码如下:--去除字符串中连续的分隔符 declare @str nvarchar(200) de