Python装饰器 百日筑基之得气

模块:
模块是一系列常用功能的集合体,一个py文件就是一个模块
1、从文件级别组织程序,更方便管理
随着程序的发展,功能越来越多,为了方便管理,我们通常将程序分成一个个的文件,这样做程序的结构更清晰,方便管理。这时我们不仅仅可以把这些文件当做脚本去执行,还可以把他们当做模块来导入到其他的模块中,实现了功能的重复利用
2、拿来主义,提升开发效率
同样的原理,我们也可以下载别人写好的模块然后导入到自己的项目中使用,这种拿来主义,可以极大地提升我们的开发效率,避免重复造轮子。
每个模块都是一个独立的名称空间,定义在这个模块中的函数,把这个模块的名称空间当做全局名称空间,这样我们在编写自己的模块时,
就不用担心我们定义在自己模块中全局变量会在被导入时,与使用者的全局变量冲突

导入模块

import 模块名,模块名,模块名 可以写多个,但是不建议这么写.建议分开写,多行导入:易于阅读 易于编辑 易于搜索 易于维护。

import 导入过来的功能都需要,使用模块点的方法去执行

import 模块名 as 别名 为模块起别名


from 模块名 import 函数名,函数名 可以单独导出相应的函数,而不用导出所有函数.


from 模块名 import 函数名 as 别名,函数名 as 别名 可以更改多个.


from 模块名 import * 导出模块下所有函数,不推荐使用


# __all__ = ['可以被*导入的内容,是一个列表'] 用这种方式强制*只导出相应的函数
if __name__ == '__main__': # 可以在下面放一些需要测试的函数,下面的函数会被导入时所执行.

模块的搜索顺序:
内存中已经加载的模块->内置模块->sys.path路径中包含的模块
import sys
print(sys.path) # 打印当前环境变量
如果要添加其它盘符中的模块,需要把模块的路径加载到Python的环境中去.
sys.path.insert(0,r'模块路径') # 将模块路径插入Python环境中

编译Python文件
为了提高加载模块的速度,提高的是加载速度而绝非运行速度。python解释器会在__pycache__目录中下缓存每个模块编译后的版本,格式为:module.version.pyc。通常会包含python的版本号。例如,在CPython3.3版本下,spam.py模块会被缓存成__pycache__/spam.cpython-33.pyc。这种命名规范保证了编译后的结果多版本共存。
Python检查源文件的修改时间与编译的版本进行对比,如果过期就需要重新编译。这是完全自动的过程。并且编译的模块是平台独立的,所以相同的库可以在不同的架构的系统之间共享,即pyc使一种跨平台的字节码,类似于JAVA火.NET,是由python虚拟机来执行的,但是pyc的内容跟python的版本相关,不同的版本编译后的pyc文件不同,2.5编译的pyc文件不能到3.5上执行,并且pyc文件是可以反编译的,因而它的出现仅仅是用来提升模块的加载速度的,不是用来加密的。
#提示:
1.模块名区分大小写,foo.py与FOO.py代表的是两个模块
2.在速度上从.pyc文件中读指令来执行不会比从.py文件中读指令执行更快,只有在模块被加载时,.pyc文件才是更快的
3.只有使用import语句是才将文件自动编译为.pyc文件,在命令行或标准输入中指定运行脚本则不会生成这类文件.

time模块
在计算机中时间共有三种方式:
1.时间戳: 通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型
2.格式化字符串时间: 格式化的时间字符串(Format String): ‘1999-12-06’
3.结构化时间:元组(struct_time) struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天等)


python中时间日期格式化符号:
%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模块的时间转换方式:

从时间戳到字符串时间的转换:

import time
nTime = time.time()
print("时间戳:%d" % (nTime))
structTime = time.localtime(nTime)
print("结构化时间:",structTime)
strTime = time.strftime("%Y-%m-%d %H:%M:%S",structTime)
print("字符串时间:",strTime)

# 打印内容如下:
时间戳:1547561163
结构化时间: time.struct_time(tm_year=2019, tm_mon=1, tm_mday=15, tm_hour=22, tm_min=6, tm_sec=3, tm_wday=1, tm_yday=15, tm_isdst=0)
字符串时间: 2019-01-15 22:06:03


从字符串时间回退到时间戳:

strTime = "2019-01-15 22:06:03"
print("字符串时间:",strTime)
struct_Time = time.strptime(strTime,"%Y-%m-%d %H:%M:%S")
print("结构化时间:",struct_Time)
nTime = time.mktime(struct_Time)
print("时间戳:",nTime)

# 打印内容如下:
字符串时间: 2019-01-15 22:06:03
结构化时间: time.struct_time(tm_year=2019, tm_mon=1, tm_mday=15, tm_hour=22, tm_min=6, tm_sec=3, tm_wday=1, tm_yday=15, tm_isdst=-1)
时间戳: 1547561163.0

datetime模块

from datetime import datetime
print(datetime.now()) # 获取当前时间

# 打印内容如下:
2019-01-15 22:16:08.941898

指定时间并创建一个datetime的类

from datetime import datetime
dt = datetime(2019,1,15,22,20,0)
print(type(dt),dt)

# 打印内容如下:
<class 'datetime.datetime'> 2019-01-15 22:20:00 

datetime转换时间戳:

from datetime import datetime
dt = datetime.now()
new_timestamp = dt.timestamp()
print(new_timestamp)

# 打印内容如下:
1547562274.605821

将时间戳转换成字符串时间

from datetime import datetime
nTime = datetime.timestamp(datetime.now()) # 时间戳
print(datetime.fromtimestamp(nTime))

# 打印内容如下:
2019-01-15 22:29:50.470887

将str转换成datetime

from datetime import datetime
nTime = datetime.strptime("2019-1-15","%Y-%m-%d")
print(type(nTime),nTime)

# 打印内容如下:
<class 'datetime.datetime'> 2019-01-15 00:00:00 

将datetime转换成str

from datetime import datetime
nTime = datetime.now()
strTime = datetime.strftime(nTime,"%Y-%m-%d %H:%M:%S")
print(type(strTime),strTime)

# 打印内容如下:
<class 'str'> 2019-01-15 22:39:44 

datetime的加减法
需要使用timedelta类

from datetime import datetime,timedelta
nTime = datetime.now()
print("当前时间:",nTime)
otherTime = nTime - timedelta(days=1)
print("减去一天后的时间:",otherTime)

# 打印内容如下:
当前时间: 2019-01-15 22:46:05.038629 
减去一天后的时间: 2019-01-14 22:46:05.038629 

timedelta可选参数
days: float = ...,
seconds: float = ...,
microseconds: float = ...,
milliseconds: float = ...,
minutes: float = ...,
hours: float = ...,
weeks: float = ..., *,
fold: int = ..

猜你喜欢

转载自www.cnblogs.com/caesar-id/p/10381170.html
今日推荐