[Python][华为云Python编程创造营][学习笔记][07_模块和标准库]

网友投稿 582 2022-05-30

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:获取模块搜索路径

[Python][华为云Python编程创造营][学习笔记][07_模块和标准库]

- 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():返回总秒数。

Python

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:mxGraph教程-开发入门指南
下一篇:【云市场精选】警匪片中常见的大屏作战指挥中心怎么部署?运筹帷幄的“最强大脑”如何炼成?
相关文章