输出时间
回忆上次内容
print
函数有个默认的参数
end
end参数
的默认值是\n
end
的值可以是任意字符串end
的值会输出到结尾位置
如果
end
是空串(end=""
)- 意味着输出后不自动换行
- 同时不输出任何结束符
- 我可以手动在输出字符串的末尾加上换行符(
\n
)
这样的话
- 我不但可以输出结尾换不换行
- 还能控制具体在哪里换行
- 我想输出点别的,比如说当前时间?
搜索信息
- 百度
python3 输出时间
抄写代码
#
号 后面的都是注释- 可以忽略的
第一句是
import time
- import 是嘛意思来着?
- 搜索一下
- 先进 help()帮助模式
- 然后搜索 import
查找帮助
- 在 python3 解释器环境查找帮助
import 是导入一个 module 模块包
- port是港口
- import 原意是导入、进口
- export 是导出、出口
- 感觉和航海历史有关
导入的东西是模块(modules)
- 那什么又是模块(modules)
modules 是啥?
- time 是一个模块(module)的名称
我们可以
- help()进入帮助模式
- 在帮助模式下输入 modules
modules
- 查看所有的 modules
python 之所以强大就是因为各种 模块(modules) 好用
- 各种模块有统一的统一的包管理器
- 直接import就可以调用库的接口
- 所有dirty的东西都被藏在了背后
- 啥都不用想
直接按照例程打上
- 一运行就跑起来了
- 比如我们这次要用到的 time.time()
- 确实可以在modules找到
- 如下图
- 这个time怎么用呢?
啥是 time
import
就是导入time
就是导入的module
的名字- 导入了的
module
才能用 - 不导入的
module
不能用
- 导入了的
- time包导进来了
- 如何调用函数方法呢?
函数调用
time.time()
- 就是调用
time
这个module
里面的time()
这个函数方法 - 可以输出当前时间
- 就是调用
前提是导入了time这个包
- 导入了
time
这个module
之后 - 才可以使用
time.time()
这个方法得到时间戳
- 导入了
为什么以前我们用的
print()
这个函数方法- 啥
module
都不用导入 - 直接就能用呢?
- 啥
内置函数
第一句就明确了
- print 是 builtins 这个包(module) 的 function(内置函数)
builtins 这个包(module) 本来就是内置的包
- built-ins么?!
- 内置就是本来就搁在里面了
- 什么都不用导入就能用的里面的函数
- 我们已经学过哪些内置函数了呢?
- 不要翻页,全都自己列出来
内置函数列表
- help()
- int()
- chr()
- bin()
- hex()
- ord()
- print()
- 这些都是内置的函数
- 不需要
import
任何包(module)
- 直接就能用的
- 好像还遗漏了一个函数,是哪个?
time 怎么用
- 我们先查询官方帮助
- 没有发现可行的例子
- 我们回过头去网页找例程
- 就在例程基础上照猫画虎
照猫画虎
#引入一个包叫time
import time
#得到当前时间的asctime形式字符串
ascii_time = time.asctime(time.localtime(time.time()))
#进行输出
print ("本地时间为 :", ascii_time)
- 这个语句有点复杂
一点点打,别打错了
- 这是很好的最初锻炼
- 也是锻炼自信的方法
也可以复制到剪贴板,粘贴过去
- 这是堕落的开始
- 最初的省事儿
- 会让你感到失控
- 不像自己一个个打出来的那么踏实
- 错误也是一种锻炼
- 都熟悉之后再复制粘贴
- 不要上来就图省事儿
嵌套的函数
- 这个一大串东西是有规律的
- 首先什么是 time
time 是一个 module 模块包
- 处理时间的包
包里有各种函数
- time.time()
- time.localtime()
- time.asctime()
- 例子是一行写成的
使用了函数嵌套调用
- 我们试试把函数嵌套调用拆开
- 不用嵌套
- 分开写
分开写
函数嵌套调用
- 首先通过调用 time.time()函数 得到了ticks
- 然后通过调用 localtime(ticks)函数 得到了localtime
- 最后通过调用 asctime(localtime) 得到了asctime
那么这些函数
- time
- localtime
- asctime
- 都是什么意思
- 分别help一下
time.time()
- help(time.time)
- 这里有两个time有点乱
我们区分一下颜色
- 前面的是红色的 time
- 后面的是绿色的 time()
time.time()
- 引入 time 这个包
- 从time 包里调用 time() 这个函数
- 圆括号说明 time() 是函数
- 这个 time() 函数 就是 time 包里面的函数
- 那么这个time.time()到底返回什么值呢?
- 调用一下看看
- 这一串长长的数字应该如何理解
time.time()的意义
- 我们还是得返回来看帮助文件
- 这个东西返回的是一个浮点型的数字
- 是从Epoch到当前的时间总共过了多少秒
- 那什么又是Epoch呢?
Epoch
- 发音是[ˈepək]
Epoch 的意思是纪年方法或者说是年号
- 比如今年按照日本纪年法是令和四年
- 公元1587年是明朝万历十五年
- 那python中的Epoch年号又是什么年号呢?
unix纪年法(unix时间戳)
- 从1970年1月1日开始的
- 也就是1970-01-01T00:00:00Z
- 格林威治时间 1970 年 1 月 1 日 00:00:00
- 每过一秒这个数字就加1
- 每过半秒这个数字就加0.5
所以Epoch也叫做
- seconds since the Epoch
为什么是1970-01-01呢?
- 第一版unix的正式发布是在1971年
- 编写c和unix工作是从1969年开始实施的
- 大概率是
Kenneth Thompson
和Dennis Ritchie
- 在1970年初一拍脑门定下来了这个起始时间点
最关键的是
- 这个关于秒数的数据类型time_t也已然在后来成了标准c库的一部分
- 因此被广泛运用在各种 类unix(Unix-like)的软件系统中
- 比如我们用到的这个debian的变种ubuntu
所以 Epoch 也叫做
- Unix Time
- Posix Time
- UNIX Epoch Time
time.time()得到的是一个浮点数
- 但是我们要的是年份、月份、日期、时分秒这些具体的信息
- 考虑到从闰年到闰秒的一系列难题
这个转化太麻烦了
- 有什么办法么?
time.localtime()
time.time()出来的浮点秒数交给 time.localtime()处理
- time 还是包名
- 这次的函数名变成了 localtime()
- 输入是unix时间戳
输出本地时间元组
- 年份、月份、日期、时分秒这些具体的信息
如果localtime函数的参数缺省
- 默认使用time.time()作为参数
对的
- time.time()就是当前时间的unix时间戳
time.asctime()
time.asctime 函数
- 输入为time.localtime()输出的时间元组作为
- 输出为一个字符串
asctime函数 接收时间元组产生 ascii 字符串
- ascii 就是 ascii编码
- asctime 就是 用ascii方式显示的 time
如果asctime函数的参数缺省
- 默认使用time.localtime()作为参数
对的
- time.localtime()就是当前时间的时间元组
最后输出
我们都使用默认参数
- 把函数嵌套大大简化了
把最后的结果交给 print()
- 最终就能得到当前的时间!
- 我可以让时间刷新么?
手动延迟
我想要刷新这个东西怎么办?
- 需要重新得到
asc_time
- 然后重新输出
asc_time
- 需要重新得到
- 这个过程可以手动来完成
我想让他自动刷新起来
- 先去编写一个py程序
编写程序
- 运行结果
总结
通过搜索
- 我们学会
import
导入time
了
- 我们学会
time 是一个
module
- import 他可以做和时间相关的事情
time.time()
- 得到当前时间戳
time.localtime()
- 得到本地时间元组
- local为本地
time.asctime()
- 得到时间日期字符串
- asc为ascii
完整写法为
- asc_time = time.asctime( time.localtime( time.time()))
可以简写为
time.asctime()
- asctime 是 time 这个 module 里面的函数
- 是外部函数
内部函数是系统自带的
- 比如 quit()
- 现在想要自动刷新时间,怎么办?
- 我们下次再说!