原标题:技术图文:如何利用 Python 做一个简单的定时器类?

背景

今天在B站上看有关 Python 最火的一个教学视频 -- “零基础入门学习 Python”,这也是我们 Python基础刻意练习活动 的推荐视频教程。

python视频

在学习魔法方法的时候,有一节视频是制作一个简单的定时器类,基本要求如下:

定制一个计时器的类。

start和stop方法代表启动计时和停止计时。

假设计时器对象t1,print(t1)和直接调用t1均显示结果。

当计时器未启动或已经停止计时时,调用stop方法会给予温馨的提示。

两个计时器对象可以进行相加:t1+t2。

只能使用提供的有限资源完成。

技术分析

Python 的time模块中,时间表现的格式主要有三种:

timestamp时间戳,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。

struct_time时间元组,共有九个元素组。

format time格式化时间,用格式化的结构使时间更具可读性。包括自定义格式和固定格式。

获取时间戳

time.time返回当前时间的时间戳(1970纪元后经过的浮点秒数)。

importtime

ticks = time.time

print( '当前时间戳为:', ticks) # 当前时间戳为: 1570793479.162907

获取当前时间元组

time.localtime([sec])格式化时间戳为本地的时间。如果sec参数未输入,则以当前时间为转换标准。

importtime

localtime = time.localtime(time.time)

print( "本地时间为 :", localtime)

# 本地时间为 : time.struct_time(tm_year=2019, tm_mon=10, tm_mday=11, tm_hour=19, tm_min=35, tm_sec=31, tm_wday=4, tm_yday=284, tm_isdst=0)

tm_year:4位数年

tm_mon:月

tm_mday:日

tm_hour:小时

tm_min:分钟

tm_sec:秒

tm_wday:一周的第几日,0到6 (0是周一)

tm_yday:一年的第几日

tm_isdst:夏令时,值有:1(夏令时)、0(不是夏令时)、-1(未知),默认 -1

获取格式化的时间

time.asctime([tupletime])接受时间元组并返回一个可读的形式。

importtime

t = time.localtime

print( "本地时间为 : %s "% time.asctime(t))

# 本地时间为 : Fri Oct 11 19:42:34 2019

格式化时间

time.strftime(format[,tupletime])接收以时间元组,并返回以可读字符串表示的当地时间,格式由format决定。

time.strptime(str,format='%a %b %d %H:%M:%S %Y')根据format的格式把一个时间字符串解析为时间元组。

time.mktime(tupletime)接受时间元组并返回时间戳(1970纪元后经过的浮点秒数)。

importtime

print(time.strftime( "%Y-%m-%d %H:%M:%S", time.localtime))

# 2019-10-11 19:48:31

print(time.strftime( "%a %b %d %H:%M:%S %Y", time.localtime))

# Fri Oct 11 19:48:31 2019

a = "Fri Oct 11 19:48:31 2019"

print(time.mktime(time.strptime(a, "%a %b %d %H:%M:%S %Y")))

# 1570794511.0

%y 两位数的年份表示(00-99)

%Y 四位数的年份表示(000-9999)

%m 月份(01-12)

%d 月内中的一天(0-31)

%H 24小时制小时数(0-23)

%I 12小时制小时数(01-12)

%M 分钟数(00=59)

%S 秒(00-59)

%a 本地简化星期名称

%A 本地完整星期名称

%b 本地简化的月份名称

%B 本地完整的月份名称

%c 本地相应的日期表示和时间表示

%j 年内的一天(001-366)

%p 本地A.M.或P.M.的等价符

%U 一年中的星期数(00-53)星期天为星期的开始

%w 星期(0-6),星期天为星期的开始

%W 一年中的星期数(00-53)星期一为星期的开始

%x 本地相应的日期表示

%X 本地相应的时间表示

%Z 当前时区的名称

%% %号本身

Time 模块

time.gmtime([secs])接收时间戳(1970纪元后经过的浮点秒数)并返回格林威治天文时间下的时间元组。

time.ctime([secs])把一个时间戳(按秒计算的浮点数)转化为time.asctime的形式,作用相当于asctime(localtime(secs)),未给参数相当于asctime。

time.sleep(secs)推迟调用线程的运行,secs指秒数。

代码实现

importtime

classMytime(object):

def__init__(self):

self.__info = '未开始计时!'

self.__begin = None

self.__end = None

self.__jg = 0

def__str__(self):

returnself.__info

def__repr__(self):

returnself.__info

defstart(self):

print( '计时开始...')

self.__begin = time.localtime

defstop(self):

ifnotself.__begin:

print( '提示:请先调用start开始计时!')

return

self.__end = time.localtime

self.__jg = time.mktime(self.__end) - time.mktime(self.__begin)

self.__info = '共运行了%d秒'% self.__jg

print( '计时结束!')

returnself.__jg

def__add__(self, other):

return'共运行了%d秒'% (other.__jg + self.__jg)

t1 = Mytime

print(t1)

# 未开始计时!

t1.stop

# 提示:请先调用start开始计时!

t1.start

# 计时开始...

time.sleep( 5)

t1.stop

# 计时结束!

print(t1)

# 共运行了5秒

t2 = Mytime

t2.start

# 计时开始...

time.sleep( 7)

t2.stop

# 计时结束!

print(t2)

# 共运行了7秒

print(t1 + t2)

# 共运行了12秒

总结

这个题目让我们熟悉了 Python 中time模块的使用方法,以及类的定义和类中的一系列魔法方法,如__init__、__str__、__repr__、__add__等等,Python 的魔法方法很是神奇啊,把面向对象中的构造函数、析构函数、运算符的重载等全部包含了进去。需要好好体会才能把这块的知识学好。今天就这样吧!See You!

参考文献

https://www.bilibili.com/video/av4050443

https://www.cnblogs.com/lichunl/p/9098024.html

相关图文:

经过8年多的发展,LSGO软件技术团队在「地理信息系统」、「数据统计分析」、「计算机视觉」等领域积累了丰富的研发经验,也建立了人才培养的完备体系,目前深耕的领域为「机器学习与量化金融」,欢迎对计算机技术感兴趣的同学加入,与我们共同成长进步。

后台回复「搜搜搜」,随机获取电子资源!返回搜狐,查看更多

责任编辑:

python自己做个定时器_技术图文:如何利用 Python 做一个简单的定时器类?相关推荐

  1. python个人博客搭建说明书_技术分享|利用Python Django一步步搭建个人博客(二)...

    原标题:技术分享|利用Python Django一步步搭建个人博客(二) Hello,欢迎来到我们的"利用Python Django一步步搭建个人博客"系列的第二部分.在第一部分中 ...

  2. 用python搭建个人博客过程_技术分享|利用Python Django一步步搭建个人博客(四)...

    您好,欢迎来到本期"利用Python Django一步步搭建个人博客"系列的第四部分.在上一篇教程中,我们学习了如何编写URL并将其映射到页面.在我们继续之前,我们需要做的一件事是 ...

  3. python 数据分析 百度网盘_[百度网盘]利用Python进行数据分析(Python For Data Analysis中文版).pdf - Jan-My31的博客 - 磁力点点...

    利用Python进行数据分析(Python For Data Analysis中文版).pdf - Jan-My31的博客 2018-5-27 · 链接:https://pan.baidu.com/s ...

  4. python面向对象实例王者荣耀_大牛程序员利用Python开发王者荣耀带妹神器,一路直奔上王者...

    王者荣耀 -很火的手游-简直老少通吃-令人发指-虽然操作简单-但为什么你还是会被虐, 其实 是有技巧的--本文Python大神带你研究王者荣耀各类英雄的出装小技巧,让你成为大神般的存在 前期准备 环境 ...

  5. python接私活王者_大牛程序员利用Python开发王者荣耀带妹神器,一路直奔上王者...

    王者荣耀 -很火的手游-简直老少通吃-令人发指-虽然操作简单-但为什么你还是会被虐, 其实 是有技巧的--本文Python大神带你研究王者荣耀各类英雄的出装小技巧,让你成为大神般的存在 前期准备 环境 ...

  6. python链家网爬虫_手把手教你利用Python网络爬虫获取链家网的房产信息

    点击上方" Python爬虫与数据挖掘 ",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 夜阑卧听风吹雨,铁马冰河入梦来 ...

  7. 技术图文:如何利用 Python 做一个简单的定时器类?

    背景 今天在B站上看有关 Python 最火的一个教学视频,零基础入门学习 Python,这也是我们 Python基础刻意练习活动 的推荐视频教程. 在学习魔法方法的时候,有一节视频是制作一个简单的定 ...

  8. python简单代码演示效果-演示python如何创建和使用一个简单的元类的代码

    在做工程闲暇时间,将做工程过程比较重要的一些内容备份一下,如下内容段是关于演示python如何创建和使用一个简单的元类的内容,应该能对小伙伴们也有用途. #!/usr/bin/env python # ...

  9. python自学篇十[ 面向对象 (四) :王者荣耀小游戏+模拟一个简单的银行进行业务办理的类]

    python基础系列: python自学篇一[ Anaconda3安装 ] python自学篇二[ pycharm安装及使用 ] python自学篇三[ 判断语句if的使用 ] python自学篇四[ ...

最新文章

  1. 参照STM32时钟树配置STM32CubeMX Clock Configuration(STM32L011G4U6为例)
  2. 搭建多语言外文网站需要注意三个细节问题
  3. 解决IDM“警告:您在以管理员身份运行IDM,在该模式下,IDM无法接管浏览器的下载事件”的问题。
  4. OpenCV立体声匹配 stereo matching将L和R图像转换为视差和点云的实例(附完整代码)
  5. python报告 No module named 'main'错误
  6. 连通图遍历策略之广度优先搜索(C语言)
  7. 【C语言笔记初级篇】第八章:简单调试
  8. 网站前后端交互学习有感
  9. ASP.NET MVC 3 Beta: Built-in support for charts(MVC3 Razor中使用图表的最佳方案)
  10. android 层叠轮播,vue手写一个卡片化层叠轮播(支持滑动,移动端连续滚动,点击)...
  11. PostgreSQL常用查看命令
  12. 为Python安装Redis库
  13. python自动搜索最佳超参数之GridSearchCV函数
  14. Stream Processing With Flink (7) 状态算子和用户函数
  15. android 关掉屏幕旋转,防止在Android中屏幕旋转时解除对话框
  16. git-scm.com下载文件特别慢怎么办,自己拿吧
  17. 阿里大牛:如何画出一图胜千言的技术架构图?
  18. A Pareto-Efficient Algorithm for Multiple Objective Optimization in E-Commerce Recommendation阅读翻译
  19. 混合现实:手柄定位不准或者经常性丢失
  20. U盘中毒后怎么恢复数据

热门文章

  1. 我的方法在这方面看起来很大吗?
  2. mockito环境配置_Mockito –使用全局配置的SmartNull在NPE上提供更好的错误消息
  3. maven集成spring_Maven集成测试和Spring Restful Services
  4. 分而治之_播放框架模块:分而治之
  5. Hibernate READ_ONLY CacheConcurrencyStrategy如何工作
  6. JDK 8的启发性Javadoc
  7. JDK 8 Javadoc调整了方法列表
  8. Spring 3.1配置文件和Tomcat配置
  9. Java 7:在不丢失数据的情况下关闭NIO.2文件通道
  10. OSGI和Spring动态模块–简单的Hello World