模块3

一、time模块

  1. 时间戳(time)

    定义:时间戳表示从1970年1月1日00:00:00开始按秒计算的偏移量

time_stamp = time.time()
print(time_stamp, type(time_stamp))
        
输出:
1569652399.4683974 <class 'float'>

 

  1. 格式化时间(strftime)

    定义:普通的字符串格式的时间

format_time = time.strftime("%Y-%m-%d %X")
print(format_time, type(format_time))
        
输出:
2019-09-28 14:35:51 <class 'str'>

 

  1. 结构化时间(localtime)

    定义:元组共有9个元素共九个元素,分别为(年,月,日,时,分,秒,一年中第几周,一年中第几天,夏令时)

print(time.localtime())

输出:
time.struct_time(tm_year=2019, tm_mon=9, tm_mday=28, tm_hour=14, tm_min=40, tm_sec=12, tm_wday=5, tm_yday=271, tm_isdst=0)

 

 

二、datetime模块

  1. 返回当前时间(datetime.now)

print(datetime.datetime.now())

输出
2019-09-28 14:44:15.995998

 

  1. 进行时间加减(timedelta)

print(datetime.datetime.now() + datetime.timedelta(3))
    
输出
2019-10-01 19:19:50.101597

 

三、random模块

  1. 大于0且小于1的随机小数(random)

print(random.random())
    
输出
0.42866657593385415

 

  1. 大于等于1且小于等于3之间的随机整数(randint) 

print(random.randint(1, 3))
    
输出
3

 

  1. 大于等于1且小于3之间的整数(randrange) 

print(random.randrange(1, 3))
    
输出
2

 

  1. 列表内的任意一个元素(choice)

print(random.choice([1, '23', [4, 5]]))
    
输出
[4, 5]

 

  1. 打乱列表的顺序(shuffle) 

lis = [1, 3, 5, 7, 9]
random.shuffle(lis)
print(lis)

输出
[9, 1, 5, 7, 3]

 

  1. 列表元素任意n个元素的组合(sample) 

l = [1, 2, 3, 4, 6, 12]
print(random.sample(l,3))
    
输出
[2, 1, 3]

 

  1. 大于1小于3的小数(uniform)

print(random.uniform(1, 3))
    
输出
2.4500257036462445

 

四、hashlib和hmac模块

  1. hashlib模块的特点

    • 传入的内容一样,得到的hash值一样,可用于非明文密码传输时密码校验。

    • 不能由hash值反解成内容,即可以保证非明文密码的安全性。

    • 只要使用的hash算法不变,无论校验的内容有多大,得到的hash值长度是固定的,可以用于对文本的哈希处理。

  2. hash模块加密

import hashlib
    
m = '123'
cipher = hashlib.md5()
cipher.update(m.encode('utf-8'))
print(cipher.hexdigest())
    
输出
202cb962ac59075b964b07152d234b70

 

  1. hmac模块特点

    • hmac.new括号内指定的初始key一样

    • 无论update多少次,校验的内容累加到一起是一样的内容

 

  4. hmac模块加密

 

import hmac
    
m = '123'
cipher = hmac.new('jiami'.encode('utf-8'))
cipher.update(m.encode('utf-8'))
print(cipher.hexdigest())
    
输出
997d94bd89501257b0bbebf651c806b4

 

五、typing模块

  1. typing模块的作用

    • 类型检查,防止运行时出现参数和返回值类型不符合

    • 作为开发文档附加说明,方便使用者调用时传入和返回参数类型

    • 该模块加入后不影响程序的运行,不会报正式的错误,只有提醒。

  2. typing模块的使用

 

from typing import List, Tuple, Dict
    
    
def add(a: int, string: str, f: float,b: bool) -> Tuple[List, Tuple, Dict, bool]:
    list1 = list(range(a))
    tup = (string, string, string)
    d = {"a": f}
    bl = b
    return list1, tup, d, bl
    
    
print(add(5, "hhhh", 2.3, False))
    
输出
([0, 1, 2, 3, 4], ('hhhh', 'hhhh', 'hhhh'), {'a': 2.3}, False)

 

 

六、re模块

  1. 正则表达式

    • 字符

元字符 匹配内容
. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线
\s 匹配任意的空白符
\d 匹配数字
\W 匹配非字母或数字或下划线
\S 匹配非空白符
\D 匹配非数字
\n 匹配一个换行符
\t 匹配一个制表符
^ 匹配字符串的开始
$ 匹配字符串的结尾
a|b 匹配字符a或字符b
() 匹配括号内的表达式,也表示一个组
[…] 匹配字符组中的字符
匹配除了字符组中字符的所有字符
    • 量词
量词 用法说明
* 重复零次或更多次
+ 重复一次或更多次
重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n次到m次

 

 

  2. 贪婪匹配与非贪婪匹配

 

    • 贪婪匹配:在满足匹配时,匹配尽可能长的字符串,默认情况下,采用贪婪匹配。

    • 加上?为贪婪匹配模式转为非贪婪匹配模式,会匹配尽量短的字符串。

 

  3. re模块下的常用方法

 

    • findall:返回所有满足匹配条件的结果,放在列表里

res = re.findall('a', 'eva egon yuan')
print(res)
        
输出
['a','a']

 

    • search:找到第一个匹配,然后返回一个包含匹配信息的对象

ret = re.search('a', 'eva egon yuan').group()
print(ret)
        
输出
a

 

    • match:在对象开始处匹配,返回包含匹配信息的对象

ret = re.match('a', 'abc').group()print(ret)
        
结果 :
a

 

    • split:先按‘a’分割得到‘ ’和‘bcd’,再对‘ ’和‘bcd’分别按照‘b’分割

ret = re.split('[ab]', 'abcd') 
print(ret)

输出
['', '', 'cd']

 

    • sub:将数字替换成‘ ’,参数3表示替换3个

ret = re.sub('\d', ' ', 'yuan1hua2huo3', 3)
print(ret)
        
输出
yuan hua huo

 

 

你可能感兴趣的:(模块3)