python 16 模块
模块
1. 自定义模块
1.1 模块分类
模块的分类:
1.内置模块(标准库)——python解释器自带的.py文件(模块);
2.第三方模块-- 需要额外下载的 (pypi)
3.自定义模块(程序员写的) -- 不需要额外下载
查找顺序:3——1——2
分模块的好处:
1.避免写重复代码;
2.可以多次利用;
3.拿来主义
1.2 模块的导入
# 导入
import 模块名 # 模块名不可带后缀名
import 模块名 as 别名
# 使用别名可使文件名更短,也可给多个导入模块起一个名字,做兼容
导入发生的变化:
1.当前名称空间中开辟一个新的空间(名字为模块的名字)
2.将代码中所有的代码执行(加载进去)
3.通过模块名.进行查找模块内的函数等。
多次导入相同模块时,默认导入一次。
1.3 import 和 from
import test # 将整个test模块加载
优点:不会和当前文件定义的变量或者函数发生冲突
缺点:占用内存比较大
from test import func #将模块中的func函数加载
优点:占用内存比较小
缺点:会和当前文件定义的变量或者函数发生冲突 # 解决方法: 起别名
1.4 from 模块名 import *
from test import * # 将模块内代码全部加载,会出现覆盖的现象,不能解决
__all__ = ["可以被导入的函数名和变量名"] # 在定义模块中增加,配合"*"使用,放入列表中的,才可被调用
1.5 模块的用法:
# 坑:不可用环形导入,但可放函数内被调用
模块的两种用法:
1.脚本:(在cmd中执行: python 路径)
2.模块(不使用或者导入)
if __name__ == '__main__': # 测试接口(在当前文件)
在模块中使用__name__就是"__main__"(当前py文件)
当模块被导入时__name__就是被导入模块的名字
1.6 导入路径
相对路径:
from day15.t1 import test
绝对路径:
from sys import path # 得到一个模块框架的列表
path.insert(0,"路径") # 将自定义模块加入列表,可以import
2. time 模块
可用于日志记录登陆时间、计算时间。
2.1 时间戳
import time # 导入
print(time.time())
# 时间戳 格林尼治时间是从1970年1月1日00:00:00开始按秒计算的偏移量 返回的是浮点数可运算
time.sleep(3) # 睡眠 秒
2.2 格式化字符串时间(Format String)
#python中时间日期格式化符号:
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身
2.3 时间之间的转换
print(time.strftime("%Y-%m-%d %H:%M:%S"))
# 2019-07-25 15:47:36 当前时间的字符串
print(time.gmtime()) # 结构化时间
# time.struct_time(tm_year=2019, tm_mon=7, tm_mday=25, tm_hour=7, tm_min=52, tm_sec=48, tm_wday=3, tm_yday=206, tm_isdst=0) # 当前UTC(伦敦)时间 命名元组,可索引
print(time.gmtime()[0]) # 2019
print(time.gmtime(1564042674.8529472))
# time.struct_time(tm_year=2019, tm_mon=7, tm_mday=25, tm_hour=8, tm_min=17, tm_sec=54, tm_wday=3, tm_yday=206, tm_isdst=0)
print(time.localtime()) #当前北京时间
# time.struct_time(tm_year=2019, tm_mon=7, tm_mday=25, tm_hour=16, tm_min=14, tm_sec=16, tm_wday=3, tm_yday=206, tm_isdst=0)
print(time.strptime("2019-07-25 16:17:54","%Y-%m-%d %H:%M:%S"))
# 将字符串时间进行结构化
# time.struct_time(tm_year=2019, tm_mon=7, tm_mday=25, tm_hour=16, tm_min=17, tm_sec=54, tm_wday=3, tm_yday=206, tm_isdst=-1)
# 将时间戳转换成字符串时间 (先将时间戳 结构化,再格式化,可以给用户看)
print(time.strftime("%Y-%m-%d %H:%M:%S",
time.gmtime(1564042674)))
# 2019-07-25 08:17:54 (UTC时间)
print(time.strftime("%Y-%m-%d %H:%M:%S",
time.localtime(1564042674)))
# 2019-07-25 16:17:54 (北京时间)
# 将字符串时间转换成时间戳 (先将字符串时间结构化,再转换成时间戳)
print(time.mktime(time.strptime("2019-07-25 16:17:54","%Y-%m-%d %H:%M:%S"))) # 时间戳 1564042674
总结:
# 1. 结构化时间-->字符串时间
# time.strftime("格式定义","结构化时间") 结构化时间参数不传,则显示当前时
# 2.字符串时间-->结构化时间
# time.strptime(时间字符串,字符串对应格式)
# 3.时间戳-->结构化时间
# time.gmtime(时间戳)/time.localtime(时间戳)
# 4.结构化时间-->时间戳
# time.mktime(结构化时间)
# 5.转换
# time.mktime(time.strptime()) # 字符串时间-->时间戳
# time.strftime("格式",time.localtime(时间戳)) #时间戳-->字符串时间
小结:时间戳是计算机能够识别的时间;时间字符串是人能够看懂的时间;元组则是用来操作时间的
3. datetime 模块
3.1 datetime 的操作
from datetime import datetime,timedelta
# datetime -- 对象
print(datetime.now()) # 获取当前时间
print(datetime(2019,5,20,13,14,00)) # 格式化 2019-05-20 13:14:00
print(datetime(2019,5,20,13,14,00)-datetime(2019,5,20,11,14,00))
# 格式化时间后相减 2:00:00
print(datetime.now().timestamp()) #将当前时间转化成时间戳
import time
print(datetime.fromtimestamp(150000000)) #将时间戳转化成当前时间
print(datetime.strptime("2019-10-10 22:23:24","%Y-%m-%d %H:%M:%S")) # 将字符串转成对象
print(datetime.now().strftime("%Y-%m-%d %H:%M:%S")) # 将对象转成字符串
3.2 datetime的加减 (timedelta类)
print(datetime.now() + timedelta(hours=12)) # 当前时间加2小时
print(datetime.now() + timedelta(days=2)) # 当前时间加2天
4. random 模块
random模块是一个随机模块,生活中经常遇到随机的场景,彩票,抓阄,打牌,等等,以后你的代码中如果遇到需要随机的需求:随机验证码,发红包等等,那么首先要想到的是random模块。
import random
print(random.random()) # (0 ~ 1) 浮点数
print(random.uniform(1,10)) # (1 ~ 10)
print(random.randint(1,50)) # [1 ~ 50] 整数
print(random.randrange(1,5,2)) # randrange(起始,终止,步长) 奇偶
print(random.choice([1,2,3,4,5,])) # 选择一个元素
print(random.choices([1,2,3,4,5,],k=2)) # 选择两个元素,会有重复
print(random.sample((1,2,3,4,5),k=2)) # 选择两个元素,不会有重复
lst = [1,2,3,4,5,6,7,8,9,0]
random.shuffle(lst) # 顺序打乱
print(lst)
python 16 模块的更多相关文章
- python基础-模块
一.模块介绍 ...
- Python::OS 模块 -- 进程管理
os模块的简介参看 Python::OS 模块 -- 简介 os模块的文件相关操作参看 Python::OS 模块 -- 文件和目录操作 os模块的进程参数 Python::OS 模块 -- 进程参数 ...
- python日志模块logging
python日志模块logging 1. 基础用法 python提供了一个标准的日志接口,就是logging模块.日志级别有DEBUG.INFO.WARNING.ERROR.CRITICAL五种( ...
- Python random模块 例子
最近用到随机数,就查询资料总结了一下Python random模块(获取随机数)常用方法和使用例子. 1.random.random random.random()用于生成一个0到1的随机符点数: ...
- python time模块详解
python time模块详解 转自:http://blog.csdn.net/kiki113/article/details/4033017 python 的内嵌time模板翻译及说明 一.简介 ...
- Day05 - Python 常用模块
1. 模块简介 模块就是一个保存了 Python 代码的文件.模块能定义函数,类和变量.模块里也能包含可执行的代码. 模块也是 Python 对象,具有随机的名字属性用来绑定或引用. 下例是个简单的模 ...
- python logging模块使用
近来再弄一个小项目,已经到收尾阶段了.希望加入写log机制来增加程序出错后的判断分析.尝试使用了python logging模块. #-*- coding:utf-8 -*- import loggi ...
- python 各模块
01 关于本书 02 代码约定 03 关于例子 04 如何联系我们 1 核心模块 11 介绍 111 内建函数和异常 112 操作系统接口模块 113 类型支持模块 114 正则表达式 115 语言支 ...
- python random模块 - 小驹的专栏 - 博客频道 - CSDN.NET
python random模块 - 小驹的专栏 - 博客频道 - CSDN.NET python random模块 分类: python 2011-11-15 15:31 6037人阅读 评论(2) ...
随机推荐
- C#编程之JSON序列化与反序列化
1.在C#管理NuGet程序包中添加Json.NET 2.C#将对象序列化成JSON字符串 模型类1 /// <summary> /// JSON字符串模型.是否出错 /// </s ...
- asn1学习笔记 约束
继续看asn1语法详解,今天主要看了约束部分,包含 1.单值约束,包含枚举类型 enumerated . 如: Two ::= INTEGER(2) Day ::= ENUMERATED { mond ...
- solr集群
一.所需环境 1.linux系统(内存分大点) 2.JDK 3.zookeeper 4.solr 二.安装zookeeper 1.此次安装3个zookeeper 2.tar -zxf zookeepe ...
- javaweb入门---web服务器与HTTP协议基础
上文web基础简介了web到底是什么,以及身为Java开发人员需要掌握的地方.本文将解答web服务器是什么,怎么使用?还有关于http协议的基础知识. web服务器 web服务器的大概念很广泛,但是通 ...
- Linux系统管理----目录与文件管理作业习题
chapter02 - 03 作业 1. 分别用cat \tac\nl三个命令查看文件/etc/ssh/sshd_config文件中的内容,并用自己的话总计出这三个文档操作命令的不同之处? cat ...
- 【Git】Found a swap file by the name ".git/.MERGE_MSG.swp"
最近合并分支的时候总是遇到这个问题,导致合并之后还需要再提交一次--有点烦-- 解决方案: 在项目根目录(如/StudioProjects/demo/Leave)下,找到 .git/.MERGE_MS ...
- 【iOS】CocoaPods 使用问题
这两天使用 CocoaPods 安装时遇到了这个问题,之前从没遇到过需要用户名和密码的情况.刚开始都是强退了重新在终端进入,后来不行…… [!] /usr/local/bin/git clone ht ...
- 基于 Autojs 的 APP、小程序自动化测试 SDK
原文:https://blog.csdn.net/laobingm/article/details/98317394 autojs sdk基于 Autojs 的 APP.小程序自动化测试 SDK,支持 ...
- python redis连接 有序集合去重
# -*- coding: utf-8 -*- import redisfrom constant import redis_ip, redis_db, redis_pw, logger, redis ...
- springMVC(一) --前端控制器(DispatcherServlet)的作用
SpringMVC是Spring中的模块,它实现了mvc设计模式的web框架,首先用户发出请求,请求到达SpringMVC的前端控制器(DispatcherServlet),前端控制器根据用户 ...