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

自定义模块,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 当前时区的名称
%% %号本身

原文地址:https://www.cnblogs.com/LIJIAN1/p/11247293.html

时间: 2024-10-09 22:27:38

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

Python 常用模块之time&amp;datetime 和random

本节大纲: 模块介绍 time &datetime模块 random 一.模块介绍: 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才能完成 (函数又可以在不同的.py文件中),n个 .py 文件组成的代码集合就称为模块. 如:os 是系统相关的模块:file是文件操作相关的模块 模块分为三种: ①自定义模块 ②内置标准模块(又称标准库) ③开源

python基础之模块(time,datetime,os,random)

模块 模块是什么? 我们说一个函数就是一个功能,那么把一些常用的函数放在一个py文件中,这个文件就称之为模块,模块,就是一些列常用功能的集合体. 为什么要使用模块? 开发效率高,减少重复代码 拿来主义 人们常说的脚本是什么? 脚本就是一个python文件 模块的分类 1.内置模块 2.第三方模块 3.自定义模块 import 第一次导入模块执行三件事 1.创建一个以模块名命名的名称空间. 2.执行这个名称空间(即导入的模块)里面的代码. 3.通过模块名来使用模块中的功能 导入多个模块 impor

python模块time&amp;datetime&amp;json &amp; picle&amp;14.logging等

本节大纲: 模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configparser hashlib subprocess logging模块 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.py文件中),n个

python 学习笔记 14 -- 常用的时间模块之datetime

书接上文,前面我们讲到<常用的时间模块之time>,这次我们学习datetime -- 日期和时间值管理模块 使用apihelper 查看datetime 模块,我们可以看到简单的几项: date       ---  日期对象,结构为date(year, month, day) time       ---  时间值对象,结构为 time([hour[, minute[, second[, microsecond[, tzinfo]]]]]).时间对象所有的参数都是可选的.tzinfo 可以

Python模块学习 ---- datetime

Python提供了多个内置模块用于操作日期时间,像calendar,time,datetime.time模块我在之前的文章已经有所介绍,它提供的接口与C标准库time.h基本一致.相比于time模块,datetime模块的接口则更直观.更容易调用.今天就来讲讲datetime模块. datetime模块定义了两个常量:datetime.MINYEAR和datetime.MAXYEAR,分别表示datetime所能表示的最小.最大年份.其中,MINYEAR = 1,MAXYEAR = 9999.(

模块调用,datetime,time,logging,递归,双层装饰器, json,pickle迭代器和生成器

一.python模块(导入,内置,自定义,开源) 1.模块简介 模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py.模块可以被别的程序引入,以使用该模块中的函数等功能.这也是使用python标准库的方法. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.py文件中),n个 .py 文件组成的代码集合就称为模块. 2.模块的引入 在Python中用关键字

跟我一起学extjs5(40--增加一个自定义模块[1建立表和bean文件])

跟我一起学extjs5(40--增加一个自定义模块[1建立表和bean文件]) 经过上面的工作,一个独立模块的CRUD已经可以运行了,为了更好的可以看到其他自定义功能,我们做一个自定义的独立模块,这个模块中包括了各种的数据类型. 新增一个"销售合同"的独立模块,模块名称为Agreement,里面包括了20几个字段,把主要的字段类型都设置了,有字符串型,整型,浮点型,金额型,日期型,布尔型,百分比,还包括计算字段. 建立表的sql语句如下: /****** 对象: Table [dbo]

模块1 time,random,os ,hashlib

模块:就是一个.py 文件,函数只能在一个.py文件里用. 分为:内置模块,  内置再pycharm里 第三方模块,别人开发好的, 自定义模块,自己写的,包含模块调用,包的调用 time模块 用字符串表示时间,'2017-06-21'是人能够识别的,而计算机则不行,需要转换才行 1.时间戳import timeprint(time.time()) 结果 1498022736.3174474 是从1970年到当前时间的总秒数时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量.我

Python中的time模块与datetime模块用法总结

http://www.jb51.net/article/87721.htm time模块time模块是包含各方面对时间操作的函数. 尽管这些常常有效但不是所有方法在任意平台中有效. time用struct_time表示时间 ? 1 2 3 4 5 6 7 8 import time # time.struct_time(tm_year=2015, tm_mon=4, tm_mday=24,           tm_hour=14, tm_min=17, tm_sec=26,