模块

模块

模块的四种形式

  • 自定义模块
  • 第三方模块: 已被编译为共享库的C或C++扩展
  • 内置模块: 使用C编写并链接到python解释器的内置模块
  • 包:把一系列模块组织到一起的文件夹

import 和 from...import

import 首次导入模块发生了3件事:

  1. 以模块为准创造了一个模块的名称空间
  2. 执行模块对应的文件,执行过程中产生的名字都放到模块的名称空间
  3. 当前执行文件拿到一个模块名

需要注意的是,重复导入之前的模块,不会重复执行文件内容

模块搜索路径的顺序

  1. 先从内存中已经导入的模块中寻找
  2. 内置的模块
  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

. # 匹配任意字符,除\n
\ # 转义符
\d # 数字
\w # 单词字符

# 数量词
* # 0或无限
+ # 一次或无限 
?# 0次或1次
{m} # m 次
 *?# 变成非贪婪模式

# 边界匹配
^ # 字符串开头
$ # 字符串末尾

# 逻辑,分组
| # 表示左右任意一个匹配


[^] # 取反


# 常用函数
re.findall("pattern", "str")
re.search
re.match

# 修饰符
re.S # 使.匹配\n在内所有字符
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 # 构造数组

posted @ 2019-09-27 00:36  YajunRan  阅读(132)  评论(0编辑  收藏  举报