模块
模块的四种形式
- 自定义模块
- 第三方模块: 已被编译为共享库的C或C++扩展
- 内置模块: 使用C编写并链接到python解释器的内置模块
- 包:把一系列模块组织到一起的文件夹
import 和 from...import
import 首次导入模块发生了3件事:
- 以模块为准创造了一个模块的名称空间
- 执行模块对应的文件,执行过程中产生的名字都放到模块的名称空间
- 当前执行文件拿到一个模块名
需要注意的是,重复导入之前的模块,不会重复执行文件内容
模块搜索路径的顺序
- 先从内存中已经导入的模块中寻找
- 内置的模块
- 环境变量sys.path中找
常用内置模块
time
# 时间戳
time_stamp = time.time()
# 格式化时间
time.strftime("%Y-%m-%d %X")
# 结构化时间
time.localtime()
time.gmtime()
# 结构化时间与时间戳的转换
time.mktime(struc_time) # 结构化时间 --> 时间戳
# 时间戳转化为结构化时间
time.localtime()
time.gmtime()
# 格式化时间转换为结构化时间
time.strptime("2016-06-06 16:28:56", "%Y-%m-%d %X")
# 结构化时间转换为结构化时间
time.strftime()
os
os.getcwd()
os.chdir()
os.pardir()
os.listdir()
os.system("cmd command")
os.path.split()
os.path.exists()
os.path.join()
datetime
datetime.datetime.now()
datetime.datetime.now() + datetime.timedelta(days=3)
c_time = datetime.datetime.now()
c_time.replace(years=1)
### sys
``` python
sys.argv
sys.modules
sys.path
json和pickle
json.dump # 序列化
json.load # 反序列化
# picke支持python所有类型的序列化和反序列化
logging
logging.debug
logging.info
logging.warning
logging.basicConfig(filename, format, datefmt, level)
# logger对象
logger = logging.getLogger(__file__)
# Handler对象
h1 = logging.FileHandler("t1.log")
h2 = logging.StreamHandler()
# Formatter 对象
fmt1 = logging.Formatter("..")
fmt2 = logging.Formatter("..")
# 为handler对象绑定格式
h1.setFormatter(fmt1)
h2.setFormatter(fmt2)
# 将Handler添加给logger
logger.addHandler(h1)
logger.addHandler(h2)
random
random.random() # 大于0小于1之间的小数
random.randint(1,9) # 大于等于1小于等于9的整数
random.uniform(1,9) # 大于1小于9的数
random.choice()
random.sample(lst, n) # 列表内任意n个元素的组合
random.shuffle()
hashlib
m = hashlib.md5()
m.update("hello".encode("utf8"))
m.hexdigest()
hmac.new
h = hmac.new(b"key")
h.update(b"hello")
h.hexdigest()
re
. # 匹配任意字符,除
# 转义符
d # 数字
w # 单词字符
# 数量词
* # 0或无限
+ # 一次或无限
?# 0次或1次
{m} # m 次
*?# 变成非贪婪模式
# 边界匹配
^ # 字符串开头
$ # 字符串末尾
# 逻辑,分组
| # 表示左右任意一个匹配
[^] # 取反
# 常用函数
re.findall("pattern", "str")
re.search
re.match
# 修饰符
re.S # 使.匹配
在内所有字符
re.I # 不区分大小写
re.sub("abcabc", " ")
# 分组
re.findall("a(w+)a", string) # 只将a之间的字符返回
re.split("parttern", string)
numpy
np.array # 创建数组
arr.shape # 获取数组行列数
arr[:1, :] # 切割数组
np.hstack # 合并数组应该具有相同的行数
np.vstack # 合并数组应该具有相同的列数
np.zeros, ones, eye, empty # 构造数组