模块初始

模块的概念(本质为一个py文件)

python模块可以将代码量较大的程序分割成多个有组织的、彼此独立但又能互相交互的代码片段,这些自我包含的有组织

的代码段就是模块,模块在物理形式上表现为以.py结尾的代码文件

一个文件被看作一个独立的模块,一个模块也可以被看作是一个文件

模块的文件名就是模块的名字加上扩展名.py

每个模块都有自己的名称空间

python允许“导入”其他模块以实现代码重用,从而也实现了将独立的代码文件组织成更大的程序系统

python中,模块也是对象

在一个模块的顶层定义的所有变量都在被导入时成为了被导入模块的属性

模块的分类

分为三部分:内置模块、第三方模块,自定义模块

模块的好处

分模块的好处:

  • 避免写重复代码
  • 可以多次利用
  • 拿来即用

模块的导入(imort)

import time,os  # 单行导入
import time   #多行导入(推介写法)
import os

模块导入发生的事情

  • 当前的名称空间中开辟一个新的空间(test)
  • 将模块中所有的代码执行
  • 通过模块名.进行查找函数(工具)

模块的别名

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
import time as t    #将time命名为t
t.strftime()      # t.可直接调用函数方法# 做一兼容性
choose = input(msg)
if choose == "1":import meet as t
elif choose == "2":import test as tfrom datetime import datetime as t
from import 也支持重新命名

for import

导入模块中的某些方法:

from datetime import datetime
# 导入模块中的某种方法

form import和import的区别:

唯一的区别就是:使用from…import…则是将spam中的名字直接导入到当前的名称空间中,所以在当前名称空间中,直接使用名字就可以了

from…import…的方式有好处也有坏处

  • 好处:使用起来方便了
  • 坏处:容易与当前执行文件中的名字冲突

form import执行文件与模块同名的变量,会有覆盖效果

from import as *

from import as *导入模块中未限制的所有方法

可以使用__all__进行限制

__all__=['name','read1'] #这样在另外一个文件中用from spam import *就这能导入列表中规定的两个名字

模块的导入顺序

内存中已经加载的模块 > 自定义模块 > 内置模块 > 第三方模块

  • 在第一次导入某个模块时,会先检查该模块是否已经被加载到内存中(当前执行文件的名称空间对应的内存),如果有则直接引用(ps:python解释器在启动时会自动加载一些模块到内存中,可以使用sys.modules查看)
  • 如果没有,解释器则会查找同名的内置模块
  • 如果还没有找到就从sys.path给出的目录列表中依次寻找文件。
# 导入路径:
# 使用相对路径:
from day15.t1 import meet   # day15.t1 meet相对路径
print(meet.name)# 使用绝对路径:
# 错误示例:# from r"D:\" import meet# from ../# 正确的绝对路径:
from sys import path
path.insert(0,"D:\\")   # 将导入模块的绝对路径插入系统路径中
import meet
print(meet.name)

模块的两种用法:

  • 作为脚本(在终端中运行python文件)
  • 作为模块(导入或使用)

time模块

time模块方法及用法

import time
print(time.time())  # 当前时间,浮点数
time.sleep(2)  # 休眠2秒,本质为阻塞
time.strftime("%Y-%m-%d %H:%M:%S",结构化时间)   # 将结构化时间转化成字符串时间
time.gmtime(时间戳)  # 将时间戳转化成格林尼治结构化时间
time.mktime(结构化时间)  # 将结构化时间转化时间戳
time.strptime(字符串时间,"%Y-%m-%d %H:%M:%S")  # 将字符串时间转换成结构化时间
time.localtime()  # 将时间戳转化成当地的结构化时间

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模块计算两个时间的时间差:

计算时间差:

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
import time
true_time=time.mktime(time.strptime('2017-09-11 08:30:00','%Y-%m-%d %H:%M:%S'))
time_now=time.mktime(time.strptime('2017-09-12 11:00:00','%Y-%m-%d %H:%M:%S'))
dif_time=time_now-true_time
struct_time=time.gmtime(dif_time)
print('过去了%d年%d月%d天%d小时%d分钟%d秒'%(struct_time.tm_year-1970,struct_time.tm_mon-1,struct_time.tm_mday-1,struct_time.tm_hour,struct_time.tm_min,struct_time.tm_sec))

其他方法:

#结构化时间 --> %a %b %d %H:%M:%S %Y串
#time.asctime(结构化时间) 如果不传参数,直接返回当前时间的格式化串
>>>time.asctime(time.localtime(1500000000))
'Fri Jul 14 10:40:00 2017'
>>>time.asctime()
'Fri Jul 26 18:34:59 2019'#时间戳 --> %a %b %d %H:%M:%S %Y串
#time.ctime(时间戳)  如果不传参数,直接返回当前时间的格式化串
>>>time.ctime()
'Fri Jul 26 18:34:59 2019'
>>>time.ctime(1500000000)
'Fri Jul 14 10:40:00 2017'

datetime模块

获取当前日期和时间:

from datetime import datetime
print(datetime.now())   # 获取对象数据类型为对象
# 结果:
'2019-07-26 18:39:46.300129'

获取指定的时间和日期:

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
from datetime import datetime
dt = datetime(2018,5,20,13,14)
print(dt)
# 结果:
'2018-05-20 13:14:00'

datetime与时间戳的转换:

from datetime import datetimedt = datetime.now()
new_timestamp = dt.timestamp()   # 转化成时间戳
print(new_timestamp)
#结果:1543931750.415896import time
from datetime import datetimenew_timestamp = time.time()
print(datetime.fromtimestamp(new_timestamp))   # 转化成datetime时间
# 结果:
'2019-07-26 18:46:13.833992'

str与datetime的转换:

很多时候,用户输入的日期和时间是字符串,要处理日期和时间,首先必须把str转换为datetime。转换方法是通过datetime.strptime()实现,需要一个日期和时间的格式化字符串:

from datetime import datetimet = datetime.strptime('2018-4-1 00:00','%Y-%m-%d %H:%M')
print(t)
'''
结果: 2018-04-01 00:00:00
'''

如果已经有了datetime对象,要把它格式化为字符串显示给用户,就需要转换为str,转换方法是通过strftime()实现的,同样# 需要一个日期和时间的格式化字符串:

from datetime import datetime
now = datetime.now()
print(now.strftime('%a, %b %d %H:%M'))
# 结果:
'Mon, May 05 16:28'

datetime加减:

对日期和时间进行加减实际上就是把datetime往后或往前计算,得到新的datetime。加减可以直接用+和-运算符,不过需要导入timedelta这个类:

from datetime import datetime, timedelta
now = datetime.now()
now
datetime.datetime(2015, 5, 18, 16, 57, 3, 540997)
now + timedelta(hours=10)
datetime.datetime(2015, 5, 19, 2, 57, 3, 540997)
now - timedelta(days=1)
datetime.datetime(2015, 5, 17, 16, 57, 3, 540997)
now + timedelta(days=2, hours=12)
datetime.datetime(2015, 5, 21, 4, 57, 3, 540997)

可见,使用timedelta你可以很容易地算出前几天和后几天的时刻。

指定datetime时间:

current_time = datetime.datetime.now()
print(current_time.replace(year=1977))  # 直接调整到1977年
print(current_time.replace(month=1))  # 直接调整到1月份
print(current_time.replace(year=1989,month=4,day=25))  # 1989-04-25 18:49:05.898601

random模块

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
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模块初始与time、datetime及random相关推荐

  1. Python攻城师的成长————模块突破(collections、time与datetime、random随机数模块)

    今日学习目标: 学习并应用collections.time与datetime.random随机数模块知识 今日学习内容: collections模块 time与datetime模块 random随机数 ...

  2. python库测试记录(sys、time、datetime、random、hashlib)

    sys库测试: ''' 当你导入一个模块,Python解析器对模块位置的搜索顺序是: 1.当前目录 2.如果不在当前目录,python则搜索在shell变量PYTHONPATH下的每个目录. 3.如果 ...

  3. python模块datetime将字符串转换为日期

    python模块datetime将字符串转换为日期 python datetime 模块提供用于处理日期和时间的类. 在支持日期时间数学运算的同时,实现的关注点更着重于如何能够更有效地解析其属性用于格 ...

  4. python模块调用的用法_如何使用Python语言中的random模块调用方法

    Python语言中的random模块,包含了很多方法属性,可以直接调用这些方法和设置属性.根据不同的方法展示不同的内容.下面利用几个实例查看random模块中的方法,操作如下: 工具/原料 Pytho ...

  5. python怎么导入时间-python初步学习-import和datetime模块

    模块 一个完整大型的python程序是由模块和包的形式组织起来的,可见模块在python中的重要性.模块是一种组织型式,它许多有关联(关系)的代码组织放到单独的独立文件中.简单的说,可以把模块理解为一 ...

  6. python random模块中的指令_python中random模块的使用

    这些方法位于random模块中 random.random(),同javascript的Math.random(),返回[0.0,1)之间的浮点数 random.uniform(a, b),返回[a, ...

  7. python中sn的意思_Python中random模块生成随机数详解

    Python中的random模块用于生成随机数.下面介绍一下random模块中最常用的几个函数. random.random random.random()用于生成一个0到1的随机符点数: 0 < ...

  8. Python模块:Random(未完待续)

    本文基于Python 3.6.5的官文random编写. random模块简介 random为各种数学分布算法(distributions)实现了伪随机数生成器. 对于整数,是从一个范围中均匀选择(u ...

  9. Python之日期与时间处理模块(date和datetime)

    本节内容 前言 相关术语的解释 时间的表现形式 time模块 datetime模块 时间格式码 总结 前言 在开发工作中,我们经常需要用到日期与时间,如: 作为日志信息的内容输出 计算某个功能的执行时 ...

最新文章

  1. 如何实现iframe(嵌入式帧)的自适应高度
  2. textField textView输入限制
  3. cordova sqlite
  4. 三十六、数据仓库的实现
  5. 【Boost】boost库中的小工具enable_shared_from_this
  6. JavaScrip入门-变量计算%函数
  7. SPA (单页应用程序)
  8. 用计算机演银河系,专家首次用计算机模拟类银河星系 分辨率极高
  9. 轻松搞定面试中的链表题目
  10. 【scala初学】scala IDE eclipse
  11. 同样是软件测试工程师,为什么性能测试月薪更高?
  12. 经典商业模式案例第1例:校园O2O
  13. VMware Cloud Director 10.3.1 - 云计算调配和管理平台
  14. 200与mcgs485实例 smart_SMAART200与MCGS-工业支持中心-西门子中国
  15. 计算机要重启电脑才能检测出u盘启动,u盘要电脑重启才能用
  16. linux的shell版url爬虫
  17. FPS游戏中的喷漆效果原理
  18. android远程指纹认证流程的猜测
  19. java基础常见面试题
  20. git是什么,git怎么用?

热门文章

  1. apache安全设置
  2. Javaweb 项目内所有页面都是404问题
  3. 【js】JSON.stringify 语法实例讲解
  4. 如何在本地搭建多个网站(wampserver)
  5. 触发器无法启动分布式事务。
  6. android适配不同分辨率的手机
  7. CDOJ1324-卿学姐与公主 【线段树点更新】
  8. [Winform]DataGridView列自适应宽度
  9. 高清电影如何加载字幕【解决】
  10. mysql etc rc.local_CentOS 7 开机启动自定义配置文件:/etc/rc.local 不执行解决办法 | IT运维网...