import time
(UTC coordinated universal time)
(计算机零时:1970-1-1)
常用属性:
time.altzone :夏令时时间与UTC时间差(秒)
time.daylight:夏令时校正时间
time.timezone:本地区时间与UTC时间差
常用函数:
time.time() 返回从计算机元年至当前时间的秒数的浮点数(UTC时间为准)
time.sleep(secs) 让程序按给定描述的浮点数睡眠一段时间
time.gmtime([secs]) 将给定秒数转换为用计算机元年计算的时间
time.asctime((tuple)) 将描述时间的元组转换成日期时间字符串
time.asctime((2008,8,8,23,8,8,0,0,0))
年,月,日,时 分,秒,周,0,0
→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→
自定义模块:
文件mymod
def fac(n):
print('正在计算',n,'的阶乘')
def sum_fac(n):
print('正在计算',n,'的阶乘的和。')
name1 = 'audi'
name2 = 'tesla'
==========导入模块测试
mymod.fac(10)
mymod.sum_fac(30)
print('mymod.name1 = ',mymod.name1)
============
导入模块时的路径索引顺序:
1.索引程序的运行时路径(当前路径)
2.搜索 sys.path里提供的路径
3.搜索内置模块
4.import sys → sys.path 下显示出来的路径,放入自己编写的模块就可以使用了。
5.搜索模块时先搜索sys.path下的模块,如果没有,搜索内置模块
6.sys.path是个列表,因此可以添加元素(在该列表中指的是路径)
sys.path.append('/user/six/desktop'),然后放入模块
→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→
模块化编程的优点:
1.有利于多人合作开发
2.使代码更加易于维护
3.提高代码的复用率
4.模块化编程有助于解决函数名和变量名冲突(重名)问题,模块内的变量的作用域
为模块内全局。
模块的加载过程:
1.在模块导入时,所有模块的所有语句都会执行
2.如果一个模块已经导入,则再次导入时不会重新执行模块内的语句。
模块的重新加载:
import 模块名
import imp
imp.reload(模块名) 重新加载已经加载过的模块
(imp模块专门负责导入事宜)
→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→
模块被导入和执行的过程:
1.先搜索相关路径赵模块(.py)
2.判断是否有此模块对应的.pyc文件,如果没有此文件,则用.py文件生成
相应.pyc文件再进行加载
3.如果文件已经存在,则判断.pyc文件和.py文件的修改时间,再决定是否重新生成.pyc文件
模块的编译 compile
编译 解释执行
mymod.py --->> mymod.pyc ------>> python3
(pyc是生成的机器语言的过度文件)
¥¥¥¥¥
每次执行程序,设备会自行判断对应的.py和.pyc的生成时间,如果.py文件
生成时间较早,则.pyc不会改变,此时只能通过imp.reload(xxx)重新加载;
如果.py生成时间较晚,则重新执行程序的时候会自动更改.pyc文件。
模块的文档字符串:
模块内的第一行没有赋值给任何变量的字符串为文档字符串
此文档字符串可以用help(xxx)查看
示例:(mymod.py)
Help on module mymod:
NAME
mymod - 文档文件
DESCRIPTION
此模块有两个函数和两个变量
此处省略100字
FUNCTIONS
fac(n)
sum_fac(n)
DATA
name1 = 'audi'
name2 = 'tesla'
FILE
/Users/six/Desktop/python/mymod.py
模块的文档字符串被绑定在模块的__doc__属性上
→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→
模块内的__xxx__
__file__属性:
用来绑定模块队形的文件路径名
示例:
>>> import mymod
>>> mymod.__file__
__name__属性:
用来记录模块自身的名字
作用:1 记录模块名
2 用来判断是否为主模块
__name__说明:
当此模块作为主模块时(第一个运行的模块)运行时,__name__绑定'__main__'
当此模块不是主模块时,模块为文件名去掉.py
模块中的__all__列表
模块中的__all__列表是一个用来存放可导出属性的字符串列表
作用:
当用from import * 来导入模块时,只导入__all__列表内的属性
示例:mymod2.py
>>> dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__']
>>> from mymod2 import *
>>> dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'f1', 'f2', 'f3', 'f4', 'fac', 'name1', 'name2']
【【【【【加入__all__】】】】】
>>> from mymod2 import *
>>> dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'f1', 'fac', 'name1']
"""from mymod2 import * """
此中只会出现__all__列表中的属性,只对这一个import语句有用。
→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→
模块的隐藏属性:
模块中以'_'开头的属性,在from 模块名 import * 语句导入时,不会导入,通常称这些属性
为隐藏属性。
示例:mymod3.py
→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→
标准库模块:
随机模块 random
作用:用于模拟或者生成随机数的模块。
函数说明:见文BVCV
→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→
包(模块包)package (包是文件夹)
包是将模块以文件夹的组织形式进行分组管理的方法。
作用:
1.将一系列模块进行分类管理,有利于防止命名冲突
2.可以再需要时家在一个或者部分模块而不是全部模块
包示例:(文件夹里要有__xx__.py文件才会被系统认为是包。)
mypack/
__input__.py
menu.py
games/
__init__.py
contra.py # 魂斗罗
supermario.py # 超级玛丽
tanks.py # 坦克大战
office/
__init__.py
excel.py
word.py
powerpoint.py
导入包:/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/mypack
import mypack # 导入mypack包
#想调用menu.py里的show_menu函数
import mypack.menu # 导入mypack里的menu模块
mypack.menu.show_menu # 调用menu.py里的menu函数
示例:import mypack.games.contra.play()
语法:import 包名.子包名.模块名 [as 模块新名]
(同导入模块一样)
from 包名 import * #导入包下的所有模块