1、import导入模块

#1.定义
模块:用来从逻辑上组织python代码(变量,函数,类,逻辑),本质就是.py结尾的python文件,实现一个功能
包:python package 用来从逻辑上组织模块  本质就是一个目录(必须带有一个__init__.py的文件)

#2.导入方法
import module
import module1,module2   导入多个模块
from module import *     导入所有  不推荐慎用(可能会覆盖本文件中自定义的同名函数)
from module  import  logger as logger_sunhao   创建别名
from module import m1,m2,m3

#3.import模块本质(路径搜索和搜索路径)
import sys
print(sys.path)  sys.path路径就是当前执行文件所在的路径
import module ---> module.py ----> module.py的路径 ---> sys.path

#4.导入优化
from module_test import test

#5.模块的分类
  1.标准库
    time与datetime
  2.开源模块
  3.自定义模块

 Python全栈开发之5、模块

 #1、bin执行文件的路径是'E:\\Python学习2019',如果想调用web3目录下的main.py模块,需要  from web1.web2.web3 import main  这样调用

Python全栈开发之5、模块

#2、main.py和cal.py虽然都在web3目录下,但是如果main.py想调用cal.py必须这样写:from web1.web2.web3 import cal  因为执行文件的路径只有一个就是:'E:\\Python学习2019'

Python全栈开发之5、模块

#3、bin和module目录是同级目录,如果想在bin.py中直接from module import main调用module目录中的文件,需要把路径加到环境变量中。
BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASE_DIR)

二、动态导入模块 importlib.import_module

 Python全栈开发之5、模块

三、time和datetime时间模块

1、time

在Python中,通常有这几种方式来表示时间:

1、时间戳
2、格式化的时间字符串
3、元组(struct_time)共九个元素。

由于Python的time模块实现主要调用C库,所以各个平台可能有所不同。

UTC(Coordinated Universal Time,世界协调时)亦即格林威治天文时间,世界标准时间。在中国为UTC+8。DST(Daylight Saving Time)即夏令时。

时间戳(timestamp)的方式:通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。返回时间戳方式的函数主要有time(),clock()等。

元组(struct_time)方式:struct_time元组共有9个元素,返回struct_time的函数主要有gmtime(),localtime(),strptime()。下面列出这种方式元组中的几个元素:
 1 # -*-coding:utf-8-*-
 2 import time
 3 print(time.time())      #获取一个时间戳 从1970年开始按秒计时的一个浮点型数值
 4 print(time.localtime()) #返回一个struct_time元组类型序列 里面元素包含年,月,日等九个元素
 5 print(time.timezone)    #返回一个值 单位为秒 
 6 print(time.asctime())   #返回当前时间字符串格式
 7 time.sleep(2) #睡眠几秒
 8 
 9 time.gmtime()  #把时间戳转换成元组,但是时间是UTC时间
10 time.gmtime(time.time()-time.timezone)  #把UTC时间转换成当地时间
11 print(time.localtime())  #把时间戳转换成元组,但是时间是当地时间  结果为UTC+8时区
x=time.localtime()
print(x.tm_year)  #获取年
print(x.tm_mon)  #获取月
print(x.tm_mday) #获取日
print(x.tm_hour)  #获取时
print(x.tm_min)  #获取分
print(time.mktime(x)) #元组转换成时间戳

#元组转换成格式化字符串时间
time.strftime("%Y-%m-%d  %H:%M:%S",time.localtime())  

#把格式化字符串转换成元组
time.strptime('2017-10-17','%Y-%m-%d')  
%a    本地(locale)简化星期名称    
%A    本地完整星期名称    
%b    本地简化月份名称    
%B    本地完整月份名称    
%c    本地相应的日期和时间表示    
%d    一个月中的第几天(01 - 31%H    一天中的第几个小时(24小时制,00 - 23%I    第几个小时(12小时制,01 - 12%j    一年中的第几天(001 - 366%m    月份(01 - 12%M    分钟数(00 - 59%p    本地am或者pm的相应符    一    
%S    秒(01 - 61)    二    
%U    一年中的星期数。(00 - 53星期天是一个星期的开始。)第一个星期天之前的所有天数都放在第0周。    三    
%w    一个星期中的第几天(0 - 6,0是星期天)    三    
%W    和%U基本相同,不同的是%W以星期一为一个星期的开始。    
%x    本地相应日期    
%X    本地相应时间    
%y    去掉世纪的年份(00 - 99%Y    完整的年份    
%Z    时区的名字(如果不存在为空字符)    
%%    ‘%’字符

Python全栈开发之5、模块

2、datetime时间模块

import datetime
 
# print(datetime.datetime.now()) #返回 2016-08-19 12:47:03.941925
#print(datetime.date.fromtimestamp(time.time()) )  # 时间戳直接转成日期格式 2016-08-19
# print(datetime.datetime.now() )
# print(datetime.datetime.now() + datetime.timedelta(3)) #当前时间+3天
# print(datetime.datetime.now() + datetime.timedelta(-3)) #当前时间-3天
# print(datetime.datetime.now() + datetime.timedelta(hours=3)) #当前时间+3小时
# print(datetime.datetime.now() + datetime.timedelta(minutes=30)) #当前时间+30分
# c_time  = datetime.datetime.now()
# print(c_time.replace(minute=3,hour=2)) #时间替换

 四、 re模块(正则表达式)

'.'     默认匹配除\n之外的任意一个字符,若指定flag DOTALL,则匹配任意字符,包括换行
'^'     匹配字符开头,若指定flags MULTILINE,这种也可以匹配上(r"^a","\nabc\neee",flags=re.MULTILINE)
'$'     匹配字符结尾,或e.search("foo$","bfoo\nsdfsf",flags=re.MULTILINE).group()也可以
'*'     匹配*号前的字符0次或多次,re.findall("ab*","cabb3abcbbac")  结果为['abb', 'ab', 'a']
'+'     匹配前一个字符1次或多次,re.findall("ab+","ab+cd+abb+bba") 结果['ab', 'abb']
'?'     匹配前一个字符1次或0次
'{m}'   匹配前一个字符m次
'{n,m}' 匹配前一个字符n到m次,re.findall("ab{1,3}","abb abc abbcbbb") 结果'abb', 'ab', 'abb']
'|'     匹配|左或|右的字符,re.search("abc|ABC","ABCBabcCD").group() 结果'ABC'
'(...)' 分组匹配,re.search("(abc){2}a(123|456)c", "abcabca456c").group() 结果 abcabca456c
 
 
'\A'    只从字符开头匹配,re.search("\Aabc","alexabc") 是匹配不到的
'\Z'    匹配字符结尾,同$
'\d'    匹配数字0-9
'\D'    匹配非数字
'\w'    匹配[A-Za-z0-9]
'\W'    匹配非[A-Za-z0-9]
'\s'     匹配空白字符、\t、\n、\r , re.search("\s+","ab\tc1\n3").group() 结果 '\t'
 
'(?P<name>...)' 分组匹配 re.search("(?P<province>[0-9]{4})(?P<city>[0-9]{2})(?P<birthday>[0-9]{4})","371481199306143242").groupdict("city") 结果{'province': '3714', 'city': '81', 'birthday': '1993'} 
常用正则表达式符号

相关文章: