模块
包
module and package
-
定义:包是通过使用’.模块名’来组织python模块名称空间的方式,具体而言,包就是一个包含
_init_.py
文件的文件夹 -
目的:用文件夹将文件/模块组织起来
-
注意:
- Py3 即使包中没有
_init_.py
也可以使用 - Py2 如果没有
_init_.py
肯定报错
- Py3 即使包中没有
-
创建包的目的不是为了运行,而是为了被导入使用
-
包的本质依然还是模块
- 使用时,import导入,导入带点的,点的最左边一定是包名
- import导入文件时,产生名称空间的名字源于文件,import包,名称空间同样源于文件(包)
_init_.py
导入包的本质导入它
➜ school tree . ├── api │ ├── __init__.py │ ├── students.py │ └── versions.py ├── cmd │ ├── __init__.py │ └── manage.py ├── db │ ├── __init__.py │ └── models.py └── __init__.py
import school
School.api.students.gets()
直接运行报错
要想让他运行 no error
school下的
_init_.py
添加from . import api
,找到api在api下的
_init_.py
添加from . Import student
可以运行test[外链图片转存失败(img-a7e7Mm8K-1564189871670)(/Users/xujiaqi/Library/Application Support/typora-user-images/image-20190725141610220.png)]
[外链图片转存失败(img-sn4FEB0b-1564189871672)(/Users/xujiaqi/Library/Application Support/typora-user-images/image-20190725141642303.png)]
[外链图片转存失败(img-0iHomt4K-1564189871672)(/Users/xujiaqi/Library/Application Support/typora-user-images/image-20190725141722922.png)]
From…import…时,import后导入的模块,必须是一个不包含点(.),否则报错
在school/api/versions.py中导入school/cmd/manage.py
#在school/api/versions.py中
from school.cmd import manage #绝对导入
manage.main()
from ..cmd import manage #相对导入
字符编码
python主要识别文字内容,而不是关心拓展名。—>解释器
字符——>机器翻译——>二进制
字符如何对应特定数字的标准,这个标准就是字符编码
ASCII
GBK
Unicode
UTF-8(Unicode Transformation Format)
- 对于英文字符来说,1Bytes
- 中文字符,3bytes
- 对于其他偏僻字符,更多的bytes存储
对于内存而言—>unicode
#time 模块
import time
time.sleep([n]) #休眠
time.time()#获取当前时间戳
在python中,表示时间通常有三种方式:
- 时间戳(timetamp):表示的是从1970.01.01 00:00:00 开始按秒计算的偏移量
- 格式化的时间字符串(format string)
2019-7-26 08:46:30
- 结构化的时间(struct_time)—>元素,9个元素(年月日时分秒。一年的第几周,一年的第几天,夏令时
>>> import time
>>> time.time()
1564102386.316857
[i for i in dir(time) if not i.startswith('_')]
['altzone', 'asctime', 'clock', 'ctime', 'daylight', 'get_clock_info', 'gmtime', 'localtime', 'mktime', 'monotonic', 'monotonic_ns', 'perf_counter', 'perf_counter_ns', 'process_time', 'process_time_ns', 'sleep', 'strftime', 'strptime', 'struct_time', 'time', 'time_ns', 'timezone', 'tzname', 'tzset']
>>> time.strftime('%Y-%m-%d %X')
'2019-07-26 08:56:08'
>>> time.localtime()
time.struct_time(tm_year=2019, tm_mon=7, tm_mday=26, tm_hour=8, tm_min=58, tm_sec=2, tm_wday=4, tm_yday=207, tm_isdst=0)
>>> time.localtime()[2] #索引
26
time 模块的常用方法
方法 | 描述 |
---|---|
time.localtime([sec]) | 将一个时间戳转化为一个当前时区的struct_time(若未提供参数,当前时间) |
time.gmtime([sec]) | 和localtime()类似,不同的是,其是将一个时间戳转换为UTC时区(0时区)的atruct_time |
time.time() | 返回当前时间戳 |
time.mktime(t) | 将time.struct_time转化为时间戳 |
time.sl |