day16——自定义模块、time、datetime、random
day16
自定义模块
自定义一个模块
import :导入(拿工具箱)
# import test
# test.func()
导入发生的事情
- 在当前的名称空间中开辟一个新的空间
- 将模块中所有的代码执行
- 通过(模块名.)进行查找(函数)工具
# print(locals())
# import test
# print(locals())
# import test
# print(test.name)
# print(test.func())
#错误的示例:
# import test.py
# # print(test.py.func())
# import test #
# import test
# import test
# import test
# import test
# import test
# print(test.name)
import test as t:使用别名能够使文件名更短
# import test as t
# print(t.name)
low版
msg = """
1.扳手
2.螺丝刀
>>>
"""
# choose = input(msg)
# if choose == "1":
# import meet
# meet.func()
# elif choose == "2":
# import test
# test.func()
加强版
# choose = input(msg)
# if choose == "1":
# import meet as t
# elif choose == "2":
# import test as t
#
# t.func()
from 模块名 import 函数名或者变量名
# from test import func
# func()
import 和 from 的区别
import test as t:把test文件导入(可改别名)
缺点:占用内存比较大
优点:不会和当前文件定义的变量或者函数发生冲突
优点:
# import test
# name = "宝元"
# print(test.name)
# print(name)
from test import func as f:取一个函数(可改别名)
优点:占用内存比较小
缺点:会和当前文件定义的变量或者函数发生冲突
缺点:
# name = "宝元"
# from test import name
# print(name) 解决方法:
# name = "宝元"
# from test import name as n
# print(name)
# print(n)
from test import *(把所有方法放在本文件中,会出现覆盖的现象,不能解决)不介意使用
# name = "宝元"
# def func():
# print("is 马桶推送器")
# from test import *
# print(name)
# func()
all = ['可以被导入的函数名和变量名'] (配合*使用),在模块内使用可以限制传入的函数和变量
# from meet import *
# print(func)
# print(name)
模块的分类
- 内置模块(标准库)——python解释器自带的.py文件(模块)
- 第三方模块(各种大神写的)——需要额外下载(并发编程开始讲解pypy)
- 自定义模块(自己写的)——不需要额外下载
模块的两种用法
- 脚本:在cmd中执行python test.py
- 模块:不使用或者导入
分模块
分模块(一个模块可以被多个文件调用)的好处:
- 避免写重复代码
- 可以多次利用
- 拿来主义
模块导入的坑
不要让循环导入发生
模块中的测试和调用(main)
在当前模块中使用______name______就是''main''
当模块被导入的时候______name______就是被导入的模块名
模块里面是测试:__name__ == '__main__'
运行时会运行
#
# func()
导入的时候:__main__ == 模块名
运行不会运行
查找模块的方法
如果所找的文件不在本文件夹里:
导入路径
from day15 import meet
# import meet
# print(meet.name)
使用相对路径
from day15.ti import meet
# from day15.t1 import meet
# print(meet.name)
使用绝对路径
from sys import path
path.insert(0,"绝对路径")
# from sys import path
# path.insert(0,"D:\\")
# import meet
# print(meet.name)
查找模块顺序
内存加载 > 自定义 > 内置 > 第三方
time模块
time():时间戳(浮点数)
import time
# print(time.time()) # 时间戳 浮点数
# print(time.time() + 5000000000) # 时间戳 浮点数
sleep(2):睡眠(秒)
# time.sleep(3) # 睡眠 # 秒
time.strftime("%Y-%m-%d %H:%M:%S")) :给人看的时间(中间的符号不能用中文)
# print(time.strftime("%Y-%m-%d %H:%M:%S"))
gmtime():结构化时间(数据类型是命名元组时间)
# print(time.gmtime()) # 结构化时间 数据类型是是命名元组
# print(time.gmtime()[0])
# print(time.gmtime().tm_year)
将时间戳转换乘字符串时间
time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime(时间戳))
# print(time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime(1564028611.631374)))
将字符串时间转换成时间戳
time.mktime(time.strptime("2024-3-16 12:30:30","%Y-%m-%d %H:%M:%S")))
# print(time.mktime(time.strptime("2024-3-16 12:30:30","%Y-%m-%d %H:%M:%S")))
time重点:
time.time() :查看当前的时间戳
time.sleep() :睡眠
time.gmtime() / time.localtime() :都是将时间戳转成结构化
time.strftime("%Y-%m-%d %H:%M:%S","结构化时间") :变成字符串时间(给人看的)
time.strptime("字符串","%Y-%m-%d %H:%M:%S") :变成结构化时间
time.mktime(结构化时间) :变成时间戳
datetime模块
datetime——对象
print(type(datetime.now()))
# <class 'datetime.datetime'>
datetime.now():获取当前时间
# print(datetime.now()) # 获取当前时间
# print(datetime(2019,5,20,15,14,00) - datetime(2019,5,20,14,20,00))
将当前时间转化成时间戳
# t = datetime.now()
# print(t.timestamp())
将时间戳转化成当前时间
import time
print(datetime.fromtimestamp(time.time()))
print(datetime.fromtimestamp(1564044926.701301))
将字符串转成对象
print(datetime.strptime("2019-10-10 22:23:24","%Y-%m-%d %H:%M:%S"))
# 2019-10-10 22:23:24(对象)
将对象转成字符串
# print(str(datetime.now()))
# print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
# print(datetime.strftime(datetime.now(),"%Y-%m-%d %H:%M:%S"))
datetime加减
# print(datetime.now() + timedelta(hours=30 * 24 * 12))
# print(datetime.now() - timedelta(hours=30 * 24 * 12))
random模块
random——随机数
random()
print(random.random()) # 0 ~ 1里面的小数,不能是0和1
uniform()
print(random.uniform(1,10)) # 1 ~ 10里面的小数,不能是1和10
randint()
print(random.randint(1,50)) # 1 ~ 50(闭区间)
randrange()
print(random.randrange(1,5,2)) # randrange(起始,终止,步长)
choice()
print(random.choice([1,2,3,4,5])) # 选择一个元素
choices()
print(random.choices([1,2,3,4,5],k=2)) # 选择两个元素,会有重复
sample()
print(random.sample((1,2,3,4,5),k=2)) # 选择两个元素,不会有重复(除非只有两个)
shuffle():顺序打乱
# lst = [1,2,3,4,5,6,7,8,9,0]
# random.shuffle(lst) # 顺序打乱
# print(lst)
day16——自定义模块、time、datetime、random的更多相关文章
- 自定义模块,time,datetime以及random
自定义模块,time,datetime以及random 1.自定义模块 自定义一个模块 import #导入 (拿工具箱) 模块分类 1.内置模块(标准库) --python解释器自带的.py文件(模 ...
- Python常用模块(time, datetime, random, os, sys, hashlib)
time模块 在Python中,通常有这几种方式来表示时间: 时间戳(timestamp) : 通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量.我们运 ...
- Python常用模块time & datetime &random 模块
时间模块前言 在Python中,与时间处理有关的模块就包括:time,datetime 一.在Python中,通常有这几种方式来表示时间: 时间戳 格式化的时间字符串 元组(struct_time)共 ...
- python-Day5-深入正则表达式--冒泡排序-时间复杂度 --常用模块学习:自定义模块--random模块:随机验证码--time & datetime模块
正则表达式 语法: mport re #导入模块名 p = re.compile("^[0-9]") #生成要匹配的正则对象 , ^代表从开头匹配,[0 ...
- python27期day15:自定义模块、模块导入、模块的路径、模块的查找顺序、time、datetime、random、os、sys、作业题
1.模块的介绍: py文件就是一个模块 2.模块的分类:内置模块:python标准库 200 第三方模块 自定义模块 3.为什么学习模块? 开发效率高,内置函数和模块 减少重复代码,分文件管理,有助于 ...
- Python模块01/自定义模块/time模块/datetime模块/random模块
Python模块01/自定义模块/time模块/datetime模块/random模块 内容大纲 1.自定义模块 2.time模块 3.datetime模块 4.random模块 1.自定义模块 1. ...
- (常用)time,datetime,random,shutil(zipfile,tarfile),sys模块
a.time模块import time 时间分为三种形式1.时间戳 (时间秒数的表达形式, 从1970年开始)print(time.time())start_time=time.time()time. ...
- python笔记-1(import导入、time/datetime/random/os/sys模块)
python笔记-6(import导入.time/datetime/random/os/sys模块) 一.了解模块导入的基本知识 此部分此处不展开细说import导入,仅写几个点目前的认知即可.其 ...
- Day13 Python基础之time/datetime/random模块一(十一)
time模块 import time print(help(time)) time.time() #return current time in seconds since the Epoch as ...
随机推荐
- Vue的数据双向绑定原理——Object-defineProperty
一.定义 ①方法会直接在一个对象上定义一个新属性,或者修改一个已经存在的属性, 并返回这个对象. ②vue.js的双向数据绑定就是通过Object.defineProperty方法实现的,俗称属性拦截 ...
- 从Hello World 来讲解线程
从一个经典的例子开始:一个打印“Hello World.”的程序.一个非常简单的在单线程中运行的Hello World程序如下所示,当我们谈到多线程时,它可以作为一个基准. #include<i ...
- A1016 | 磨人的大模拟
这题写得头晕……明天我再评价 #include <stdio.h> #include <memory.h> #include <math.h> #include & ...
- 洛谷P1107 [BJWC2008]雷涛的小猫 题解
题面 以下是luogu给的标签 但字符串是什么鬼.... 玄学... 哦吼~ #include<cstdio> #include<iostream> using namespa ...
- 洛谷 P1991 无线通讯网 题解
P1991 无线通讯网 题目描述 国防部计划用无线网络连接若干个边防哨所.2 种不同的通讯技术用来搭建无线网络: 每个边防哨所都要配备无线电收发器:有一些哨所还可以增配卫星电话. 任意两个配备了一条卫 ...
- 【JZOJ5553】【20190625】谜
题目 给出一个\(2\times n\)个点的二分图的邻接矩阵\(M\) 以及\(m\)个行替换元,\(k\)个列替换元 \(q\)次询问:op u v 表示用第v个行/列替换元去替换矩阵的第u行/列 ...
- YAML语法基础(K8s基础)
对于YAML语言,网上有很多将YAML转换为JSON格式的在线转换器,以下内容都可直接验证,另外若有兴趣更深入学习YAML,可到其官方站点去学习,下面介绍的仅仅是比较常用的内容,并非YAML语法的全部 ...
- itop4412uboot中支持usbhub
hub采用3503a,3.3v regulator使用vbat供电,1.2的regulator使用1.8v供电,reset开始是拉高的,而3503的工作流程首先要reset,即引脚先拉低,再释放,造成 ...
- Review of Semantic Segmentation with Deep Learning
In this post, I review the literature on semantic segmentation. Most research on semantic segmentati ...
- sourceforge文件下载过慢
sourceforge文件下载过慢,可以用下面网址镜像下载, http://sourceforge.mirrorservice.org 按搜索到的项目的英文字母依次查询,如http://sourcef ...