[Python][华为云Python编程创造营][学习笔记][07_模块和标准库]
1,轮子和模块
1.1,程序员和轮子
- 程序员:"不要重复造轮子"。
1.2,程序中的轮子
- 在程序中,我们将封装好的组件、库称为轮子。它可以拿来直接用,实现对应的功能。
- 发明轮组与造轮子:不要重复发明轮子
- 在Python中一个工具库就像是一个轮子:一个轮子由很多模块组成。
1.3,模块简介(1)
- 在计算机程序的开发过程中,随着代码增多,在一个文件里代码会越来越长,越来越不容易维护。
- 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式。在Python中,一个.py文件就可以称之为一个模块(module)。
1.4,模块简介(2)
- 第三方工具包:
Pandas:数据处理与分析
Numpy:科学计算
Matplotlib:绘图
Scikit-learn:基于SciPy和Numpy的开源机器学习模块
Tensorflow:深度学习框架
- 标准库:
os,sys,time
1.5,模块的作用
- 模块是Python中的最高级别组织单元,它将程序代码和数据封装起来以便重用。
- 模块的三个角色:
代码重用。
系统命名空间的划分(模块可理解为变量名的封装,即模块就是命名空间)。
实现共享服务和数据。
1.6,Python程序的架构
- Python源代码文件:*.py。
- 一个py文件是一个模块(module)。
- 多个模块可以组成一个包(package)。
- 包是一个目录。要被python视为包,目录中必须包含__init__.py文件,包的导入会首先执行__init__.py。其他模块加入包中,放入包的目录即可。
1.7,模块的执行环境
- 模块包含变量、函数、类以及其他的模块(如果导入的话),而函数也有自己的本地变量。
1.8,模块导入的方式
导入从本质上讲,就是在一个文件中载入另一个文件,并且能够读取那个文件的内容。一个模块内的内容通过这样的方法其属性(attributes)和方法(methods)能够被外界使用。
1.8.1,导入整个模块
- 使用方法一:在"import"后加上"模块名称"。
import numpy
通过这一句,计算机就在指定的位置找到了"numpy.py"文件,并准备好该文件拥有的之后会用到的函数和属性。在导入"numpy"后,我们就可以通过点符号"."连接模块名称和函数名,使用该模块中的函数和属性。
numpy.sqrt(2)
1.8.2,import搜索的路径顺序
- 以上四个组件组合起来就变成了sys.path,其保存了模块搜索路径在机器上的实际配置,可以通过打印内置的sys.path列表来查看这些路径。
- 搜索路径1和3是系统自定义的,而2和4可以用于拓展路径,从而加入自己的源代码目录。
2,Python的内置模块
2.1,Python内置工具包
在安装Python解释器后可以直接使用的工具包:
- os,负责程序与操作系统的交互,提供了访问操作系统底层的接口。
- sys,负责程序与Python解释器的交互,提供了一系列的函数和变量,用于操控Python运行时的环境。
- time,是Python中处理时间的一个重要模块,包含了许多的有关时间操作的方法。
- random,Python随机函数库。
- datetime,Python中可操作日期和时间的模块。
- ...
2.2,Python os库基本使用方法(1)
常用的路径操作函数如下:
- os.getcwd():获取当前所在的路径。
- os.chdir(path):改变当前工作目录。
- os.listdir():返回目录下的所有文件。
- os.walk():返回目录下所有文件(包括子文件夹中的文件)。
import os
cwd=os.getcwd()
print("当前所在路径为:",cwd)
os.chdir("../") # ../指的是当前目录上一级父目录,此语句表示改变当前工作目录至上一级目录
print("当前目录下的文件有:",os.listdir(cwd))
2.3,Python os库基本使用方法(2)
os.path子模块:
- os.path.join(path):按当前系统所能识别的方式链接目录名。
- os.path.abspath(path):返回绝对路径。
- os.path.exists(path):文件存在则返回True,不存在返回False。
- os.path.getsize(path):返回文件大小,如果文件不存在就返回错误。
import os
os.path.join('home','username','notebooks') # 在Windows下等同于/home/username/notebooks
print("text0.txt的绝对路径为:",os.path.abspath("text0.txt"))
print("text0.txt是否存在:",os.path.exists("text0.txt"))
print("text0.txt的文件大小:",os.path.getsize("text0.txt"))
2.4,Python os库基本使用方法(3)
- os.path.isfile(path):判断路径是否为文件,如果是文件就返回True,不是就返回False。
- os.path.isdir(path):判断路径是否为文件夹,如果是文件夹就返回True,不是就返回False。
import os
print("text0.txt是否为文件:",os.path.isfile("text0.txt"))
print("text0.txt是否为文件夹:",os.path.isdir("text0.txt"))
2.5,Python sys库基本使用方法(1)
sys模块主要是针对与Python解释器相关的变量和方法,提供对解释器使用或维护的一些变量的访问,以及与解释器强烈交互的函数。
常用函数如下:
- sys.exit([n]):此方法可以使当前程序退出。
import sys
for i in range(100):
print(i)
if i==5:
sys.exit(0)
2.6,Python sys库基本使用方法(2)
- sys.path:获取模块搜索路径
- path是一个目录列表,供Python从中查找模块。在Python启动时,sys.path根据内建规则和Python的PATH变量进行初始化。sys.path的第一个元素通常是个空字符串,表示当前目录。
- sys.path本质上是一个列表,可以进行append,insert,pop,remove等各种列表相关的操作,但通常都进行append操作,添加自己想要的查找路径。
2.7,Python sys库基本使用方法(3)
- sys.platform:获取当前系统平台。
- sys.argv:从程序外部向程序传递参数,参数以列表的形式传递,第一个为当前文件名。
import sys
sys.platform
print(sys.argv[0])
2.8,Python time库(1)
time库用于获取时间,包括日期和当前时间点。常用的函数包括:
- time.time():用于获取当前时间戳,还可以用于输出某个代码块的运行时间。
import time
time1=time.time()
######代码块######
for i in range(100000):
pass
######代码块######
time2=time.time()
print("时间戳1:",time1) # 时间戳1: 1636161110.4614594
print("时间戳2:",time2) # 时间戳2: 1636161110.46646
print("运行总时长:",time2-time1) # 运行总时长: 0.005000591278076172
2.9,Python time库(2)
- time.localtime():将时间戳转化为时间元组。
import time
time_now=time.time()
localtime=time.localtime(time_now)
print("本地时间为:",localtime)
# 输出结果为
# 本地时间为: time.struct_time(tm_year=2021, tm_mon=11, tm_mday=6, tm_hour=9, tm_min=16, tm_sec=49, tm_wday=5, tm_yday=310, tm_isdst=0)
3.0,Python time库(3)
- time.asctime():获取格式化的时间,通常用于将时间元组转化为可读性较强的格式。
import time
time_now=time.time()
localtime=time.localtime(time_now)
localtime2=time.asctime(localtime)
print("本地时间为:",localtime2) # 本地时间为: Sat Nov 6 09:39:49 2021
- 或者使用time.strftime(format,[,t]):接收时间元组,并返回以可读字符串表示的当地时间,格式由参数format决定。
import time
print(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())) # 2021-11-06 10:00:24
3.1,Python random库(1)
- random库是Python里以一定规律产生随机数的标准库。
- random随机数生成库的使用:
random.random():生成0-1之间的随机数。
random.randint(m,n):返回m到n之间的随机整数,包含m和n。
from random import *
# 生成0-1之间的随机数,服从正态分布。
print("随机选取0<=x<=1的随机浮点数:",random()) # 随机选取0<=x<=1的随机浮点数: 0.09918964100146255
# 返回指定区间的随机整数
print("随机选取-3<=x<10的随机整数:",randint(-3,10)) # 随机选取-3M=x<10的随机整数: 1
3.2,Python random库(2)
- random.randrange():返回指定区间的随机数,可指定步长。
注意:randint(start,end)相当于randrange(start,end,1)
- random.uniform():随机选取指定范围的随机浮点数。
from random import *
# 返回指定区间的随机整数,可指定步长r
print("在[-3,1,5,9]里随机挑一个:",randrange(-3,10,4)) # 在[-3,1,5,9]里随机挑一个: 9
# 均匀而随机选取指定范围的随机浮点数,服从均匀发布
print("随机选取-5<=x<5的随机浮点数:",uniform(-5,5)) # 随机选取-5<=x<5的随机浮点数: 4.7063137283904215
3.3,Python random库(3)
- random.sample():随机选取指定数量的样本。
- random.shuffle():洗牌。即将列表中元素顺序打乱。
from random import sample, shuffle
l = list(range(10))
# 随机选取5个样本
print("从0<=x<10中随机选5个数:",sample(l,5)) # 从0<=x<10中随机选5个数: [8, 3, 5, 6, 7]
l = list(range(10))
print("打乱前:",l) # 打乱前: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
shuffle(l) # 洗牌,即将列表中元素顺序打乱。
print("打乱后:",l) # 打乱后: [9, 8, 2, 6, 3, 1, 0, 7, 5, 4]
3.4,Python datetime库(1)
- datetime是Python中关于日期时间操作模块,内置了诸多关于日期时间转化和计算的方法。
- datetime库中的操作主要是对其中四个类的操作:
datetime.date:日期类
datetime.time:时间类
datetime.datetime:时间日期类
datetime.timedelta:时间计算类
3.5,Python datetime库(2)
- datetime.date:
today():获取今天的日期。
strftime(format):格式化为需要的时间格式。
timple():将日期转成struct_time格式。
fromtimestamp(timestamp):将时间戳转化为date对象。
- datetime.time:
datetime.time.(format):格式化输出。
3.6,Python datetime库(3)
- datetime.datetime:
now():返回当前日期时间对象。
ctime():返回日期时间字符串。
date():返回当前日期对象。
time():返回时间对象。
- datetime.timedelta:
d1-d2:返回两个日期之间的timedelta对象。
days():返回两个日期之间的天数。
total_seconds():返回总秒数。
- 点赞
- 收藏
- 关注作者
评论(0)