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的更多相关文章

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

    自定义模块,time,datetime以及random 1.自定义模块 自定义一个模块 import #导入 (拿工具箱) 模块分类 1.内置模块(标准库) --python解释器自带的.py文件(模 ...

  2. Python常用模块(time, datetime, random, os, sys, hashlib)

    time模块 在Python中,通常有这几种方式来表示时间: 时间戳(timestamp) :         通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量.我们运 ...

  3. Python常用模块time & datetime &random 模块

    时间模块前言 在Python中,与时间处理有关的模块就包括:time,datetime 一.在Python中,通常有这几种方式来表示时间: 时间戳 格式化的时间字符串 元组(struct_time)共 ...

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

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

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

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

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

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

  7. (常用)time,datetime,random,shutil(zipfile,tarfile),sys模块

    a.time模块import time 时间分为三种形式1.时间戳 (时间秒数的表达形式, 从1970年开始)print(time.time())start_time=time.time()time. ...

  8. python笔记-1(import导入、time/datetime/random/os/sys模块)

    python笔记-6(import导入.time/datetime/random/os/sys模块)   一.了解模块导入的基本知识 此部分此处不展开细说import导入,仅写几个点目前的认知即可.其 ...

  9. Day13 Python基础之time/datetime/random模块一(十一)

    time模块 import time print(help(time)) time.time() #return current time in seconds since the Epoch as ...

随机推荐

  1. where与having 的区别

    二者的区别在于作用对象不同. where子句作用于基本表或视图,从中选择满足条件的一行或多行元祖. having短语作用于组,从中选择满足条件的组.这些组应该由group by 短句来进行分组.

  2. [RN] React Native Fetch请求设置超时

    一.实现思路 根据Promise.race的特性,我们在Promise.race里面添加两个任务,一个是正常的网络请求任务A,另外一个便是网络延时任务B,网络延时可以利用setTimeout方法实现. ...

  3. 链表 | 判断链表B是否为链表A的连续子序列

    王道P38T16 代码: bool common_subSequence(LinkList &A,LinkList &B){ LNode *pA,*pB=B->next,*p=A ...

  4. 小胖守皇宫(VIJOS P1144 )题解

    题目描述 huyichen世子事件后,xuzhenyi成了皇上特聘的御前一品侍卫. 皇宫以午门为起点,直到后宫嫔妃们的寝宫,呈一棵树的形状:某些宫殿间可以互相望见.大内保卫森严,三步一岗,五步一哨,每 ...

  5. LSTM的神经元个数

    小书匠深度学习 目录: 1.LSTM简单介绍 2.简单假设样例 3.神经元分析 3.1忘记门层 3.2细胞状态 3.3输出层 3.4总结 4.测试 1.LSTM简单介绍 LSTM在时间上展开 红框从左 ...

  6. 在微信小程序页面间传递数据总结

    在微信小程序页面间传递数据 原文链接:https://www.jianshu.com/p/dae1bac5fc75 在开发微信小程序过程之中,遇到这么一些需要在微信小程序页面之间进行数据的传递的情况, ...

  7. GoCN每日新闻(2019-10-28)

    GoCN每日新闻(2019-10-28) 1. 理解和攻击Go DSA验证漏洞 https://paul.querna.org/articles/2019/10/24/dsa-verify-poc/2 ...

  8. Python 元编程

    1.为函数添加包装器 总是存在这样的场景,在一个函数执行前后需要做一些操作处理,常见于日志创建.权限认证或者性能分析等.但有一个问题存在,那就是被装饰的函数,其元信息会丢失,函数引用会指向装饰器的返回 ...

  9. 为 Nginx 添加 HTTP 基本认证(HTTP Basic Authentication)

    针对sudo apt-get install命令安装的nginx(默认会有/etc/nginx/conf.d) sudo apt-get install nginx 生成密码 printf " ...

  10. mysql优化查找执行慢的sql

    想要进行sql优化,肯定得先找出来需要优化的sql语句 一.mysql有一个自带的sql执行慢记录日志文件,所记录的日志取决于参数long_query_time控制,默认情况下long_query_t ...