oeasy教您玩转python - 011 - # 输出时间
输出时间
回忆上次内容
print
函数意味着输出后不自动换行
同时不输出任何结束符
我可以手动在输出字符串的末尾加上换行符(
\n
)end参数
的默认值是\n
end
的值可以是任意字符串end
的值会输出到结尾位置有个默认的参数
end
如果
end
是空串(end=""
)这样的话
我不但可以输出结尾换不换行
还能控制具体在哪里换行
我想输出点别的,比如说当前时间?🤔
搜索信息

百度
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
都不用导入直接就能用呢?
内置函数

第一句就明确了
built-ins么?!
print 是 builtins 这个包(module) 的 function(内置函数)
builtins 这个包(module) 本来就是内置的包
内置就是本来就搁在里面了
什么都不用导入就能用的里面的函数
我们已经学过哪些内置函数了呢?
不要翻页,全都自己列出来
内置函数列表
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时间戳)
seconds since the Epoch
从1970年1月1日开始的
也就是1970-01-01T00:00:00Z
格林威治时间 1970 年 1 月 1 日 00:00:00
每过一秒这个数字就加1
每过半秒这个数字就加0.5
所以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
得到时间日期字符串
asc为ascii
得到本地时间元组
local为本地
得到当前时间戳
import 他可以做和时间相关的事情
time.time()
time.localtime()
time.asctime()
完整写法为
asc_time = time.asctime( time.localtime( time.time()))
可以简写为
time.asctime()
asctime 是 time 这个 module 里面的函数
是外部函数
内部函数是系统自带的
比如 quit()
现在想要自动刷新时间,怎么办?🤔
我们下次再说!*