1.定义
模块:本质是.py结尾的python文件,从逻辑上组织python代码,可以是变量,函数,类,逻辑,目的是实现一个功能,test.py 对应模块名:test
包:从逻辑上组织模块的,本质就是一个目录,必须带有__init__.py文件,导入模块指的是导入这个init文件
2.导入方法
import module_name,module_name2
相当于将所有代码赋值给一个变量,调用的时候需要使用前缀module_name.xxx指定
from module_name import *
把所有内容导入本地运行,使用的时候可以直接使用变量名、函数名,不需要前缀
from module_name import func as alise
将部分内容导入本地运行,同时使用别名避免冲突,比如某一个函数、变量
3.import的本质(路径搜索 搜索路径)
- 把python文件解释一遍
- 把所有代码赋值给一个变量,
- 导入包的本质就是解释这个包下面的__init.py__文件
- import module_name -->module_name.py -->module_name.py的路径-->sys.path
4.导入优化
from module import func / as alise
将重复调用的模块导入到本地,避免重新查找
5.模块分类
a:标准库
b:开源模块
c:自定义模块
标准常用库模块:
模块time
协调世界时,又称世界统一时间、世界标准时间、国际协调时间。由于英文(CUT)和法文(TUC)的缩写不同,作为妥协,简称UTC
Epoch指的是一个特定的时间:1970-01-01 00:00:00 UTC
DST,夏令时,1表示是夏令时,0表示不是夏令时
表示方法有3种:
1.时间戳,以秒表示,从1970.1.1 00:00:00开始计秒
2.格式化时间字符串,以各种%格式年月日时分秒表现,也就是平时我们看到的YYYY-mm-DD HH:MM:SS格式
3.元组时间,将9个元素分别赋予固定变量表现,time.struct_time(tm_year=2017, tm_mon=12, tm_mday=5, tm_hour=9, tm_min=9, tm_sec=5, tm_wday=1, tm_yday=339, tm_isdst=0)
- 时间变量
timezone -- difference in seconds between UTC and local standard time altzone -- difference in seconds between UTC and local DST time daylight -- whether local time should reflect DST tzname -- tuple of (standard time zone name, DST time zone name)
>>> time.timezone -28800
与UTC标准时间相差秒数,早了8个小时 >>> time.altzone -28800
与夏令时相差秒数,没有使用夏令时相差8个小时 >>> time.daylight 0
没有使用夏令时 >>> time.tzname ('CST', 'CST')
标准时区,夏令时区 >>>
- 时间方法:
time() -- return current time in seconds since the Epoch as a float clock() -- return CPU time since process start as a float sleep() -- delay for a number of seconds given as a float gmtime() -- convert seconds since Epoch to UTC tuple localtime() -- convert seconds since Epoch to local time tuple asctime() -- convert time tuple to string ctime() -- convert time in seconds to string mktime() -- convert local time tuple to seconds since Epoch strftime() -- convert time tuple to string according to format specification strptime() -- parse string to time tuple according to format specification tzset() -- change the local timezone
>>> time.time() 1512436325.3465307 返回距离1970.1.1零秒的浮点型秒数 >>> time.clock() 0.025913 返回自CPU启动的浮点型时间 >>> time.sleep(1) 休眠1秒 >>> time.gmtime(time.time()) time.struct_time(tm_year=2017, tm_mon=12, tm_mday=5, tm_hour=1, tm_min=13, tm_sec=11, tm_wday=1, tm_yday=339, tm_isdst=0) 将时间戳转换成UTC元组,我们是UTC+8,比UTC快8个小时 >>> time.localtime() time.struct_time(tm_year=2017, tm_mon=12, tm_mday=5, tm_hour=9, tm_min=14, tm_sec=23, tm_wday=1, tm_yday=339, tm_isdst=0) 将本地时间戳转换成本地元组时间 >>> time.asctime(time.localtime()) 'Tue Dec 5 09:14:13 2017' 将元组时间转换成字符串时间 >>> time.ctime() 'Tue Dec 5 09:14:59 2017' 将时间戳转换成字符串时间 >>> time.mktime(time.localtime()) 1512436704.0 将本地元组时间转换成UTC时间戳 >>> time.strftime('%Y-%m-%d',time.localtime()) '2017-12-05' 格式化时间,先格式,后时间,格式-元组,格式先后顺序无关 >>> time.strptime('2017-12-05','%Y-%d-%m') time.struct_time(tm_year=2017, tm_mon=5, tm_mday=12, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=132, tm_isdst=-1) 时间解析,先时间,后解析,时间-元组,格式先后顺序有关,格式化格式对应字符串格式
- 分类:
时间戳方法:time,clock,mktime
元组方法:gmtime,localtime,strptime
字符串方法:asctime,ctime,strftime
- 时间元组含义
year (including century, e.g. 1998) month (1-12) day (1-31) hours (0-23) minutes (0-59) seconds (0-59) weekday (0-6, Monday is 0) Julian day (day in the year, 1-366) DST (Daylight Savings Time) flag (-1, 0 or 1) If the DST flag is 0, the time is given in the regular time zone; if it is 1, the time is given in the DST time zone; if it is -1, mktime() should guess based on the date and time.
- 时间转换
1.字符串->元组
>>> string_to_struct = time.strptime("2017/12/05","%Y/%m/%d")
>>> string_to_struct1 = time.strptime("2017/12/05 10:10:10","%Y/%m/%d %H:%M:%S")
>>> string_to_struct
time.struct_time(tm_year=2017, tm_mon=12, tm_mday=5, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=339, tm_isdst=-1)
>>> string_to_struct1
time.struct_time(tm_year=2017, tm_mon=12, tm_mday=5, tm_hour=10, tm_min=10, tm_sec=10, tm_wday=1, tm_yday=339, tm_isdst=-1)
2.元组->时间戳
>>> string_to_struct time.struct_time(tm_year=2017, tm_mon=12, tm_mday=5, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=339, tm_isdst=-1) >>> time.mktime(string_to_struct) 1512403200.0 >>> time.mktime(string_to_struct1) 1512439810.0
3.时间戳->元组
time.gmtime(time.time() ) time.struct_time(tm_year=2017, tm_mon=12, tm_mday=5, tm_hour=2, tm_min=24, tm_sec=22, tm_wday=1, tm_yday=339, tm_isdst=0)
>>> time.gmtime(time.time()-24*60*60)
time.struct_time(tm_year=2017, tm_mon=12, tm_mday=4, tm_hour=2, tm_min=25, tm_sec=55, tm_wday=0, tm_yday=338, tm_isdst=0)
4.元组->字符串:格式化元组
>>> time.gmtime() time.struct_time(tm_year=2017, tm_mon=12, tm_mday=5, tm_hour=2, tm_min=27, tm_sec=57, tm_wday=1, tm_yday=339, tm_isdst=0) >>> time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime()) '2017-12-05 02:28:10'
5.strftime与strptime
strftime('fomat',struct) =string 格式,元组=格式化字符串
strptime('string','format) = struct 格式化字符串,格式=元组
6.相互间转换路径
- 格式化含义
%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 当前时区的名称 %% %号本身
- 日期时间加减
>>> import datetime >>> datetime.datetime.now() datetime.datetime(2017, 12, 5, 12, 8, 55, 706396) >>> datetime.date.fromtimestamp(time.time()) datetime.date(2017, 12, 5) >>> print(datetime.datetime.now() + datetime.timedelta(3)) 2017-12-08 12:10:32.978267
默认是天数 >>> print(datetime.datetime.now() + datetime.timedelta(hours=3)) 2017-12-05 15:10:40.681483 >>> print(datetime.datetime.now() + datetime.timedelta(hours=+3)) 2017-12-05 15:10:49.099027
+也行 >>> print(datetime.datetime.now() + datetime.timedelta(minutes=30)) 2017-12-05 12:40:56.701895 >>> c_time = datetime.datetime.now() >>> c_time datetime.datetime(2017, 12, 5, 12, 11, 8, 369987) >>> c_time.replace(minute=3,hour=2) datetime.datetime(2017, 12, 5, 2, 3, 8, 369987) >>> c_time.replace(hour=2,minute=3) datetime.datetime(2017, 12, 5, 2, 3, 8, 369987) >>>
模块random
choice(seq) method of Random instance
Choose a random element from a non-empty sequence.
- 非空序列返回一个随机元素
-
>>> random.choice(range(10)) 9
random(...) method of Random instance
random() -> x in the interval [0, 1).
- 返回左闭右开,默认是0到1之间的浮点数
-
View Code
>>> random.random() 0.41816400018068844 >>> random.random() 0.035185160469280996 >>> random.random() 0.9860034118082212