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

举报
John2021 发表于 2021/11/07 16:14:37 2021/11/07
【摘要】 1,轮子和模块    1.1,程序员和轮子        - 程序员:"不要重复造轮子"。    1.2,程序中的轮子        - 在程序中,我们将封装好的组件、库称为轮子。它可以拿来直接用,实现对应的功能。        - 发明轮组与造轮子:不要重复发明轮子        - 在Python中一个工具库就像是一个轮子:一个轮子由很多模块组成。    1.3,模块简介(1)     ...

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中的最高级别组织单元,它将程序代码和数据封装起来以便重用。
        - 模块的三个角色:
            代码重用。
            系统命名空间的划分(模块可理解为变量名的封装,即模块就是命名空间)。
            实现共享服务和数据。

        img1.PNG

    1.6,Python程序的架构

        - Python源代码文件:*.py。
        - 一个py文件是一个模块(module)。
        - 多个模块可以组成一个包(package)。
        - 包是一个目录。要被python视为包,目录中必须包含__init__.py文件,包的导入会首先执行__init__.py。其他模块加入包中,放入包的目录即可。

        img2.png

    1.7,模块的执行环境

        - 模块包含变量、函数、类以及其他的模块(如果导入的话),而函数也有自己的本地变量。

        img3.png

    1.8,模块导入的方式

        导入从本质上讲,就是在一个文件中载入另一个文件,并且能够读取那个文件的内容。一个模块内的内容通过这样的方法其属性(attributes)和方法(methods)能够被外界使用。

        img4.png

        1.8.1,导入整个模块

            - 使用方法一:在"import"后加上"模块名称"。
                import numpy
                通过这一句,计算机就在指定的位置找到了"numpy.py"文件,并准备好该文件拥有的之后会用到的函数和属性。在导入"numpy"后,我们就可以通过点符号"."连接模块名称和函数名,使用该模块中的函数和属性。
                numpy.sqrt(2)

        1.8.2,import搜索的路径顺序

        img5.png

            - 以上四个组件组合起来就变成了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():返回总秒数。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。