自定义模块,time,datetime以及random

1.自定义模块

自定义一个模块
import #导入 (拿工具箱) 模块分类
1.内置模块(标准库) --python解释器自带的.py文件(模块)
2.第三方模块(大神写的) --需要额外下载的(www.pypi.org)
3.自定义模块(自己写的) --不需要额外下载 分模块的好处:
1.避免写重复代码
2.可以多次利用
3.拿来主义(拿来就用) 导入发生的事情:
1.在当前的名称空间开辟一个新的空间
2.将模块中所有的代码执行
3.通过模块名,进行查找函数(工具) 例:
test.py:
print("这是一个test") def func():
print("is func")
return "hello"
def foo():
print("is foo")
name = "bye" 导入test.py
import test
print(test.name)
print(test.func()) import test as t #起别名
print(t.name) 起别名:
1.可以将很长的模块名改成很短,方便使用
2.有利于代码的拓展和优化 test.py meet.py
def func(): def func():
print("扳手") print("螺丝刀") msg= '''1.扳手 2.螺丝刀 >>>''' 提高兼容性:
choose = input(msg)
if choose == "1":
import test as t:
if choose == "2":
import meet as t:
t.func() from test import func
func() import 和 from...import的区别
1.import
缺点:占用内存较大
优点:不会和当前文件定义的变量或者函数发生冲突
#import test
name = "宝元"
print(test.name)
print(name) 2.from..import
缺点:会和当前文件定义的变量或者函数发生冲突
name = "宝元"
from test import name
print(name) #会覆盖本文件中定义的变量 解决办法:
name = "宝元"
from test import name as n
print(name)
print(n)
优点:占用内存比较小 from test import * #导入整个模块,会出现覆盖的现象,不能解决
#飘红不一定是报错
#可以在被导入的模块中顶部加入 __all__ = ["可以被导入的函数名和变量名"] 模块导入时的坑:被导入模块中导入模块,最后形成死环 模块的两种用法:
1.脚本(在cmd中执行 python test.py)
2.模块(不使用或者导入) from test import *
if __name__ == '__main__': #测试接口
func() 在当前模块中使用__name__就是'__main__',if下面的代码会执行
当模块被导入的时候__name__就是被导入的模块名,if下面的代码不会执行 导入路径:
1.使用相对路径:
from day15.t1(文件路径名) import meet
print(meet.name) 2.使用绝对路径:
from sys import path
path.insert(0,"D:\\")
import meet
print(meet.name)
导入路径优先级:自定义>内置>第三方

2.time

time --时间模块
时间戳是计算机能够识别的时间;时间字符串是人能够看懂的时间;元组则是用来操作时间的 1.时间戳
import time
print(time.time()) #时间戳 浮点数
print(time.time() + 500000) #时间戳加法 浮点数
time.sleep(3) #睡眠 秒 #时间戳表示的是格林尼治时间是从1970年1月1日00:00:00开始按秒计算的偏移量 2.格式化字符串时间
import time
print(time.strftime("%Y-%m-%d %H:%M:%S"))
#2019-07-25 16:22:43
3.结构化时间
结构化时间:元组(struct_time) struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天等)
import time
print(time.gmtime()) / time.localtime()
#time.struct_time(tm_year=2019, tm_mon=7, tm_mday=25, tm_hour=8, tm_min=25, tm_sec=5, tm_wday=3, tm_yday=206, tm_isdst=0)
print(time.gmtime()[0]) #2019
print(time.gmtime().tm_year) #2019
将时间戳转换成字符串时间
print(time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime(1564043412.2928293)))
#2019-07-25 08:30:12 将字符串串时间转换成时间戳
print(time.mktime(time.strptime("2019-7-25 08:30:12","%Y-%m-%d %H:%M:%S")))
#1564014612.0

3.datetime

from datetime import datetime,timedelta

datetime  --类型:对象(<class 'datetime.datetime'>)

#获取当前时间
print(datetime.now())
#2019-07-25 16:36:57.212376 #时间相减
print(datetime(2020,5,20,13,14,00) - datetime(2019,5,20,13,14,00))
#366 days, 0:00:00 #将当前时间转化成时间戳
t = datetime.now()
print(t.timestamp()) #1564044145.39519 #将时间戳转化成当前时间
import time
print(datetime.fromtimestamp(1564044145.39519))
#2019-07-25 16:42:25.395190 #将字符串转成对象
print(datetime.strptime("2019-07-25 16:42:25","%Y-%m-%d %H:%M:%S"))
#2019-07-25 16:42:25 #将对象转换成字符串
1.print(str(datetime.now()))
#2019-07-25 16:47:01.294579
2.print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
#2019-07-25 16:47:01 #datetime加减
print(datetime.now() + timedelta(hours = 30 * 24 * 12))
#2020-07-19 16:49:06.174903
print(datetime.now() - timedelta(hours = 30 * 24 * 12))
#2018-07-30 16:49:33.403164
print(datetime.now() + timedelta(days = 1))
#2019-07-26 16:51:39.331657
print(datetime.now() - timedelta(days = 1))
#2019-07-24 16:52:26.509917

4.random

import random
随机小数
print(random.random()) #大于0且小于1的小数
print(random.uniform(1,3)) #大于1且小于3的小数 随机整数
print(random.randint(1,5)) #大于等于1且小于等于5之间的整数
print(random.randrange(1,10,2)) # 大于等于1且小于10之间的奇数
#randrange(起始,终止,步长)
随机选择一个返回
print(random.choice([1,'23',[4,5]]))
随机选择多个返回,会有重复
print(random.choices([1,2,3,4,5,],k=2)) 随机选择多个返回,不会出现重复,除非元素重复
print(random.sample([1,'23',[4,5]],k = 2)) 打乱列表顺序
lst = [1,2,3,4,5,6,7,8,9]
random.shuffle(lst)
print(lst)
# [9, 8, 5, 3, 4, 1, 6, 7, 2]

5.其他

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 当前时区的名称
%% %号本身

自定义模块,time,datetime以及random的更多相关文章

  1. Python学习第二阶段Day2,模块time/datetime、random、os、sys、shutil

    1.Time.  Datetime(常用) UTC时间:为世界标准时间,时区为0的时间 北京时间,UTC+8东八区 import time print(time.time()) # timestamp ...

  2. python-Day5-深入正则表达式--冒泡排序-时间复杂度 --常用模块学习:自定义模块--random模块:随机验证码--time & datetime模块

    正则表达式   语法:             mport re #导入模块名 p = re.compile("^[0-9]") #生成要匹配的正则对象 , ^代表从开头匹配,[0 ...

  3. python27期day15:自定义模块、模块导入、模块的路径、模块的查找顺序、time、datetime、random、os、sys、作业题

    1.模块的介绍: py文件就是一个模块 2.模块的分类:内置模块:python标准库 200 第三方模块 自定义模块 3.为什么学习模块? 开发效率高,内置函数和模块 减少重复代码,分文件管理,有助于 ...

  4. day16——自定义模块、time、datetime、random

    day16 自定义模块 自定义一个模块 import :导入(拿工具箱) # import test # test.func() 导入发生的事情 在当前的名称空间中开辟一个新的空间 将模块中所有的代码 ...

  5. Python模块01/自定义模块/time模块/datetime模块/random模块

    Python模块01/自定义模块/time模块/datetime模块/random模块 内容大纲 1.自定义模块 2.time模块 3.datetime模块 4.random模块 1.自定义模块 1. ...

  6. Python 常用模块之time&datetime 和random

    本节大纲: 模块介绍 time &datetime模块 random 一.模块介绍: 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他 ...

  7. python time、datetime、random、os、sys模块

    一.模块1.定义模块:用来从逻辑上组织Python代码(变量,函数,类,逻辑:实现一个功能),本质就是.py结尾的python文件(文件名:test.py,对应的模块名:test)包:用来从逻辑上组织 ...

  8. 【python】-- 模块、os、sys、time/datetime、random、logging、re

    模块 模块,用一堆代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个 ...

  9. Python3基础(5)常用模块:time、datetime、random、os、sys、shutil、shelve、xml处理、ConfigParser、hashlib、re

    ---------------个人学习笔记--------------- ----------------本文作者吴疆-------------- ------点击此处链接至博客园原文------ 1 ...

随机推荐

  1. 使用Redis sorted set实现集合设置member过期

    在我们日常工作中,有许多这种逻辑 例如需要得到最近三分钟的cache list. 例如我们监控系统需要查询最近一分钟的数据. 总结说来就是 需要一个list存储对象,并且这个对象会无限制增长,需要设置 ...

  2. spring boot 之登录笔记

    在测试平台的开发中,会牵涉到登录内容,页面需要登录后才能访问,所以,对于登录的开发是很有必要的.本文记录我在系统登录的一些自己的做法. 首先对登录进行设计. 如下: 1.登录密码输入错误超过次数限制 ...

  3. JAVA SparkSQL初始和创建DataFrame的几种方式

    建议参考SparkSQL官方文档:http://spark.apache.org/docs/latest/sql-programming-guide.html 一.前述       1.SparkSQ ...

  4. java 接口和抽象类的一个最大的区别

    写在前面,下面是在百度百科上看到的,之前就看过,这次再看感觉有更深的体会,真的是这样,每一个脚印都会留下痕迹 java接口和java抽象类有太多相似的地方,又有太多特别的地方,这里说下两者之间的一个最 ...

  5. 006-多线程-集合-Set-ConcurrentSkipListSet

    一.简介 ConcurrentSkipListSet是线程安全的有序的集合,适用于高并发的场景.ConcurrentSkipListSet和TreeSet,它们虽然都是有序的集合.但是,第一,它们的线 ...

  6. 阶段5 3.微服务项目【学成在线】_day18 用户授权_01-用户授权业务流程分析

    1 用户授权业务流程 用户授权的业务流程如下: 业务流程说明如下: 1.用户认证通过,认证服务向浏览器cookie写入token( 身份令牌) 2.前端携带token请求用户中心服务获取jwt令牌 前 ...

  7. QML访问C++类内部

    0.前提 C++类需要继承QObject,且有Q_OBJECT宏[所以QT自己的那么多类按道理上QML都是可以直接访问的,nb] 1.QML访问C++中的非private槽函数 可直接调用 信号也是 ...

  8. 性能测试-Linux资源监控⽅式

    Linux资源监控⽅式 1. 命令 2. 第三⽅⼯具(nmon) 3. LR(需要安装RPC相应服务包和开启服务)(略)   ⼀.命令 ⽅式 1. top (系统资源管理器) 2. vmstat (查 ...

  9. 【转】python selenium2 中的显示等待WebDriverWait与条件判断expected_conditions举例

    #coding=utf-8 from selenium import webdriver from selenium.webdriver.common.by import By from seleni ...

  10. 123457123456#0#-----com.yuming.FromPuzzleGame01--前拼后广--宝宝农场拼图cym

    com.yuming.FromPuzzleGame01--前拼后广--宝宝农场拼图cym