Python学习—基础篇之常用模块
常用模块
模块,用一砣代码实现了某个功能的代码集合。
类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合。而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.py文件中),n个 .py 文件组成的代码集合就称为模块。
python常用模块主要有:
1. time模块
2. random模块
3. hashlib模块
4. os模块
5. sys模块
6. logging模块
7. 序列化模块
8. configparser模块
9. re模块
10. shutul模块
11. subprocess模块
12. xml模块
13. paramiko模块
引入模块的方式
import module
import module.xxx as name
from module import xxx,xxx
from module import *
对于第二种的引入方式,将导入的模块或者模块方法重命名,个人觉得好处主要有以下两点:
1.对于模块名过于冗长的模块,可以方便使用;
2.对于某些功能可能涉及到修改模块的源码,这样的导入方式可以避免影响到原来的模块(类似于为每个项目建一个自己的虚拟环境)。
time模块
1.表示时间的三种方式:
(1)时间戳(timestamp) :通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。
(2)格式化的时间字符串(Format String): ‘1988-03-16’
(3)元组(struct_time) :struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天等)
时间戳是计算机能够识别的时间;时间字符串是人能够看懂的时间;元组则是用来操作时间的
# <1> 时间戳 import time
time.time() #--------------返回当前时间的时间戳:1493136727.099066 # <2> 时间字符串 time.strftime("%Y-%m-%d %X") # -----------'2017-04-26 00:32:18' # <3> 时间元组 time.localtime()
time.struct_time(tm_year=2017, tm_mon=4, tm_mday=26,
tm_hour=0, tm_min=32, tm_sec=42, tm_wday=2,
tm_yday=116, tm_isdst=0)
2.几种时间形式的转换

#一 时间戳<---->结构化时间: localtime/gmtime mktime time.localtime(3600*24)
time.gmtime(3600*24) time.mktime(time.localtime()) #字符串时间<---->结构化时间: strftime/strptime time.strftime("%Y-%m-%d %X", time.localtime())
time.strptime("2017-03-16","%Y-%m-%d")

time.asctime(time.localtime(312343423)) time.ctime(312343423)
3.time & datetime常用操作
#_*_coding:utf-8_*_
__author__ = 'Alex Li' import time # print(time.clock()) #返回处理器时间,3.3开始已废弃 , 改成了time.process_time()测量处理器运算时间,不包括sleep时间,不稳定,mac上测不出来
# print(time.altzone) #返回与utc时间的时间差,以秒计算\
# print(time.asctime()) #返回时间格式"Fri Aug 19 11:14:16 2016",
# print(time.localtime()) #返回本地时间 的struct time对象格式
# print(time.gmtime(time.time()-800000)) #返回utc时间的struc时间对象格式 # print(time.asctime(time.localtime())) #返回时间格式"Fri Aug 19 11:14:16 2016",
#print(time.ctime()) #返回Fri Aug 19 12:38:29 2016 格式, 同上 # 日期字符串 转成 时间戳
# string_2_struct = time.strptime("2016/05/22","%Y/%m/%d") #将 日期字符串 转成 struct时间对象格式
# print(string_2_struct)
# #
# struct_2_stamp = time.mktime(string_2_struct) #将struct时间对象转成时间戳
# print(struct_2_stamp) #将时间戳转为字符串格式
# print(time.gmtime(time.time()-86640)) #将utc时间戳转换成struct_time格式
# print(time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime()) ) #将utc struct_time格式转成指定的字符串格式 #时间加减
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)) #时间替换
random模块
import random
random.random() # 大于0且小于1之间的小数 0.7664338663654585 random.randint(1,5) # 大于等于1且小于等于5之间的整数 random.randrange(1,3) # 大于等于1且小于3之间的整数 random.choice([1,'',[4,5]]) # #1或者23或者[4,5] random.sample([1,'',[4,5]],2) # #列表元素任意2个组合 [[4, 5], '23'] random.uniform(1,3) #大于1小于3的小数 1.6270147180533838 item=[1,3,5,7,9]
random.shuffle(item) # 打乱次序 item[5, 1, 3, 7, 9]
random.shuffle(item) # item [5, 9, 7, 1, 3]
# 随机生成验证码
import random
def v_code():
code = ''
for i in range(5):
num=random.randint(0,9)
alf=chr(random.randint(65,90))
add=random.choice([num,alf])
code="".join([code,str(add)])
return code
print(v_code())
随机生成验证码
hashlib模块
哈希算法(散列算法):通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示),常常用于对密码进行加密。hashlib模块主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 等加密算法。
import hashlib # ######## md5 ########
hash = hashlib.md5()
# help(hash.update)
hash.update(bytes('admin', encoding='utf-8'))
print(hash.hexdigest()) #16进制格式hash
print(hash.digest()) #2进制格式hash ######## sha1 ######## hash = hashlib.sha1()
hash.update(bytes('admin', encoding='utf-8'))
print(hash.hexdigest()) # ######## sha256 ######## hash = hashlib.sha256()
hash.update(bytes('admin', encoding='utf-8'))
print(hash.hexdigest()) # ######## sha384 ######## hash = hashlib.sha384()
hash.update(bytes('admin', encoding='utf-8'))
print(hash.hexdigest()) # ######## sha512 ######## hash = hashlib.sha512()
hash.update(bytes('admin', encoding='utf-8'))
print(hash.hexdigest())
以上加密算法虽然依然非常厉害,但时候存在缺陷,即:通过撞库可以反解。所以,有必要对加密算法中添加自定义key再来做加密。
import hashlib
# ######## md5 ########
hash = hashlib.md5(bytes('898oaFs09f',encoding="utf-8"))
hash.update(bytes('admin',encoding="utf-8"))
print(hash.hexdigest())
python内置还有一个 hmac 模块,它内部对我们创建 key 和 内容 进行进一步的处理然后再加密
import hmac
h = hmac.new(bytes('898oaFs09f',encoding="utf-8"))
h.update(bytes('admin',encoding="utf-8"))
print(h.hexdigest())
To be continue....
Python学习—基础篇之常用模块的更多相关文章
- Python学习之路13☞常用模块
一 time模块 在Python中,通常有这几种方式来表示时间: 时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量.我们运行“type(t ...
- Python学习(十) —— 常用模块
一.collections模块 在内置数据类型(dict.list.set.tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter.deque.defaultdic ...
- Python学习-第四节:常用模块-logging,re,time
1:logging模块 import logging logging.debug('This is debug message') logging.info('This is info message ...
- Python学习——基础篇
1.python的安装 python下载地址:https://www.python.org/downloads/ 安装完成后,运行cmd.exe,输入python 如果出现“p ...
- Python ( 学习 基础篇第一部 )
目录 注释 注释的分类 注释的注意点 变量 变量的概念 变量的声明 变量的命名 变量的交换 变量的缓存机制 常量 进制 进制的转换 原码 反码 补码 六大数据类型 Number 的四大类 字符串 st ...
- Python学习—基础篇之基本数据类型(一)
数据类型 在python中,能够直接处理的基本数据类型主要有数字类型.字符串类型.字节类型.布尔类型.列表.元组.字典.集合等. 一.数字类型 1.1 数字类型的创建 # 数字类型 a = 10 b ...
- Python学习—基础篇之文件操作
文件操作 文件操作也是编程中需要熟练掌握的技能,尤其是在后台接口编写和数据分析过程中,对各种类型的文件进行操作,获取文件信息或者对信息进行存储是十分重要的.本篇博客中将主要对常见的文本格式文件和Exc ...
- Python ( 学习基础篇 第二部 )
目录 运算符 算数运算符 比较运算符 赋值运算符 位运算符 逻辑运算符 成员运算符 身份运算符 Python 中运算符的优先级 运算符总结基础语法 判断类型 isinstence 代码块 流程控制 w ...
- Python学习—基础篇之基本数据类型(二)
Python中重要的数据结构 1.列表 2.元组 3.字典 4.集合 列表 1.创建列表 # 方式一 name = [] print(type(name)) # 执行结果 >>> & ...
随机推荐
- python基本语法汇总
From: https://www.cnblogs.com/yunguoxiaoqiao/p/7640040.html 1.常用列表的操作 D = {} D = {'spam': 2, 'tol': ...
- SXWIN7X64EN_20181104_NET_msu_LITE英文精简版
SXWIN7X64EN_20181104_NET_msu_LITE英文精简版该版本为英文精简版!该版本为英文精简版!该版本为英文精简版!一.前言:关于极限精简版的说明 本系统为极限精简版,极限精简版系 ...
- 理解OpenShift(6):集中式日志处理
理解OpenShift(1):网络之 Router 和 Route 理解OpenShift(2):网络之 DNS(域名服务) 理解OpenShift(3):网络之 SDN 理解OpenShift(4) ...
- SketchUp 建模练习(一)从图像建模运货木板 Pallet
软件环境 SketchUp Pro 2017 GIMP 2.10.6 参考书籍 Google SketchUp for Game Design 作者:Robin de Jongh 运货木板效果图 制作 ...
- socket通信中select函数的使用和解释
select函数的作用: select()在SOCKET编程中还是比较重要的,可是对于初学SOCKET的人来说都不太爱用select()写程序,他们只是习惯写诸如 conncet().accept() ...
- EXT 获取gird各值
var cellclick = function (item, td, cellIndex, record, tr, rowIndex, e) { //[ListenerArgument(0, &qu ...
- 架构师技能图谱 V1.2
系统架构能力 基本理论 扩展性设计 可用性设计 可靠性设计 一致性设计 负载均衡设计 过载保护设计 灾难恢复和备份 协议设计 二进制协议 文本协议 接入层架构设计 DNS 轮询 动静态分离 静态化 反 ...
- VB VB 定义及区别
VB是Visual Basic的简称,是由美国微软公司于1991年开发的一种可视化的.面向对象和采用事件驱动方式的结构化高级程序设计语言,可用于开发 Windows 环境下的各类应用程序.VC是Vis ...
- JavaWeb——关于RequestDispatcher的原理
RequestDispatcher简介 RequestDispatcher 代表请求的派发者.它有2个动作:forward 和 include .客户端对于任何一个请求,可以根据业务逻辑需要,选择不同 ...
- Mac 端配置 Lua 环境
一.设计目的 Lua 是一种轻量级的脚本语言,其目的是为了嵌入到程序中,从而为程序提供灵活的扩展和定制功能. 二.特性 轻量级:编译后仅仅 100 余K,可以很方便的嵌入到程序中. 可扩展:Lua 提 ...