硬核王同学 发表于 2024-7-25 16:03

一起读《机器学习算法与实现 —— Python编程与应用实例》- 第2章 Python语言

<div class='showpostmsg'><p>学编程的应该都学过Python吧,可谓是最实用的语言了。但是为什么机器学习选择了Python语言,而不去选择其他语言呢?还有Python语言我们都应该掌握哪些基础呢?想知道这些问题,那我们这章,就跟随布树辉老师一起来学习下Python!</p>

<p>&nbsp;</p>

<p>配套学习资源:</p>

<p>在线视频:<a href="https://www.bilibili.com/video/BV1oZ4y1N7ei/?p=9" target="_blank">https://www.bilibili.com/video/BV1oZ4y1N7ei/?p=9</a></p>

<p>讲义:<a href="https://gitee.com/pi-lab/machinelearning_notebook" target="_blank">https://gitee.com/pi-lab/machinelearning_notebook</a></p>

<p>&nbsp;</p>

<h1>一、为什么选择Python</h1>

<p>Python的设计哲学是优雅、明确、简单,且与其他编程语言相比,初学者更容易上手。</p>

<p>Python是一种解释型的、高级的、通用的、面向对象的动态语言,主要特点包括:简单易用,学习成本低;拥有大量的标准库和第三方库;开源且免费试用。</p>

<p>Python拥有良好的生态、较低的学习门口、方便的开发体验,已成为大众最喜欢的语言之一。</p>

<p>&nbsp;</p>

<h1>二、安装Python环境</h1>

<p>由于Python的库较多,且依赖关系比较复杂,Python一般通过包管理系统来管理计算机中安装的Python软件包。目前,主要的包管理系统有pip和Anaconda。为了让初学者快速地使用Python,本书主要以Python为例介绍如何安装。</p>

<p>注意:本书的安装说明中有较多的细节,可能与读者的系统不适配,因此可能会遇到问题,遇到问题时,请通过搜索引擎查找解决办法,以提高自己解决问题的能力。</p>

<p>&nbsp;</p>

<h2>Windows安装</h2>

<p>这里我只例举Windows下的安装:</p>

<p>由于网络下载速度较慢,因此推荐使用镜像来提高下载的速度。镜像的使用方法可以参考:<a href="https://gitee.com/link?target=https%3A%2F%2Fmirrors.bfsu.edu.cn%2Fhelp%2Fanaconda%2F">Anaconda镜像的说明文档</a></p>

<ol start="1">
        <li data-list="number">
        <p>在下列镜像网站找到适合自己的安装文件,然后下载</p>
        </li>
</ol>

<ul start="1">
        <li data-list="bullet">
        <p><a href="https://gitee.com/link?target=https%3A%2F%2Fmirrors.bfsu.edu.cn%2Fanaconda%2Farchive%2F">https://mirrors.bfsu.edu.cn/anaconda/archive/</a></p>
        </li>
        <li data-list="bullet">
        <p><a href="https://gitee.com/link?target=https%3A%2F%2Fmirrors.tuna.tsinghua.edu.cn%2Fanaconda%2Farchive%2F">https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/</a></p>
        </li>
        <li data-list="bullet">
        <p><a href="https://gitee.com/link?target=https%3A%2F%2Fmirrors.aliyun.com%2Fanaconda%2Farchive%2F">https://mirrors.aliyun.com/anaconda/archive/</a></p>
        </li>
        <li data-list="bullet">
        <p><a href="https://gitee.com/link?target=https%3A%2F%2Fmirrors.hit.edu.cn%2Fanaconda%2Farchive%2F">https://mirrors.hit.edu.cn/anaconda/archive/</a></p>
        </li>
</ul>

<p>例如: <a href="https://gitee.com/link?target=https%3A%2F%2Fmirrors.bfsu.edu.cn%2Fanaconda%2Farchive%2FAnaconda3-2020.11-Windows-x86_64.exe">https://mirrors.bfsu.edu.cn/anaconda/archive/Anaconda3-2020.11-Windows-x86_64.exe</a></p>

<ol start="2">
        <li data-list="number">
        <p>按照说明,把Anaconda安装好。</p>
        </li>
</ol>

<p>登录anaconda的官网下载,anaconda是一个集成的工具软件不需要我们再次下载。</p>

<p><a href="https://www.anaconda.com/">anaconda官网</a></p>

<p>&nbsp; &nbsp;</p>

<p>输入你的邮箱注册</p>

<p> &nbsp;&nbsp;</p>

<p>点击立即下载,选择windows版本</p>

<p></p>

<p>直接双击安装,下一步就好了。</p>

<p> &nbsp;</p>

<p> &nbsp;</p>

<p> &nbsp;</p>

<p>windows搜索框里找一下anaconda prompt</p>

<p> &nbsp;</p>

<p>打开,出现(base),安装成功。</p>

<p> &nbsp;</p>

<p>&nbsp;</p>

<h2>设置软件源</h2>

<p>各系统都可以通过修改用户目录下的<span style="background-color: rgb(250, 250, 250); color: rgb(56, 58, 66); font-family: &quot;Source Code Pro&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Ubuntu Mono&quot;, &quot;Anonymous Pro&quot;, &quot;Droid Sans Mono&quot;, Menlo, Monaco, Consolas, Inconsolata, Courier, monospace, &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, sans-serif; font-size: 12px;">.condarc</span>文件。</p>

<p>Windows 用户无法直接创建名为<span style="background-color: rgb(250, 250, 250); color: rgb(56, 58, 66); font-family: &quot;Source Code Pro&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Ubuntu Mono&quot;, &quot;Anonymous Pro&quot;, &quot;Droid Sans Mono&quot;, Menlo, Monaco, Consolas, Inconsolata, Courier, monospace, &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, sans-serif; font-size: 12px;">.condarc</span>的文件,可先执行<span style="background-color: rgb(250, 250, 250); color: rgb(56, 58, 66); font-family: &quot;Source Code Pro&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Ubuntu Mono&quot;, &quot;Anonymous Pro&quot;, &quot;Droid Sans Mono&quot;, Menlo, Monaco, Consolas, Inconsolata, Courier, monospace, &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, sans-serif; font-size: 12px;">conda config --set show_channel_urls yes</span>生成该文件之后再修改。然后在命令行输入<span style="background-color: rgb(250, 250, 250); color: rgb(56, 58, 66); font-family: &quot;Source Code Pro&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Ubuntu Mono&quot;, &quot;Anonymous Pro&quot;, &quot;Droid Sans Mono&quot;, Menlo, Monaco, Consolas, Inconsolata, Courier, monospace, &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, sans-serif; font-size: 12px;">notepad .condarc</span>将下面的内容拷贝到文本编辑器里面。</p>

<pre>
<code>channels:
- defaults
show_channel_urls: true
default_channels:
- https://mirrors.bfsu.edu.cn/anaconda/pkgs/main
- https://mirrors.bfsu.edu.cn/anaconda/pkgs/r
- https://mirrors.bfsu.edu.cn/anaconda/pkgs/msys2
custom_channels:
conda-forge: https://mirrors.bfsu.edu.cn/anaconda/cloud msys2:https://mirrors.bfsu.edu.cn/anaconda/cloud
bioconda: https://mirrors.bfsu.edu.cn/anaconda/cloud
menpo: https://mirrors.bfsu.edu.cn/anaconda/cloud
pytorch: https://mirrors.bfsu.edu.cn/anaconda/cloud
pytorch-lts: https://mirrors.bfsu.edu.cn/anaconda/cloud
simpleitk: https://mirrors.bfsu.edu.cn/anaconda/cloud</code></pre>

<p>&nbsp;</p>

<h2>设置pip源</h2>

<pre>
<code> pip config set global.index-url https://pypi.mirrors.ustc.edu.cn/simple/</code></pre>

<p>&nbsp;</p>

<h2>新建conda环境</h2>

<pre>
<code> conda create -n machinelearning python=3.9</code></pre>

<p>&nbsp;</p>

<h2>安装常用Python库</h2>

<pre>
<code>conda install jupyter scipy numpy sympy matplotlib pandas scikit-learn</code></pre>

<p>&nbsp;</p>

<h2>安装PyTorch</h2>

<p>GPU 版本</p>

<pre>
<code> # 访问 https://pytorch.org/,查最新的安装命令
# 例如 pytorch-cuda=11.6
# 安装cudatoolkitconda
install cudatoolkit
# 安装最新版本
conda install pytorch torchvision torchaudio pytorch-cuda -c pytorch -c nvidia
# 安装特定版本
#conda install pytorch torchvision torchaudio pytorch-cuda=11.6 -c pytorch -c nvidia</code></pre>

<p>CPU 版本</p>

<pre>
<code>conda install pytorch -c pytorch
pip3 install torchvision</code></pre>

<p>检测GPU是否在PyTorch中可用:</p>

<pre>
<code>python
&gt;&gt;&gt; import torch
&gt;&gt;&gt; torch.cuda.is_available()</code></pre>

<p>&nbsp;</p>

<h2>Conda使用技巧</h2>

<p><strong>Conda创建自己的环境</strong></p>

<pre>
<code>conda create -n &lt;your_env&gt; python=x.x
# exampleconda create -n machinelearning python=3.9</code></pre>

<p>上面的<span style="background-color: rgb(250, 250, 250); color: rgb(56, 58, 66); font-family: &quot;Source Code Pro&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Ubuntu Mono&quot;, &quot;Anonymous Pro&quot;, &quot;Droid Sans Mono&quot;, Menlo, Monaco, Consolas, Inconsolata, Courier, monospace, &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, sans-serif; font-size: 12px;">python=x.x</span>中的<span style="background-color: rgb(250, 250, 250); color: rgb(56, 58, 66); font-family: &quot;Source Code Pro&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Ubuntu Mono&quot;, &quot;Anonymous Pro&quot;, &quot;Droid Sans Mono&quot;, Menlo, Monaco, Consolas, Inconsolata, Courier, monospace, &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, sans-serif; font-size: 12px;">x.x</span>对应自己系统中的Python版本</p>

<p>&nbsp;</p>

<p><strong>Conda怎么激活自己的环境</strong></p>

<pre>
<code>conda activate &lt;your_env&gt;
# example conda activate machinelearning</code></pre>

<p>&nbsp;</p>

<p><strong>Conda常用命令</strong></p>

<pre>
<code># 帮助命令
conda -h
conda help
# 配置频道(已有)
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/pkgs/main/
# 退出当前环境
conda deactivate
# 克隆环境
conda create -n BBB --clone AAA
# 查看基本信息
conda infoconda info -h
# 查看当前存在环境
conda env listconda info --envs
# 删除环境
conda remove -n &lt;your_env&gt; --all</code></pre>

<p>&nbsp;</p>

<h1>三、Jupyter Notebook</h1>

<p>本在线讲义使用Jupyter Notebook编写,因此首先介绍Jupter Notebook的使用方法。使用Notebook,可以方便的将理论描述、程序、数据可视化等集成在一个多媒体页面,方便大家的学习。</p>

<p>Jupyter notebook 是一种 Web 应用,它能让用户将说明文本、数学方程、代码和可视化内容全部组合到一个易于共享的文档中,非常方便研究和教学,让编写、阅读变得一目了然。Jupyter notebook特别适合做科学计算、数据处理,其用途可以包括数据清理和探索、可视化、机器学习和大数据分析。</p>

<p>&nbsp;</p>

<h2>Jupyter 安装</h2>

<p>安装Jupyter最简单的方法就是使用 Anaconda,其发行版附带了 Jupyter Notebook。在 conda 环境下安装 Jupyter Notebook 可以使用</p>

<pre>
<code>conda install jupyter</code></pre>

<p>当然,也可以通过<span style="background-color: rgb(250, 250, 250); color: rgb(56, 58, 66); font-family: &quot;Source Code Pro&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Ubuntu Mono&quot;, &quot;Anonymous Pro&quot;, &quot;Droid Sans Mono&quot;, Menlo, Monaco, Consolas, Inconsolata, Courier, monospace, &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, sans-serif; font-size: 12px;">pip</span>来安装</p>

<pre>
<code>pip install jupyter</code></pre>

<p>安装后便可在终端中输入以下命令启动:</p>

<pre>
<code># jupyter notebook
或者
# jupyter-notebook</code></pre>

<p> &nbsp;</p>

<h2>&nbsp;</h2>

<h2>常用操作</h2>

<p> &nbsp;</p>

<p>点击右上角的新建一个文件</p>

<p> &nbsp;</p>

<p>输入以下代码</p>

<pre>
<code>print("Hello Machine Learning!")</code></pre>

<p>ctrl+Enter运行后可看到打印如下</p>

<p> &nbsp;</p>

<p>ctrl+s保存</p>

<p>&nbsp;</p>

<h1>四、Python基础</h1>

<p>可能很多人都已经学习过Python,我们这里就做一个复习,如果有不会的部分,可以在网上搜索自学!</p>

<p>这里把布树辉老师的学习讲义放到这里,方便初学者学习:<a href="https://gitee.com/pi-lab/machinelearning_notebook/blob/master/0_python/1_Basics.ipynb" target="_blank">https://gitee.com/pi-lab/machinelearning_notebook/blob/master/0_python/1_Basics.ipynb</a></p>

<p>&nbsp;</p>

<h2>导入库与Python之禅</h2>

<pre>
<code> #导入库
import os
os.listdir('.')</code></pre>

<p>&nbsp;</p>

<h2>变量</h2>

<p>用于表示某个对象或值的名称成为变量。</p>

<p>&nbsp;</p>

<h2>运算符</h2>

<p>1.算术运算符</p>

<p>算术运算符即数学运算符,用来对数字进行数学运算,如加、减、乘、除。</p>

<p>&nbsp;</p>

<p>2.关系运算符</p>

<p>关系运算符也称比较运算符,用于对常量、变量或表达式的结果进行大小比较。</p>

<p>&nbsp;</p>

<h2>内置函数</h2>

<p>1.range()函数</p>

<p>range()函数输出指定范围内的整数。他还可通过指定特定范围内的两个数字之差来生成一个序列,元素以迭代容器的形式返回。</p>

<p>&nbsp;</p>

<p>2.int()函数</p>

<p>int()函数将字符串或浮点数转换为整数。他有两个参数输入,一个是不同数字系统中的值,另一个是它的基数。</p>

<p>类似的函数还有用于转换为二进制数的bin()、用于转换为浮点数的float()、返回值是当前整数对应的ASCII字符的chr()、用于获得字符的ASCII值的ord().</p>

<p>&nbsp;</p>

<p>3.round()函数</p>

<p>round()函数将输入值四舍五入为指定的位数和最接近的整数。</p>

<p>&nbsp;</p>

<p>4.type()函数与isinstance()函数</p>

<p>由于Python是脚本语言,变量的类型不需要事先定义,所以有时候需要判断变量的类型,这就要用到类型判断函数type(),该函数返回给定变量的类型。另外一个判断类型的函数是isinstance()函数,它判断给定的变量是否是给定的类型,若是,则返回True;这个函数还可同时检查多个类型。</p>

<p>&nbsp;</p>

<h1>五、print()函数</h1>

<p>print()函数是Python的内置函数,照顾要用于打印变量的值。</p>

<p>&nbsp;</p>

<p>在Python中,单引号(&lsquo;)、双引号(&ldquo;&rdquo;)和三引号(&ldquo;&rdquo;&ldquo;)用于表示字符串。</p>

<ul start="1">
        <li data-list="bullet">
        <p>大部分情况下单引号用于声明一个字符。</p>
        </li>
        <li data-list="bullet">
        <p>声明一行时使用双引号,声明段落/多行时使用三引号。</p>
        </li>
</ul>

<p>%s用于引用包含字符串的变量。</p>

<p>&nbsp;</p>

<h1>六、数据结构</h1>

<p>数据结构是计算机存储、组织数据的方式,简单来说是指相互之间存在一种或多种特定关系的数据元素的集合。</p>

<p>Python中的数据结构设计的非常巧妙,使用起来非常方便,几乎绝大多数的数据结构都可以通过<span style="background-color: rgb(250, 250, 250); color: rgb(56, 58, 66); font-family: &quot;Source Code Pro&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Ubuntu Mono&quot;, &quot;Anonymous Pro&quot;, &quot;Droid Sans Mono&quot;, Menlo, Monaco, Consolas, Inconsolata, Courier, monospace, &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, sans-serif; font-size: 12px;">list</span>,<span style="background-color: rgb(250, 250, 250); color: rgb(56, 58, 66); font-family: &quot;Source Code Pro&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Ubuntu Mono&quot;, &quot;Anonymous Pro&quot;, &quot;Droid Sans Mono&quot;, Menlo, Monaco, Consolas, Inconsolata, Courier, monospace, &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, sans-serif; font-size: 12px;">tuple</span>,<span style="background-color: rgb(250, 250, 250); color: rgb(56, 58, 66); font-family: &quot;Source Code Pro&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Ubuntu Mono&quot;, &quot;Anonymous Pro&quot;, &quot;Droid Sans Mono&quot;, Menlo, Monaco, Consolas, Inconsolata, Courier, monospace, &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, sans-serif; font-size: 12px;">dict</span>,<span style="background-color: rgb(250, 250, 250); color: rgb(56, 58, 66); font-family: &quot;Source Code Pro&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Ubuntu Mono&quot;, &quot;Anonymous Pro&quot;, &quot;Droid Sans Mono&quot;, Menlo, Monaco, Consolas, Inconsolata, Courier, monospace, &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, sans-serif; font-size: 12px;">string</span>,<span style="background-color: rgb(250, 250, 250); color: rgb(56, 58, 66); font-family: &quot;Source Code Pro&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Ubuntu Mono&quot;, &quot;Anonymous Pro&quot;, &quot;Droid Sans Mono&quot;, Menlo, Monaco, Consolas, Inconsolata, Courier, monospace, &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, sans-serif; font-size: 12px;">set</span>等表示,因此用户几乎不需要自己定义数据结构,仅仅使用Python内置的数据结构即可实现非常复杂的算法和操作。</p>

<p>&nbsp;</p>

<h2>列表</h2>

<p>列表是最常用的数据结构,可以把它看作用方括号括起来的数据序列,数据之间用逗号分隔。这些数据都可以通过调用其索引值来访问。</p>

<p>1.1 索引</p>

<p>1.2 切片</p>

<p>1.3 列表的内置函数</p>

<p>1.4 复制一个列表</p>

<p>&nbsp;</p>

<h2>元组</h2>

<p>元组与列表相似,但唯一大的区别是列表中的元素可以更改,而元组中的元素不能更改。</p>

<p>2.1 将一个元组映射到另一个元组</p>

<p>2.2 元组内置函数</p>

<p>&nbsp;</p>

<h2>集合</h2>

<p>集合主要用于消除序列/列表中的重复数字。它还用于执行一些标准的集合操作。</p>

<p>3.1 内置函数</p>

<p>&nbsp;</p>

<h2>字符串</h2>

<p>字符串是基于文本的有序数据,用单/双/三重引号括起来表示。</p>

<p>4.1 内置函数</p>

<p>&nbsp;</p>

<h2>词典</h2>

<p>词典更像数据库,因为在这里你可以用用户定义的字符串索引特定的序列。</p>

<p>5.1 内置函数</p>

<p>&nbsp;</p>

<h1>七、控制流语句</h1>

<p>一般情况下,程序按照语句编写顺序依次执行,形成标准的面向过程的结构化形式。然而,由于程序具有很强的逻辑性,有时需要根据某些条件选择性地执行某些语句或者跳过某些语句。控制流语句用于控制程序流程的选择、循环、转向、和返回等,以实现程序的各种结构。Python的流程控制语句和其他语言类似,如C语言。</p>

<p>&nbsp;</p>

<h2>判断语句</h2>

<p>1.1 If</p>

<p>1.2 If-else</p>

<p>1.3 if-elif</p>

<p>&nbsp;</p>

<h2>循环语句</h2>

<p>2.1 for</p>

<p>2.2while</p>

<p>2.3break</p>

<p>2.4continue</p>

<h3>列表推导(List Comprehensions)</h3>

<p>Python可以使用列表推导模式,用一行代码就可以很容易地生成所需的列表。</p>

<p>&nbsp;</p>

<h1>八、函数</h1>

<p>在大部分时候,在一个算法中,需要重复执行一组语句,如果每次都重复写出来,不仅乏味而且编程效率比较低,降低程序的可读性。为了将重复的执行抽象出来,可使用函数将一组操作封装成一个整体,给一个名称和参数列表作为可变量的输入。</p>

<p>&nbsp;</p>

<h2>函数的参数</h2>

<p>定义一个函数<span style="background-color: rgb(250, 250, 250); color: rgb(56, 58, 66); font-family: &quot;Source Code Pro&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Ubuntu Mono&quot;, &quot;Anonymous Pro&quot;, &quot;Droid Sans Mono&quot;, Menlo, Monaco, Consolas, Inconsolata, Courier, monospace, &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, sans-serif; font-size: 12px;">first_func()</span></p>

<pre>
<code>def first_func():
print("Hey Jack!")
print("Jack, How do you do?")</code></pre>

<pre>
<code>first_func()
funca=first_func
funca()</code></pre>

<blockquote data-type="quote_container">
<p>Hey Jack!</p>

<p>Jack, How do you do?</p>

<p>Hey Jack!</p>

<p>Jack, How do you do?</p>
</blockquote>

<p>first_func() 每一次只打印一个人的消息。我们可以让函数 first_func() 接受参数,该参数将存储名称然后打印相应地接受字符串。为了这样做,需要像所示的那样在函数内添加一个参数。</p>

<p>&nbsp;</p>

<h2>返回语句</h2>

<p>当函数产生某个值,并且该值必须存储在一个变量中,或者需要返回或返回给主算法进行进一步操作时,使用return语句。</p>

<p>&nbsp;</p>

<h2>默认参数</h2>

<p>当一个函数的参数在大多数情况下是常见的或者它是<span style="background-color: rgb(250, 250, 250); color: rgb(56, 58, 66); font-family: &quot;Source Code Pro&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Ubuntu Mono&quot;, &quot;Anonymous Pro&quot;, &quot;Droid Sans Mono&quot;, Menlo, Monaco, Consolas, Inconsolata, Courier, monospace, &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, sans-serif; font-size: 12px;">隐式的</span>时,使用这个概念。</p>

<p>&nbsp;</p>

<h2>任意数量的参数</h2>

<p>如果函数要接受的参数数量未知,则在参数前使用星号。</p>

<p>&nbsp;</p>

<h2>全局变量和局部变量</h2>

<p>在函数内部声明的变量是局部变量,生命周期限于函数执行期间;在函数外部声明的是全局变量。</p>

<p>&nbsp;</p>

<h2>lambda函数</h2>

<p>程序中有时需要临时使用一个简单的函数,单独定义出来比较费事,为了提高编程效率,Python等很多语言引入了<span style="background-color: rgb(250, 250, 250); color: rgb(56, 58, 66); font-family: &quot;Source Code Pro&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Ubuntu Mono&quot;, &quot;Anonymous Pro&quot;, &quot;Droid Sans Mono&quot;, Menlo, Monaco, Consolas, Inconsolata, Courier, monospace, &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, sans-serif; font-size: 12px;">Lambda</span>函数,这些Lambda函数没有使用任何名称定义,只携带一个表达式,返回的是函数本身(类似函数指针或者函数对象)。Lambda函数在操作列表时非常方便。这些函数由关键字lambda定义,后面跟着变量、冒号和相应的表达式。</p>

<p>&nbsp;</p>

<h1>九、类和对象</h1>

<p>&nbsp;</p>

<p>Python中的变量、列表、字典等在底层都是对象,对象是类的实列,而类是用来描述具有相同属性和方法的对象集,它定义集合中每个对象共有的属性和方法。</p>

<p>本节常见的定义和概念定义:</p>

<ul start="1">
        <li data-list="bullet">
        <p>类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例</p>
        </li>
        <li data-list="bullet">
        <p>对象(Object):通过类定义的数据结构实例(Instance),对象包括两类成员(类变量和实例变量)和方法。例如我们定义了一个<span style="background-color: rgb(250, 250, 250); color: rgb(56, 58, 66); font-family: &quot;Source Code Pro&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Ubuntu Mono&quot;, &quot;Anonymous Pro&quot;, &quot;Droid Sans Mono&quot;, Menlo, Monaco, Consolas, Inconsolata, Courier, monospace, &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, sans-serif; font-size: 12px;">Person</span>类,而具体的人,比如小明,小黄就是<span style="background-color: rgb(250, 250, 250); color: rgb(56, 58, 66); font-family: &quot;Source Code Pro&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Ubuntu Mono&quot;, &quot;Anonymous Pro&quot;, &quot;Droid Sans Mono&quot;, Menlo, Monaco, Consolas, Inconsolata, Courier, monospace, &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, sans-serif; font-size: 12px;">Person</span>类的实例</p>
        </li>
        <li data-list="bullet">
        <p>属性: 描述该类具有的特征,比如人类具备的属性,身份证,姓名,性别,身高,体重等等都是属性</p>
        </li>
        <li data-list="bullet">
        <p>方法: 该类对象的行为,例如这个男孩会打篮球,那个女孩会唱歌等等都是属于方法,常常通过方法改变一些类中的属性值</p>
        </li>
</ul>

<p>&nbsp;</p>

<h2>类</h2>

<h3>成员函数与变量</h3>

<p>类是现实事物的抽象表达,往往存在一些对内和对外的操作,即实现一些功能。这些功能一般代表类中的函数和变量,而类内的函数成为该类的&rdquo;方法&ldquo;,类中的变量成为属性。</p>

<p>&nbsp;</p>

<h3>继承</h3>

<p>继承是面向对象编程的一种重要方式,通过继承,子类可以扩展父类的功能。父类是继承的类,也称基类;子类是从另一个类继承的类,也称派生类。</p>

<p>&nbsp;</p>

<h1>总结</h1>

<p>本章讲述了Python的一些基础用法,通过学习,也应该初步掌握了Python,但这还远远不够,还需要大量的练习和调试,系统的地学习Python编程。我们暂时对Python的基础用法学习到这步,下面我们再一起学习一下Python的库!</p>

<p>&nbsp;</p>
</div><script>                                        var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;"   style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
                                       
                                        if(parseInt(discuz_uid)==0){
                                                                                                (function($){
                                                        var postHeight = getTextHeight(400);
                                                        $(".showpostmsg").html($(".showpostmsg").html());
                                                        $(".showpostmsg").after(loginstr);
                                                        $(".showpostmsg").css({height:postHeight,overflow:"hidden"});
                                                })(jQuery);
                                        }                </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>

Jacktang 发表于 2024-7-26 07:43

<p>学习Python编程,毕竟是一门语言,还需要大量的编程练习和调试,继续分享也是进步,期待</p>

chejm 发表于 2024-7-26 16:03

<p>楼主对python语言的基础知识进行了全面的总结,对python的初学者了解该语言有很大的帮助</p>

freebsder 发表于 2024-7-26 16:49

<p>前几天论坛里有个python的cheat sheet,很全面。</p>
页: [1]
查看完整版本: 一起读《机器学习算法与实现 —— Python编程与应用实例》- 第2章 Python语言