Python基础 – 使用别人代码的模块机制
<p>Python的模块为日常编程中许多问题提供了标准的解决方案,同时也能让我们更加简洁优雅地管理代码。</p>
<h2>模块</h2>
<p>定义:
每个模块是由1个或多个Python文件构成。是相关的类、函数和变量所组成的一个集合。</p>
<p>它可以被其它代码引入并直接使用。</p>
<p>通常,一个模块中的各个功能是相互关联的。</p>
<p>模块中的函数就像是积木,用一块一块的积木搭建成一个完整的图形,搭好的图形就是模块。
<img src=“https://assets.moshanghua.net/images/2022/08/msh-2605-01.jpg” alt=“” /></p>
<p>了解完模块的基本概念后,先来看看最常接触的第一大类模块:<strong>内置模块</strong>。</p>
<p>内置模块是在安装Python时自带的模块。Python提供了大量丰富且高质量的内置模块来帮助完成一些系统化工作。</p>
<p>比如,生成一个随机的数字可以使用<code>random</code>模块,要处理日期和时间则可以通过<code>datetime</code>模块等。</p>
<p>为了使用这些模块,首先需要通过关键词<code>import</code>来<strong>导入模块</strong>。</p>
<h2>导入模块(I)</h2>
<pre><code class=“language-python”>import random
randomNum = random.random()
print(randomNum)</code></pre>
<p><strong>代码的作用</strong>
这三行代码输出了一个随机数。</p>
<p>第一行导入了random模块,该模块用于生成随机数;
第二行将生成的随机数赋值给了变量randomNum;
第三行输出了randomNum这个变量的数值。</p>
<p><strong>import</strong>
关键字<code>import</code>,中文意思是“导入”,表明我们要在这里导入模块。
<img src=“https://assets.moshanghua.net/images/2022/08/msh-2605-02.png” alt=“” /></p>
<p><strong>模块的名称</strong>
一个名为<code>random</code>的模块,该模块用于生成一个随机数。
<img src=“https://assets.moshanghua.net/images/2022/08/msh-2605-03.png” alt=“” /></p>
<p><strong>模块内的函数</strong>
导入<code>random</code>模块后,就可以通过 <code>random.xxx()</code> 来使用该模块中的所有函数。</p>
<p>这里,我们调用了<code>random</code>模块里的<code>random()</code>函数,该函数用于生成一个0到1的随机浮点数。
<img src=“https://assets.moshanghua.net/images/2022/08/msh-2605-04.png” alt=“” /></p>
<p><strong>模块内的函数</strong>
<code>random</code>模块中还有其它的函数,可以根据自己的需要来调用。</p>
<p>比如,想生成一个在1到7之间的随机整数,可以使用<code>random</code>模块里的<code>randint()</code>函数,代码为:<code>random.randint(1,7)</code>。
<img src=“https://assets.moshanghua.net/images/2022/08/msh-2605-05.png” alt=“” /></p>
<p>代码小结
要导入模块时,就可以使用这样的格式:
<img src=“https://assets.moshanghua.net/images/2022/08/msh-2605-06.png” alt=“” /></p>
<p>使用<code>import</code>导入模块后,除了可以获取到模块内的函数,还可以获取到该模块中的类。通过调用类里面的方法,来实现某一功能。</p>
<p>比如,要获取今天的日期,就需要用到<code>datetime</code>模块里的<code>date</code>类,以及该类中的<code>today()</code>方法。</p>
<pre><code class=“language-python”>import datetime
todayDate = datetime.date.today()
print(todayDate)</code></pre>
<p><strong>导入模块</strong>
使用关键字<code>import</code>,中文意思是“导入”,表明我们要在这里导入一个名称为<code>datetime</code>的模块。
<img src=“https://assets.moshanghua.net/images/2022/08/msh-2605-07.png” alt=“” /></p>
<p><strong>模块中的一个类</strong>
一个类,表明我们在调用<code>datetime</code>模块里的<code>date</code>类。</p>
<p><code>date</code>类是一个日期类,里面提供了一些关于日期的方法与属性。
<img src=“https://assets.moshanghua.net/images/2022/08/msh-2605-08.png” alt=“” /></p>
<p><strong>date类里面的某一个方法</strong>
一个方法,表明我们要调用的<code>today()</code>从属于<code>date</code>类。</p>
<p>该方法用于获取当前的本地日期。
<img src=“https://assets.moshanghua.net/images/2022/08/msh-2605-09.png” alt=“” /></p>
<p><strong>代码小结</strong>
导入模块后,想获取到该模块中的类里面的某一个方法时,就可以使用这样的格式:
<img src=“https://assets.moshanghua.net/images/2022/08/msh-2605-10.png” alt=“” /></p>
<h3>小练习</h3>
<p>使用import导入random模块。</p>
<p>使用该模块下的random()函数,生成一个0到1之间的随机浮点数,并使用print()将结果输出。</p>
<pre><code class=“language-python”>import random
print(random.random())</code></pre>
<p>获取今天日期的年份,并判断跟实际今年的年份(2022)是否相等。相等输出True,不相等输出False。</p>
<pre><code class=“language-python”>import datetime
today = datetime.date.today()
year = today.year
print(year == 2022)</code></pre>
<p>不难看出,一个模块是由很多类和函数组成的。</p>
<p>有时候只想导入<code>(import)</code>模块里面的一部分内容,可能是一个类或是一个函数。 比如,我们只希望导入<code>datetime</code>模块中的<code>date</code>类。</p>
<p>这时候,就可以用到 <code>from…import…</code> 。</p>
<h2>导入模块(II)</h2>
<pre><code class=“language-python”>from datetime import date
todayDate = date.today()
print(todayDate)</code></pre>
<p><strong>两个关键字</strong>
第一个关键字<code>from</code>允许我们从模块中导入一个指定的部分。</p>
<p>这两个关键字,表明从<code>datetime</code>模块里导入<code>date</code>类。
<img src=“https://assets.moshanghua.net/images/2022/08/msh-2605-11.png” alt=“” /></p>
<p><strong>模块的名称</strong>
一个名为<code>datetime</code>的模块,表示要从该模块中导入某个类。
<img src=“https://assets.moshanghua.net/images/2022/08/msh-2605-12.png” alt=“” /></p>
<p><strong>一个类</strong>
一个类,表明我们要调用的<code>date</code>类属于<code>datetime</code>模块。
<img src=“https://assets.moshanghua.net/images/2022/08/msh-2605-13.png” alt=“” /></p>
<p><strong>date类里面的某一个方法</strong>
一个方法,表明我们要调用的<code>today()</code>从属于<code>date</code>类。</p>
<p>可以看到,使用<code>from…import…</code>这种形式时,调用<code>datetime</code>模块中的类或函数时<strong>不需要datetime.前缀</strong>。
<img src=“https://assets.moshanghua.net/images/2022/08/msh-2605-14.png” alt=“” /></p>
<p><strong>代码小结</strong>
当我们只想导入模块里面的一部分内容时,就可以使用这样的格式:
<img src=“https://assets.moshanghua.net/images/2022/08/msh-2605-15.png” alt=“” /></p>
<h2>第三方模块</h2>
<p>学习了导入模块的两种方式,但是导入的都是内置模块。这些模块是Python自带的,具有较高的通用性。</p>
<p>除此之外,我们还会接触到许多的<strong>第三方模块</strong>。这些非内置的模块由其他的开发者所编写,提供给公众免费使用,功能更加个性化。可以从<a href=“https://pypi.org/”>Python Package Index</a>上找到自己需要的模块。</p>
<p>内置模块可以直接导入后使用,而<strong>非内置的模块则需要先进行安装</strong>,然后才能导入使用。
<img src=“https://assets.moshanghua.net/images/2022/08/msh-2605-16.png” alt=“” /></p>
<h2>安装模块</h2>
<p>为了安装第三方模块,需要一个叫作 pip 的工具。</p>
<p>在安装Python环境的时候,pip工具已经随着一起自动安装了,现在可以直接在电脑上使用pip工具来安装第三方模块。</p>
<p>安装第三方模块的方式在不同的电脑系统上略微有些不同</p>
<h3>Windows</h3>
<p>要使用pip工具安装第三方模块,需要在Windows的命令提示符里进行。</p>
<p>可以使用以下两种方式打开命令提示符:</p>
<ol>
<li>在电脑左下角「开始菜单」旁的搜索栏里输入<code>cmd</code></li>
<li>同时在键盘上按下快捷键<code>WIN</code>和<code>R</code>,在运行框里输入<code>cmd</code>。</li>
</ol>
<p><img src=“https://assets.moshanghua.net/images/2022/08/msh-2605-17.png” alt=“” /></p>
<p>打开一个Windows命令提示窗口,就可以开始安装第三方模块了。</p>
<p>只需要在命令提示符的窗口里,使用 <code>pip3 install「ModuleName」</code>命令。这里,<code>「ModuleName」</code>是你所选择的模块的名称。</p>
<p><img src=“https://assets.moshanghua.net/images/2022/08/msh-2605-18.png” alt=“” /></p>
<p>假如我们想制作一个可交互的柱状图,可以通过第三方模块 <code>pyecharts</code>,该模块是一个强大的数据可视化工具。</p>
<p>直接在终端中输入:<code>pip3 install pyecharts==1.8.1</code> ,然后敲击回车键,就能进行安装。</p>
<p>这里由于<code>pyecharts</code>的特殊性,在安装时要指定版本<code>1.8.1</code>,而其它大多数模块都可以直接使用模块名安装。</p>
<p>如果在自己电脑上安装不上或安装缓慢,可在命令后添加如下配置进行加速:<strong>-i <a href=“https://pypi.tuna.tsinghua.edu.cn/simple/”>https://pypi.tuna.tsinghua.edu.cn/simple/</a></strong></p>
<pre><code>pip3 install pyecharts==1.8.1 -i https://pypi.tuna.tsinghua.edu.cn/simple/</code></pre>
<p><img src=“https://assets.moshanghua.net/images/2022/08/msh-2605-19.ppng” alt=“” /></p>
<p>点击回车后,会出现很多的安装信息。当看到<code>「Successfully installed…」</code>或显示<code>「Requirement already satisfied」</code>的时候,说明模块已经安装成功。</p>
<p>可能会遇到黄色的警告,这是在提示需要升级<code>pip</code>工具。可以选择忽视,也可以按照指示在终端中输入<code>「pip install --upgrade pip」</code>进行升级。</p>
<p>安装过程如图所示。
<img src=“https://assets.moshanghua.net/images/2022/08/msh-2605-20.png” alt=“” /></p>
<h3>macOS</h3>
<p>要使用pip工具安装第三方模块,需要在macOS的终端里进行。</p>
<p>我们可以点击「启动台」后,在上方的搜索栏里输入<strong>终端</strong>,然后打开即可。
<img src=“https://assets.moshanghua.net/images/2022/08/msh-2605-21.png” alt=“” /></p>
<p>打开终端窗口,就可以开始安装第三方模块了。</p>
<p>只需要在终端窗口里,使用 <code>pip3 install「ModuleName」</code>命令。这里,<code>「ModuleName」</code>是你所选择的模块的名称。
<img src=“https://assets.moshanghua.net/images/2022/08/msh-2605-22.png” alt=“” /></p>
<p>假如我们想制作一个可交互的柱状图,就可以通过第三方模块 <code>pyecharts </code>来完成。</p>
<p>直接在终端中输入:<code>pip3 install pyecharts==1.8.1</code> ,然后敲击回车键,就能进行安装。</p>
<p>这里由于<code>pyecharts</code>的特殊性,在安装时要指定版本<code>1.8.1</code>,而其它大多数模块都可以直接使用模块名安装。</p>
<p>如果在自己电脑上安装不上或安装缓慢,可在命令后添加如下配置进行加速:</p>
<pre><code>pip3 install pyecharts==1.8.1 -i https://pypi.tuna.tsinghua.edu.cn/simple/</code></pre>
<p><img src=“https://assets.moshanghua.net/images/2022/08/msh-2605-23.png” alt=“” /></p>
<p>点击回车后,会出现很多的安装信息。当看到<code>「Successfully installed…」</code>的时候,说明模块已经安装成功。
安装过程如图所示。
<img src=“https://assets.moshanghua.net/images/2022/08/msh-2605-24.png” alt=“” /></p>
<h3>示例</h3>
<p>安装成功后,就可以关闭当前窗口,回到编辑器里使用该模块来绘制柱状图了。和内置模块一样,我们需要导入模块。
<img src=“https://assets.moshanghua.net/images/2022/08/msh-2605-25.png” alt=“” /></p>
<p>第一行代码:
使用 <code>pyecharts.charts</code> 的方式,访问了<code>pyecharts</code>模块里的子模块<code>charts</code>。
然后,通过<code>from…import…</code>,从<code>pyecharts</code>模块的子模块<code>charts</code>里导入了<code>Bar</code>类。
<img src=“https://assets.moshanghua.net/images/2022/08/msh-2605-26.png” alt=“” /></p>
<p>第二行代码:
使用<code>from…import…</code>,从<code>pyecharts</code>模块中,导入子模块<code>options</code>,并将其简写为了<code>opts</code>。</p>
<p>这里,<code>import…as…</code>是用于在导入一个模块的同时,为该模块取一个别名。</p>
<p>这是为了之后在代码中使用该模块时能更加方便,不用再通过options调用,可以直接通过opts。
<img src=“https://assets.moshanghua.net/images/2022/08/msh-2605-27.png” alt=“” /></p>
<p>导入完成后,我们就可以通过这些模块,绘制出一个可交互的柱状图啦。</p>
<pre><code class=“language-python”>from pyecharts.charts import Bar
from pyecharts import options as opts
bar = Bar()
bar.add_xaxis(["衬衫", "毛衣", "领带", "裤子", "风衣", "高跟鞋", "袜子"])
bar.add_yaxis("商家A", [114, 55, 27, 101, 125, 27, 105])
bar.add_yaxis("商家B", [57, 134, 137, 129, 145, 60, 49])
bar.set_global_opts(title_opts=opts.TitleOpts(title="某商场销售情况"))
bar.render("bar.html")</code></pre>
<p><img src=“https://assets.moshanghua.net/images/2022/08/msh-2605-28.png” alt=“” /></p>
<h3>小练习</h3>
<p><strong>引入math模块</strong>
使用import来导入内置模块:math,该模块提供了大量的数学运算函数。</p>
<p>导入模块后,完成以下两个操作:</p>
<ol>
<li>通过math模块内 sqrt() 函数,输出99的开平方结果;</li>
<li>通过math模块内 fabs() 函数,输出-0.03的绝对值。</li>
</ol>
<pre><code class=“language-python”>import math
print(math.sqrt(99))
print(math.fabs(-0.03))</code></pre>
<p><strong>计算平均值</strong>
statistics是Python中的一个数学统计模块。</p>
<p>使用statistics.mean()可以计算出一个列表的平均值,只需要将列表传入到括号中即可。</p>
<p>使用import导入statistics模块,并定义一个列表numList = [10, 99, 78, 50]。使用statistics.mean()计算该列表的平均值,并输出。</p>
<pre><code class=“language-python”>import statistics
numList = [10,99,78,50]
print(statistics.mean(numList))</code></pre>
<p><strong>from…import…</strong>
使用from…import…来完成上一道题目</p>
<p>定义一个numList = [10, 99, 78, 50],使用statistics模块下的mean()来计算该列表的平均值,并输出。</p>
<pre><code class=“language-python”>from statistics import mean
numList = [10,99,78,50]
print(mean(numList))</code></pre>

评论区
感谢分享,赞一个
WindowsChrome
看不懂啊,深奥
WindowsChrome
没有没有,接触的东西不一样啦
WindowsFirefox
6点钟怎么冲出来一篇文章,真捞![wangwang]
WindowsChrome
卷不动[wulian]
WindowsFirefox
卷啊[jingya]
macOSChrome
有这回事嘛,啥也不记得了[pp-泪]
WindowsFirefox
然后vx也不理我,捞人!
WindowsChrome
然后vx也不理我!捞人!
WindowsChrome
这不那天下班早,又不能直接睡觉,然后就[xieyanxiao]
WindowsFirefox