Python包和模块

1. 包

包是为了解决模块重名问题,python引入了以目录方式组织模块,称之为包(package),一个包中可以包含模块、包。python的包中必须包含一个特殊文件,被命名为__ init__.py,这文件告诉解释器这是一个包,而目录则不要求一定要有,这是目录和包的区别

2.模块

在python中,模块是代码组织的一种方式,把功能相近的函数放到一个文件中,一个文件(.py)就是一个模块(module),模块名就是文件名去掉后缀py。这样做的好处是:

  • 提高代码的可复用、可维护性。一个模块编写完毕后,可以很方便的在其他项目中导入
  • 解决了命名冲突,不同模块中相同的命名不会冲突

常用标准库:

标准库说明
builtins内建函数默认加载
math数学库
random生成随机数
time时间
datetime日期和时间
calendar日历
hashlib加密算法
copy拷贝
functools常用的工具
os操作系统接口
re字符串正则匹配
sysPython自身的运行环境
multiprocessing多进程
threading多线程
json编码和解码 JSON 对象
logging记录日志,调试

2.1 模块搜索路径

当导入一个模块时,解释器先在当前包中查找模块,若找不到,然后在内置的built-in模块中查找,找不到则按sys.path给定的路径找对应的模块文件(模块名.py)

import sys
#sys.path是一个列表
print(sys.path)
#可以使用列表的方法,增加搜索路径
sys.path.append(r'c:\wh1803')

2.2 导入模块

可以使用import语句导入模块,格式:

#1基本语法
import 包名.模块名1
import 包名.模块名2
....
import 包名.模块名n

#或者一行导入多个,不建议这么些,可读性不好
import 模块1,模块2,....模块n

#2 使用from...import导入指定标识符,语法:
from module import name1 [,name2 [,name3...[,namen]]]
from module imort *  #导入模块中所有标识符,不建议使用

#3.可是使用as给模块起一个别名
import 模块名 as 别名

import语句的模块顺序,推荐在文件开头导入模块,建议按照如下顺序:

  • python标准库
  • 第三方库
  • 自定义库

这三类库中间添加一个空行,模块第一次被导入的时候会被执行。如果在导入模块不想执行模块中代码,可以使用__ name__属性进行判断,如果该模块是当前模块,不是导入模块,__name __ 的值是__main__。所以可以这样检测:

#hello.py
def test()
    print('test')

if __name__ == '__main__'  #执行的是当前模块,则为真;导入的模块则为假
	test()

3 日期时间模块

datetime:日期

time :时间

calendar:日历

时间间隔是以秒为单位的

每个时间戳都以自从1970.1.1经历了多长时间计算的

时间戳:当前时间距离1970.1.1的秒数

3.1 time时间模块

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BlvomI21-1605985880333)(C:\Users\小瘦子\AppData\Roaming\Typora\typora-user-images\1552266102285.png)]

UTC:格林威治天文时间,世界标准时间,在中国UTC+8

DST:夏令时

时间的表示形式:

​ a.以整数或者浮点数表示一个以秒为单位的时间间隔,这个时间的基础值1970.1.1的零时零分零秒

​ b.采用Python中的数据结构表示,采用元组,元组中可以有9个不同的元素,表示不同的含义

​ c.格式化的时间字符串

import time

#1.获取当前时间的时间戳
c = time.time()    #*********
print(c)  #时间的第一种表示形式,时间戳:1522635821.4109497


#2.将上述时间戳转换为时间元组
g = time.gmtime(c)
print(g)
#time.struct_time(tm_year=2018, tm_mon=4, tm_mday=2, tm_hour=2, tm_min=25, tm_sec=33, tm_wday=0, tm_yday=92, tm_isdst=0)


#3.将时间戳生成时间元组(本地时间)
l = time.localtime(c)    #*********
print(l)
#time.struct_time(tm_year=2018, tm_mon=4, tm_mday=2, tm_hour=10, tm_min=27, tm_sec=13, tm_wday=0, tm_yday=92, tm_isdst=0)

#4.将时间元组转换为时间戳
c2 = time.mktime(l)
print(c2)

c3 = time.mktime((2018,4,2,10,29,23,3,320,0))
print(c3)

#5.将时间戳转换为字符串
c4 = time.ctime(c3)
print(c4)  #Mon Apr  2 10:29:23 2018


#6.将时间元组转换为格式化字符串
#注意:必须严格按照格式化的形式书写字符串【严格区分大小写】
s = time.strftime("%Y-%m-%d %H:%M:%S",l)    #*********
print(s)   #2018-04-02 10:35:45

#7.将指定格式的时间字符串转换为时间元组
#参数1:指定的时间  参数2:指定的时间格式
p = time.strptime("2018-04-02 10:35:45","%Y-%m-%d %H:%M:%S")
print(p)
#time.struct_time(tm_year=2018, tm_mon=4, tm_mday=2, tm_hour=10, tm_min=35, tm_sec=45, tm_wday=0, tm_yday=92, tm_isdst=-1)


#8.休眠【暂停】
#使用情景:多线程中
print("~~~~~~~~")

#参数的单位为秒
#time.sleep(5)     #*********
print("~~~~~~~~")

#9.用来衡量不同程序的耗时
print(time.clock())   #*********

#time\localtime\strftime\sleep\clock


#练习:假如我有一个时间字符串,然后向得到这个字符串所对应时间3天之后的时间
#2017.5.7

time1 = "2017-5-7"

#将时间转换为元组
p1 = time.strptime(time1,"%Y-%m-%d")
print(p1)

#将元组转换成时间戳
t1 = time.mktime(p1)
t3 = t1 + 3 * 24 * 3600

#最终转换为格式化形式
f = time.strftime("%Y.%m.%d",time.localtime(t3))
print(f)   #2017-05-10

3.2 datetime日期模块

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VkRdhrTx-1605985880342)(C:\Users\小瘦子\AppData\Roaming\Typora\typora-user-images\1552266078665.png)]

datetime比time更加高级。是对time进行了封装

import datetime


#1.获取当前时间
d1 = datetime.datetime.now()
print(d1)   #2018-04-02 10:58:32.061897


#2.获取指定时间
d2 = datetime.datetime(2018,4,2,10,56,32,3623)
print(d2)   #2018-04-02 10:56:32.003623

#3.将指定时间转换为字符串
d4 = d1.strftime("%Y-%m-%d")
print(d4)   #2018-04-02
print(type(d4))

d5 = datetime.datetime.strptime(d4,"%Y-%m-%d")
print(d5)  #2018-04-02 00:00:00


#4两个时间相减,可以得到时间间隔
d6 = datetime.datetime(2018,4,2,10,56,00,3623)
d7 = datetime.datetime(2018,4,5,10,56,32,3623)
d8 = d7 - d6
print(d8)  #3 days, 0:00:00
print(d8.days)   #3

#整数天之外的秒数
print(d8.seconds)

3.3 calendar日历模块

主要用于获取日历的相信信息

import  calendar

#1.直接返回指定年和月的万年历表示形式
print(calendar.month(2018,4))    #********


#2.返回万年历的二维列表表示形式
print(calendar.monthcalendar(2018,4))

#3.直接返回指定年份的万年历表示形式
print(calendar.calendar(2018))   #********

#4.判断某年是否为闰年
print(calendar.isleap(2010))   #********
print(calendar.leapdays(2000,2020))   #********

#5.返回指定月的weekday的第一天和这个月的所有的天数
print(calendar.monthrange(2018,4))  #(6, 30)---》(当月开始的第一天为星期几,mon为0,第二个元素表示当月的总天数)

print(calendar.monthcalendar(2018,4))

#当前日期表示的星期数
print(calendar.weekday(2018,4,2))   #********

4 第三方模块

物理环境安装步骤:

1.在终端中输入命令:pip -V 【检查版本,这个步骤在安装Python环境的时候如果勾选了Add path选项,则已自动安装】

2.安装第三方模块:pip install pillow 【pillow为一个图形处理的第三方模块,需要联网下载】

​ 如果此步出错,则执行命令 python -m pip install --upgrade

3,.如果不使用第三方模块,则可以执行命令:pip uninstall pillow ,卸载第三方模块

pycharm虚拟环境安装

​ 在pycharm底部打开"Terminal"窗口,在这个窗口里执行pip将在虚拟环境中安装第三方库

格式化时间字符串

元组格式

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值