python定制
1、简单定制
a、使用time模块的localtime方法获取时间
b、time.localtime返回struct_time的时间格式
c、表现你的类:__str__和__repr__
注:当属性名与方法名同名时,默认属性名覆盖方法名

import time as t class MyTimer():
def __init__(self):
self.begin = 0
self.end = 0
self.lasted = []
self.prompt = "未运行"
self.unit = ["年","月", "天", "小时", "分钟", "秒"] # 重写__str__和__repr__方法
def __str__(self):
return self.prompt
__repr__ = __str__ #定义add函数,计算运行总时间
def __add__(self, other):
result = []
prompt = "总共运行了"
for i in range(6):
result.append(self.lasted[i]+other.lasted[i])
if result[i]:
prompt += (str(result[i])+self.unit[i])
return prompt
#开始计时
def start(self):
self.begin = t.localtime()
self.prompt = "提示:请先调用stop()停止计时!"
print("计时开始...")
# 停止计时
def stop(self):
if not self.begin:
print("提示:请先调用start()开始计时!")
else:
self.end = t.localtime()
print("计时结束...")
#定义内部方法,用于计算时间差
def __calc__(self):
self.lasted = []
self.prompt = "总共运行了"
for i in range(6):
self.lasted.append(self.start[i] - self.stop[i])
if self.lasted[i]:
self.prompt += (str(self.lasted[i])+self.unit[i])
#为下一轮计时初始化变量
self.begin = 0
self.end = 0
t1 = MyTimer()
t1.start()
t1.stop()
print(t1)
2、定制序列
协议(Protocols):与其他编程语言中的接口很相似,规定哪些方法必须定义。
容器类型的协议:
a、如果希望定制的容器是不可变的话,只需要定义__len__()和__getitem__()方法。
b、如果希望定制的容器是可变的话,除了__len__()和__getitem__()方法,还要定义 __setitem__()和__delitem__()方法。

#把类定义成一个容器
class CountList:
def __init__(self, *args):
self.values = [x for x in args] #将用户传入的参数存放到列表中
self.count = {}.fromkeys(range(len(self.values)), 0) #记录用户传入参数被访问的次数
def __len__(self):
return len(self.values)
def __getitem__(self, key):
self.count[key] += 1 #计数器加1
return self.values[key]
c1 = CountList(1, 3, 5, 7, 9)
c2 = CountList(2, 4, 6, 8, 10)
print(c1[1])
print(c2[1])
print(c1[2] + c2[1])
print(c1.count)
print(c2.count)
3、迭代器
a、iter()
__iter__()
b、next()
__next__()
string = "加油吧"
#方法一:迭代输出元素
it = iter(string)
while True:
try:
each = next(it)
except StopIteration:
break
print(each)
#方法二:for循环输出元素
for i in string:
print(i)

上述迭代器如果不加限制的话,会无限迭代下去,改进代码如下:

4、生成器(yield):生成器其实就是迭代器的一种实现
协同程序:就是可以运行的独立函数调用,函数可以暂停或者挂起,并在需要的时候从程序离开的地方继续或者重新开始。
yield和var不同,不是用来声明,但是和return一样,用来告知程序某种状态,return告诉程序要返回什么值(也意味着结束,结束的时候才会返回值嘛),而yield告诉程序当前的状态值,而且你运行到这里给我暂停一下。
一个带有 yield 的函数就是一个 generator,它和普通函数不同,生成一个 generator 看起来像函数调用,但不会执行任何函数代码,直到对其调用 next()(在 for 循环中会自动调用 next())才开始执行。


生成器实现斐波那契数列:

5、列表推导式
#列表推导式
#求出100以内能被2整除,不能被3整除的数
a = [i for i in range(100) if not (i % 2) and (i % 3)]
print(a)
6、字典推导式
#字典推导式
#返回10以内的数字是否为偶数
b = {i : i % 2 == 0 for i in range(10)}
print(b)
7、集合推导式

8、生成器推导式


9、生成器推导式元素求和
#使用生成器求10以内的奇数和
s = sum(i for i in range(100) if i % 2)
print(s)
python定制的更多相关文章
- Python定制类(进阶6)
转载请标明出处: http://www.cnblogs.com/why168888/p/6411919.html 本文出自:[Edwin博客园] Python定制类(进阶6) 1. python中什么 ...
- python定制类(1):__getitem__和slice切片
python定制类(1):__getitem__和slice切片 1.__getitem__的简单用法: 当一个类中定义了__getitem__方法,那么它的实例对象便拥有了通过下标来索引的能力. c ...
- python定制后处理云图
用后处理软件处理的云图会出现这样或那样的不满意,其实我们可以将求解数据导出以后,借助python定制云图. 我们以fluent为例 求解完成之后,我们将我们需要做云图的物理量以ASCII导出 如下的p ...
- 520,用Python定制你的《本草纲目女孩》
摘要:让我们来用Python定制出心仪的"本草纲目女孩",敲出魔性的代码舞蹈,520,准备好心仪女孩的舞蹈视频,把这份别出心裁的礼物给TA 本文分享自华为云社区<[云驻共创] ...
- python 定制类
看到类似__slots__这种形如__xxx__的变量或者函数名就要注意,这些在Python中是有特殊用途的. __slots__我们已经知道怎么用了,__len__()方法我们也知道是为了能让cla ...
- Python - 定制pattern的string模板(template) 具体解释
定制pattern的string模板(template) 具体解释 本文地址: http://blog.csdn.net/caroline_wendy/article/details/28625179 ...
- 使用Python定制词云
一.实验介绍 1.1 实验内容 在互联网时代,人们获取信息的途径多种多样,大量的信息涌入到人们的视线中.如何从浩如烟海的信息中提炼出关键信息,滤除垃圾信息,一直是现代人关注的问题.在这个信息爆炸的时代 ...
- python定制类详解
1.什么是定制类python中包含很多内置的(Built-in)函数,异常,对象.分别有不同的作用,我们可以重写这些功能. 2.__str__输出对象 class Language(object): ...
- Python定制容器
Python 中,像序列类型(如列表.元祖.字符串)或映射类型(如字典)都是属于容器类型,容器是可定制的.要想成功地实现容器的定制,我们需要先谈一谈协议.协议是什么呢?协议(Protocols)与其他 ...
- Python定制化天气预报消息推送
sansui-Weather 代码码云 介绍 定制化天气预报消息推送(练手小脚本) Python脚本实现天气查询应用,提醒她注意保暖! 功能介绍 天气信息获取 当天天气信息提示 第二天天气信息提示 网 ...
随机推荐
- Nginx敏感信息泄露漏洞(CVE-2017-7529)
2017年7月11日,为了修复整数溢出漏洞(CVE-2017-7529), Nginx官方发布了nginx-1.12.1 stable和nginx-1.13.3 mainline版本,并且提供了官方p ...
- Date、Calendar、DateFormat、SimpleDateFormat、Timer、TimerTask类
类 Date 在 JDK 1.1 之前,类 Date 有两个其他的函数.它允许把日期解释为年.月.日.小时.分钟和秒值. 它也允许格式化和解析日期字符串.不过,这些函数的 API 不易于实现国际化.从 ...
- 【转】《JAVA与模式》之责任链模式
<JAVA与模式>之责任链模式 在阎宏博士的<JAVA与模式>一书中开头是这样描述责任链(Chain of Responsibility)模式的: 责任链模式是一种对象的行为模 ...
- Velocity模板引擎介绍
整理下Velocity使用方法,整理比较详细用例 1 Velocity基础语法 1.1 用户和开发人员参考文档 http://velocity.apache.org/engine/releases/v ...
- Java 注解入门
1.什么是注解 注解的语法: @注解名称; 注解的作用: 用来替代 xml 配置文件; 在 Servlet 3.0 中就可以使用注解来代替配置文件; 注解是由框架来读取使用的; 所有的注解都是 Ann ...
- [转】[tip] localhost vs. (local) in SQL Server connection strings
主要区别在于连接协议不同,前者(localhost)使用TCP协议,后者("(local)")使用NamedPipe协议. Sample code with SQL Server ...
- 斯坦福大学Andrew Ng - 机器学习笔记(3) -- 神经网络模型
大概用了一个月,Andrew Ng老师的机器学习视频断断续续看完了,以下是个人学习笔记,入门级别,权当总结.笔记难免有遗漏和误解,欢迎讨论. 鸣谢:中国海洋大学黄海广博士提供课程视频和个人笔记,在此深 ...
- github常用的git命令
添加已有项目到github: touch README.md //新建说明文件 git init //在当前项目目录中生成本地git管理,并建立一个隐藏.git目录 git add . //添加当前目 ...
- ALE和IDocs
转自:http://blog.163.com/shenshengqge@126/blog/static/820512902011101152518635/ 作为目前ERP市场上最为领先的应用系统之一, ...
- eclipse修改web项目部署路径 wtpwebapps webapps 的设置
eclipse修改web项目部署路径 wtpwebapps webapps 的设置,在添加完server------>tomcat后,到server控制台进行设置 eclipse默认的部署 ...