Commit e89e6983 by 靓靓

upload files

parent 013c25d6
# 电脑常识——开发者相关
# 电脑常识——开发者相关
## 操作系统篇
### windows操作系统和linux操作系统介绍
#### 什么是操作系统
你可以发现,你的手机上的软件、文件和电脑端的不完全通用,不同品牌的手机之间也不通用,例如苹果手机和华为手机,这就是因为手机和电脑使用了不同的操作系统。
常见的操作系统有:windows、安卓、ios、鸿蒙、linux、苹果的mac等。
linux操作系统是和windows不同的另一种开源操作系统,手机的安卓系统、ios、mac
## 概念介绍——操作系统
### 环境配置介绍
- 环境:编程时,代码只是一个文本文件。无论是代码编写过程中,还是代码执行过程中,都需要提供各种工具和资源。例如用色彩将语法高亮、方便的自动提示、语法纠错、将代码转换成程序的工具(编译器/解释器)、其他工具包及其路径与调用方法等。这些编写和执行代码所需的各种工具与资源比较笼统的统称为“环境”。
- 环境配置:配置(1)一个方便自己编写代码的环境(2)一个能让自己的代码跑起来的环境。
### shell:powershell和cmd
- cmd:全称command prompt,在一些电脑上显示的中文名为“命令提示符”。cmd源于早期DOS系统,功能原始简单但稳定可靠。
- powershell:推出于2006年,是cmd的升级版本(只要是cmd上能运行的指令powershell上都能运行),powershell功能更强,但由于更复杂所以也更容易报错。
- shell:cmd与powershell都是windows系统自带的shell。
- 不同操作系统拥有不同的shell,例如Bash是Linux中最常见的Shell。
- 由于兼容性和用户习惯等原因,windows在推出powershell之后并没有弃用cmd,因此windows操作系统目前同时存在两种shell。
- shell的别称:终端、prompt、命令行工具,这几个称呼是同义词。
- 在只涉及到基本功能时,powershell和cmd两者可以互换使用,区别不大。
小技巧:点击组合键win+r,输入cmd或powershell即可打开对应shell。
### 环境变量
#### 简介
- 环境变量可以看作在终端中启动其他程序的快捷方式,类似桌面上的快捷方式。
- 环境变量指定的如果是一个文件夹的目录,则表示将该文件夹内的所有可执行的文件加入环境变量。
- 将一个路径添加入环境变量,则使用powershell或cmd执行该路径内的程序时便不需要再指定路径,只需要输入文件名即可。
- shell在获得一个指令时会在所有环境变量的目录中搜索匹配,执行第一个搜索到的匹配项。(也就是即使存在多个匹配项也只会执行第一个匹配项)
- 注意环境变量与接下来要提到的环境配置、虚拟环境等概念不同,注意区分。
### 文件名后缀与文件类型介绍
#### 文件名后缀机制简介
- 操作系统的文件命名一般都带有后缀并根据后缀名来识别文件类型。这个机制目前所有设备的操作系统通用。
- 后缀的识别方式是由文件名的最后一个点“.”识别。比如.exe执行程序,.txt纯文本,jpg和png格式的图片,.mp3音频,.html网页。
- 早期的文件名后缀只支持三个字符,而现在可以支持更多字符,因此现在存在不同后缀名具有相同意义的情况:如`.hml``.html``.yml``.yaml`都是同类型的文件。
- 文件类型有时存在兼容情况,你可以尝试将一个.txt文件重命名为.html文件然后打开看看会发生什么事。
#### (可选)设置显示文件的后缀名
- windows操作系统一般默认隐藏文件名后缀,因此需要设置windows显示文件名后缀或直接在vscode中查看和设置文件名后缀。
- 推荐方法:在`windows设置->更新和安全->开发者选项->勾选显示文件扩展名和隐藏文件`这两项,可以顺便勾选最下方`更改执行策略,以允许本地powershell脚本在未签名的情况下运行`项。
- 或在`控制面板->外观和个性化->文件资源管理器/文件夹`选项中也可以寻找到。
#### 常见编程类文件格式
`.txt`是最基本的文本格式,代码和一些表格、文本数据集都可以用txt格式打开,即使它们不以`.txt`结尾。以下格式都可以用`.txt`格式打开:
- `.py`:python的代码文件
- `.ipynb`:jupyter文件,可以以代码块的形式分段执行代码、编辑或展示,适用于教学、做笔记、调试等场景。
- `.md`
markdown文件:很适合作为笔记的文件类型,经常被用作readme文件的格式。学习成本不到10分钟即可入门,强烈推荐在完成环境配置之后在jupyter插件中尝试一下。
- `.CSV`
表格类数据的常用格式,本质上是使用英文逗号“,”和换行符作为间隔符的纯文本文件,结构为行与列的表格,因此具有非常高的兼容性。既可以在excel表格编辑,也可以用txt的格式打开,还可以用pandas库直接读取和处理。
- `.json`
一种源于javascript的用于存储和读取文本信息的语法,由于易于人阅读和编写而受到追捧,目前已经成为C++、python等很多语言都支持的通用格式。
- `.yaml`
"Yet Another Markup Language"(仍是一种标记语言)和"YAML Ain't a Markup Language"(YAML不是一种标记语言)的递归缩写。
只不过是一种与.json格式功能类似,但语法不同的另一种格式。
`.json``.yaml`目前经常被用于存储各种配置文件和非表格类的文本类数据集,经常可以见到config.jsom或config.yaml等名称的文件(config:设置)。你可以通过以文本格式打开`.json``.yaml`文件查看内容。
上面这些文件格式也都是在深度学习环境中经常遇到的,粗略阅读留下一些印象会为未来的学习减少很多阻力。
# vscode、pycharm与jupyter介绍
# vscode、pycharm与jupyter介绍
## 深度学习的“开发环境”简介
- 我们使用的“开发环境”通常由两个部分组成:代码“编写”环境和代码“运行”环境。
- 我们“运行代码”使用的是“conda的虚拟环境”,“编写代码”使用的则是pycharm或vscode(二选一即可)
- “写代码”和“运行代码”是基本上互不干涉的两件事,只不过pycharm和vscode作为“集成”开发环境,均可以识别和调用conda的虚拟环境(或者python环境)执行代码。
- 如果没有conda,vscode和pycharm依然可以编写代码,但无法执行代码。
- 如果只有conda没有vscode或pycharm,则可以运行已有的代码,但不方便编写(代码作为纯粹的文本,仅用txt文档等工具也是可以编写的...但何必呢?)
## vscode与pycharm
- vscode与pycharm是同类产品,都属于IDE(集成开发环境,集成了一些方便写代码和调试代码的工具)。因此pycharm和vscode二选一即可。
- vscode与pycharm的功能基本相同,使用vscode与使用pycharm的用户共同工作时出现的沟通问题只有入门阶段的一些操作区别问题。
- vscode的特点是免费、轻量级、可高度自定义、多编程语言通用
- pycharm是python专用,只支持python一种语言,有免费版和付费版。
由于pycharm的内置jupyter和远程连接功能是付费功能,而同样的功能在vscode免费,因此本文档更推荐新人使用vscode作为推荐配置,但如果你已经熟悉pycharm也可以继续选择pycharm。
## jupyter
- jupyter是一个适用于代码展示和教学的工具,其基本功能为逐块运行代码和展示输出结果。
- jupyter也适用于书写笔记和分享。
- jupyter和vscode一样需要指定使用哪个conda的虚拟环境运行python代码。
- 为了让conda的虚拟环境能够“配合”jupyter,需要在虚拟环境中额外安装“ipykernel”库,(每个需要使用jupyter的虚拟环境都要安装一次)。
- jupyter既可以单独使用,也可以以插件的形式嵌入到vscode中(推荐后者)
## conda
conda负责运行代码的工作。
由于软件版本更新迭代和开发团队的不同、代码的重复利用等因素,导致不同的实际项目所需要的环境经常会出现“不兼容”的现象,因此基于实践经验找到的最优工作方式就是“每个软件项目都单独定制一个代码运行环境”。conda提供的功能就是“可以同时方便的维护多个不同的python代码的执行环境并使其互不影响”。
- 简单理解就是,运行代码的python解释器也需要安装类似“插件”的各种库增加对应的扩展功能。
- 这些“插件”由于来自不同的开发团队,混用起来容易出现各种逻辑上的冲突。
- 因此每个项目的执行环境都需要独立定制。
声明:这里的“插件”不是术语,是比喻,正式说法是“库”或“包”,但其实都是类似的东西。
## pytorch
pytorch是python的第三方库,也就是上文所说的类似“插件”一样的可以添加到python环境中的工具包,也是深度学习框架的核心软件包。
pytorch分为GPU版和CPU版。
- GPU(电脑显卡,也叫显示适配器)和CPU(中央处理器)都是电脑中负责运算工作的硬件。
- GPU版和CPU版分别调用电脑的GPU或CPU处理人工智能算法模型的各种相关运算任务。
- GPU版运算性能高,运算速度快,但GPU价格昂贵,不是所有电脑都具备使用GPU版pytorch的条件。
- 在实际需要时也可以租用云GPU服务器作为替代方案。
- CPU是电脑的核心硬件,是每台电脑都必须具备的硬件,因此所有计算机都支持CPU版。
关于pytorch的更多介绍会在windows深度学习环境搭建的步骤4中提到。
# 补充内容
# 补充内容
## python shell 与 python IDLE
在python或conda环境变量已经配置好并使用`conda activate xxx`激活了相应虚拟环境的前提下:
- python shell:在powershell中输入`python`运行即可开启python shell,能够按行执行python代码。开启标志:“>>>”符号。
- python IDLE:在powershell中输入`IDLE`运行即可开启python IDLE。这是python自带的极简版的代码编辑工具,小巧但功能简陋,我们安装vscode的就是python IDLE的上位替代。IDLE包含python shell。
- 安装并配置完conda后,使用上述指令进入的是当前激活的环境的python shell或IDLE。(中文名用户需要使用anaconda prompt而不是powershell)
## anaconda prompt 与anaconda powershell prompt
其实就是加载了conda配置的操作系统的shell,与添加了conda的环境变量后的powershell区别不大,不需要纠结是使用anaconda prompt还是powershell。
- anaconda prompt的主要存在意义就是中文名用户可以使用anaconda prompt正常配置环境,而无需配置powershell,虽然稍有不便但能用总比不能用强。
- 目前的视频课教程中使用的shell就是anaconda prompt。
## 使用cmd替代powershell
对我们来说,由于环境配置和维护不涉及到powershell的高级功能,如果powershell的使用过程出现难以解决的问题(罕见,但确实出现过这种情况),使用cmd作为替代也是一种可选的解决方案。
替换方法:
设置中搜索`terminal.integrated.defaultProfile.windows`项并改为`command prompt`
### 实用shell检查指令
```powershell
# 显示当前终端的环境变量
(type env:path) -split ';'
# 查找命令路径
where.exe powershell
where.exe cmd
where.exe python
where.exe conda
# 检查nvidia显卡信息
nvidia-smi
# 检查conda版本(注意V要大写)
conda -V
# 检查(当前激活环境的)python版本
python -V
```
上述指令对于powershell/cmd/anaconda prompt通用(中文名用户只建议在anaconda prompt中执行)
# conda常用指令说明
# conda常用指令说明
## 说明
conda的使用方法主要是在终端shell中输入指令进行。
本节内容列出了最常用的实用指令,主要用于查阅,极不建议背诵。
## 环境管理
创建环境
```powershell
conda create -n 环境名 #创建新的空环境
conda create -n 环境名 python=版本号 numpy scipy matplotlib pandas #创建指定版本的python环境,并安装指定包。
conda create -n 新环境名 --clone 旧环境名 #克隆一个环境,注意本命令执行速度很慢,请耐心等待,推荐手动复制一个环境并重命名
```
**注意:第一个指令创建环境时不包含python,但conda会在安装python包时自动安装python,所以很多人不知道这种情况,导致在conda与pip混用时如果在创建环境后直接使用pip安装包安装到base环境!使用pip前一定要给虚拟环境安装python!**
```powershell
# 列出环境
conda info --envs
# 或者
conda env list
# 激活与退出环境
conda activate 环境名 #激活环境
conda deactivate #退出环境
#删除环境
conda remove --name 环境名 --all
conda env remove -n 环境名
```
## 包管理
本节加入了pip指令以作为对比
列出当前环境中的包
```powershell
conda list
pip list
# 在当前环境安装包
conda install 包名,包名2,包名3 # 英文逗号分隔
pip install 包名 包名2 包名3 # 空格分隔
# 同时安装多个包可以同时处理多个包的冲突,是很推荐的做法。
conda install 包名=版本号
pip install 包名==版本号 # 注意pip需要两个等号
# 清理包缓存
conda clean --all
pip cache purge
# 使用requirements.txt文件安装包
conda install --file requirements.txt
pip install -r requirements.txt
# 讨厌conda每次都要输入y确认的话,可以直接在命令上增加`--yes`修饰,例如
conda install numpy --yes
# 检查环境中存在的冲突
pip check
```
## conda官方中文文档
更多命令请参阅:
<https://docs.conda.org.cn/projects/conda/en/stable/commands/index.html>
++ "b/\345\275\225\346\222\255/1-AI\346\226\260\346\211\213\346\235\221/1.2-Windows\346\234\272\345\231\250\345\255\246\344\271\240\347\216\257\345\242\203\346\220\255\345\273\272/windows\346\267\261\345\272\246\345\255\246\344\271\240\347\216\257\345\242\203\346\220\255\345\273\272.md"
# 操作系统调整
# 操作系统调整
## 中文用户名BUG
英文名用户可以跳过本节。
已知bug:
windows操作系统中conda+powershell+中文用户名的组合会由于中文字符问题导致conda无法正常使用。
这个组合是接下来环境配置需要用到的,为了避免出现不必要的麻烦,中文名用户需要在开始环境配置之前对该问题进行处理。
解决方法:
- 方案一:新建英文名的管理员账户安装和配置环境
- 特点:可彻底解决该问题,但操作繁琐。适合熟悉电脑的用户操作。
- 大致步骤:`找到账户设置->添加英文名新账户->给予管理员权限->重启登录新账户->(可选)备份文件并删除旧账户`,需要备份的是`C:\Users\旧用户名`文件夹。方法步骤不唯一。
- 更具体的操作步骤
- 左下角开始->设置->账户->家庭和其他账户->无视家庭成员、点击下方将其他人添加到这台电脑->输入英文用户名(可以不输入密码)->点击下一步直到完成创建->更改账户类型为管理员->注销或重启以登录新账户
- 在了解操作后果的前提下可以备份并删除旧帐户(可选操作,谨慎操作,不了解操作后果不建议进行删除操作,后果包括但不限于部分软件需在新账户重装、重新登录、重新设置、个人文件夹中保存的数据文档丢失等)。
- 使用控制面板或win+R打开运行->输入`netplwiz`进行设置也是可选方案
- (方案二经过测试,依然会出现其他非常麻烦的bug,文案暂时保留,但不推荐使用。)
- ~~方案二:使用anaconda prompt(cmd)作为默认shell~~
- ~~特点:操作简单保守,无其他副作用,但不排除使用其他软件时再次遇到中文bug,但日常使用时可能更不方便,推荐电脑个人数据较多或电脑小白选择方案二进行操作。~~
- ~~基本思路:不再配置powershell,改为使用`conda prompt`或cmd作为替代,并修改虚拟环境的保存路径为英文。~~
- ~~具体操作步骤~~
- ~~conda安装完成后立刻打开`anaconda prompt`并输入指令`conda config --add envs_dirs C:\my_conda_env`将创建虚拟环境的路径改为英文路径,这里的C盘路径可以自行修改为自己容量最大的盘。~~
- ~~后续所有遇到`powershell`字样的操作步骤全部改为使用`anaconda prompt`进行操作,并省掉`conda init`步骤。(中文路径不要使用conda init指令,会造成更多问题!)~~
- ~~补充:vscode安装成功后的后续优化操作~~
- ~~使用cmd作为vscode默认shell终端的方法:ctrl+,或点击左下角打开设置->搜索`terminal.integrated.defaultProfile.windows`->选择command prompt。~~
- ~~该方案理论上可以避免在使用vscode时频繁打开独立的`anaconda prompt`窗口~~
- 不建议直接修改用户名或其他方案,会造成更多的隐患和bug导致系统不稳定。
## 设置windows开发者选项
以下设置为推荐设置,会减少未来环境配置和代码学习时遇到问题的频率,特别推荐修改powershell安全策略和文件扩展名的设置。
1.`win`键、或开始菜单、或桌面空白处右键显示设置->左上角跳转到设置主页、或搜索栏搜索“设置”,总之找到设置选项。
2. 在windows设置页面搜索“开发者”、或点击`更新与安全->开发者选项`跳转到开发者选项。
3. 推荐勾选以下修改项
- 文件资源管理器
- 更改设置以显示文件扩展名——勾选
- 更改设置以显示隐藏文件和系统文件——勾选
- 更改设置以在标题栏中显示完整路径——勾选
- 远程桌面
- 按需修改
- powershell
- 更改执行策略,以允许本地powershell脚本在未签名的情况下运行。——勾选
- 如果不修改本项,则会在使用powershell环境执行conda指令时遇到麻烦。虽然可以使用`conda prompt`作为替代,但使用`powershell`更为灵活、便利和一劳永逸。
### 修改powershell安全策略的另一种方法
- 组合键`win+r`->输入`powershell`->使用`ctrl+shift+enter`以管理员权限打开->复制并执行指令:
```powershell
set-executionpolicy remotesigned
# 回车后输入A选择全是,并再次回车
```
# python环境配置基础
# python环境配置基础
## 什么是python
- “python”包含python语法,python解释器两种含义。
- python解释器也叫python内核,用于执行python代码。当我们提到“下载python”时,指代的就是python解释器。
- 当我们提到“编写python代码”或“学习python”时则是指代python语法。
### python的库
- 简介
- 库是一种为python提供更多功能的扩展组件,参考下方举例内容。
- Python的库分为内置库(python自带)与第三方库(需要下载)两种。
- 常见第三方库举例:
- torch(人工智能深度学习框架)
- numpy(高性能科学计算)
- pandas(数据预处理与数据清洗)
- matplotlib(科研、数据分析时常用的绘图库)
- seaborn(基于matplotlib的升级版数据可视化库)
- scikit-learn(机器学习算法库)
- 使用方法:使用import语句导入库,一般都写在.py文件的开头。
- 第三方库来源:任何人都可以编写和上传到pypi以供他人使用pip下载源下载。
- 下载方法:使用pip或conda,见下文。
- 一些相关的口语表达的说明:
- 库,包与模块的概念由于经常使用并且在不同场景、不同编程语言和框架具有不同意义,并且经常互相嵌套,因此这几个概念经常被混淆。例如“导包”、“导入库”、“导入模块”的意思常常不做区分,都理解为import操作即可。
- 其中,python官方文档中使用的是“包(pkg)”的概念,只要一个文件夹中具有__init__.py(注意这是一个文件名而不是一行代码)文件,这个文件夹就被python认为是一个包,可以使用import语句导入。
## 背景知识:环境冲突
- 由于第三方库的编写人员团队不同(命名相互冲突)、库的版本更新、第三方库编写时可能还会依赖另一些第三方库(存在依赖关系)、BUG的常见性等各种复杂原因,在python中安装过多库易导致不同的库之间产生冲突,最终会导致代码无法正常运行,并且难以解决。这种情况被称为环境冲突。
- 越是大型、复杂、时间跨度久的项目的环境版本越是容易出现环境冲突,越是要严格按照项目说明的要求仔细配置环境,特别是版本随便换,不能图方便。
## conda虚拟环境介绍
- conda可以方便的创建、检查、隔离多个python解释器来避免环境冲突。
- 这些被conda维护的多个python解释器也叫做“虚拟环境”,在vscode中也被称为“python内核”。
- 使用conda创建“虚拟环境”的最主要便利之处有两点
- 某个环境出问题时,不影响其他环境
- 某个环境出问题时,方便删掉。
## conda、pip与python功能与关系介绍
- conda的功能主要有两大块,一个是虚拟环境管理,一个是包管理。
- pip的功能主要是包管理
- conda的虚拟环境管理功能可以创建、管理、删除python虚拟环境。具体点就是每个虚拟环境中都包含一个python解释器,可以独立运行python代码。conda可以创建、管理和删除这些python解释器。
- 包管理就是对每个虚拟环境中的python第三方库,进行具体配置。
- conda,pip,python的包含关系:conda的每个虚拟环境都包含一个python副本,每个python副本都包含一个pip,即:conda包含python包含pip。
参考资料:
`https://docs.conda.org.cn/projects/conda/en/stable/commands/index.html#conda-vs-pip-vs-virtualenv-commands`
## 下载conda时的版本选择
conda分为anaconda与miniconda两种:
- anaconda内预装了许多用于科学计算和数据处理的常用库。
- miniconda仅包含conda基本功能,需要自己安装所需的库。
基于实际情况,人工智能的第三方库需求与anaconda的预装库并不契合,因此推荐使用miniconda。
## 安装conda需要下载python么
- 不建议conda和独立的python同时安装,避免conda自带的python和独立的python的环境变量出现冲突。
- 如已同时安装单独的python和conda,需要删去独立python的环境变量或将其顺序调整到底部从而避免conda的使用出现问题。
# conda 安装与配置
# conda 安装与配置
## 下载
基于网络原因,国内用户推荐使用国内镜像源下载,国外用户推荐官网下载。
```txt
国外推荐:
miniconda官网下载地址:
https://www.anaconda.com/download/success#miniconda
附:官网全版本下载列表:
https://repo.anaconda.com/miniconda/
国内推荐:
miniconda清华镜像源下载地址:
https://mirror.tuna.tsinghua.edu.cn/anaconda/miniconda/?C=M&O=D
注意:使用清华镜像源下载时留意conda版本,不要下载成2013年的古代版本。
```
## 安装
安装时的注意事项:
- 路径可以不放在C盘,但若你打算手动配置path则要记得安装路径。
- 个人用户推荐选择“just me”安装,“all user”选项会导致后续选项不会出现add path选项。
- add PATH选项默认没有勾选,下图不推荐的原因是可能会与电脑上其他自带的python发生冲突,无视并勾选即可。
- 其他选项随意,附选项页机翻。
![conda安装选项图](img/conda_select.png)
## 设置环境变量(安装时没勾add path的话就要补这一步)
首先打开高级系统设置中的环境变量
- 方法一:桌面->右键此电脑->属性->右侧高级系统设置->最下方环境变量
- 方法二:设置->左上角系统->关于->高级系统设置->环境变量
- 方法三:搜索栏搜索`path``编辑系统环境变量`
以上方法在各版本Windows操作系统上大致通用。
![打开环境变量编辑](img/path_config_1.png)
然后按照下图步骤添加下方的环境变量,推荐加到最上方,特别是要在windows自带的应用商店path和其他python之前(如果有)。
```txt
你的conda安装目录
你的conda安装目录\Library\mingw-w64\bin
你的conda安装目录\Library\usr\bin
你的conda安装目录\Library\bin
你的conda安装目录\Scripts
```
![环境变量配置步骤2](img/path_config_2.png)
![环境变量配置步骤3](img/path_config_3.png)
## 初始化
初次使用conda需要执行以下步骤:
```powershell
conda init
```
关闭并>>>**重启powershell窗口**<<<,行首显示`(base)`即表示已可正常使用conda。
重启powershell窗口时若出现报错:`powershell无法加载文件因为在此系统上禁止运行脚本`说明之前没有按照之前的章节修改powershell的安全策略。
修复方法:输入指令`set-executionpolicy remotesigned`并再次重启powershell窗口。
- 记得重启powershell
>记得重启powershell
## (可选)换源
国内用户由于网络原因需要额外进行镜像源配置以更换下载源,避免出现conda下载包时龟速下载和经常性下载失败。
**注:国外网络环境的用户可以跳过本节。**
依然是win+r -> 输入powershell并打开 -> 逐行输入以下命令完成换源:
>注:
>下方指令输入后不会有任何信息显示,是正常情况
>下方指令输入完成后,可以输入指令`conda config --show channels`进行确认镜像源的配置是否正确
>下方镜像源全部都要输入,而不是选择其中一个输入
>本节使用的国内镜像源为清华大学开源软件镜像站的conda软件仓库部分,关于该镜像源的更多信息可参考下方链接获取。
><https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/>
```powershell
# 推荐设置:下载包时显示所有镜像源
conda config --set show_channel_urls yes
# 以下为conda的清华镜像下载源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
```
注意:
- 清华源的官方文档中对pytorch源的配置方式有误,会导致无法正常下载pytorch,这里已修正,但依然会经常出现指定cuda版本却下载成CPU版本的情况。
- 因此conda换源只推荐用于安装CPU版的torch。
- 使用镜像源安装GPU版torch推荐使用pip,具体方法在torch安装教学中会提到。
相关链接:清华源官网anaconda说明页
```html
https://mirror.tuna.tsinghua.edu.cn/help/anaconda/
```
## (可选)修改虚拟环境和包缓存默认存储位置
C盘空间不足用户推荐修改虚拟环境的默认存储位置。
本节为可选项,请根据自身电脑存储情况选择性配置。
### 修改虚拟环境保存路径
新安装conda的用户使用`conda config --add envs_dirs D:\...(由你指定)`指令即可完成修改。
如果需要将旧环境迁移到新目录:
- 使用`conda config --show envs_dirs`指令显示所有设置的路径
- 使用`conda env list`显示所有环境和环境所在目录
- 根据上述信息,手动将旧路径的虚拟环境文件夹复制到新路径下。
- 少数情况下新建的环境依然在旧路径中,该问题的可能原因之一是conda版本低于24,先尝试更新conda为最新版本。如果更新后未能解决或无法更新conda,则只能手动迁移环境,并尝试使用`conda config --remove envs_dirs C:\...`指令删除其他路径。
注:powershell开启时显示的路径是工作目录路径,不是虚拟环境路径,不要混淆。
指令说明:
```powershell
conda env list # 显示已有的虚拟环境名及路径
# 老用户需要迁移已有的虚拟文件或包缓存可以先执行此指令获得虚拟环境位置,然后直接复制粘贴虚拟环境到新路径,conda会自动搜索和识别。
conda config --show envs_dirs # 显示所有默认虚拟环境保存路径
conda config --add envs_dirs D:\conda_env\envs # 增加一个虚拟环境路径
conda config --remove envs_dirs C:\... # 删除一个虚拟环境路径
conda create -n env_name --clone old_env_name
# 克隆环境,注意克隆指令速度极慢。本指令可作为手动复制虚拟环境的替代方案
# 另外从旧环境克隆到新环境时,新环境的保存位置和新建环境的位置相同,所以记得先执行--add的指令。
```
### 修改包缓存路径
- 包缓存一般没有保存的必要,可以先直接使用`conda clean --all`清理缓存而不必迁移。
- 与虚拟环境路径修改方法类似,只需将上述指令中的`envs_dirs`替换为`pkgs_dirs`即可。
## conda的使用
以上内容为conda的安装与配置内容,conda的日常使用指令和方法可以参考本页文档《conda使用手册》。
- 在进行步骤4之前,需要先根据该文档中的指令创建一个新环境并激活
# 下载与安装
# 下载与安装
在vscode官网寻找download按钮下载安装即可。
vscode的环境变量没有存在感不需要特别注意。
```powershell
# vscode官网:
https://code.visualstudio.com/
```
## 配置vscode
### 安装扩展插件
- 在vscode左侧边缘点击魔方图标,或者直接使用快捷键ctrl+shift+x打开扩展页面。
- 在最上方搜索栏输入Chinese,安装带有Microsoft认证的汉化插件(第一个应该就是)。安装后需要重启vscode生效。
- 输入python,安装python插件。
- 输入jupyter,安装jupyter插件。
- 可选:安装大模型插件,安装其中一个即可:
- Tencent Cloud AI Code Assistant腾讯云 AI 代码助手
- Baidu Comate文心快码
- TONGYI Lingma通义灵码
- ChatGPT GPT-4o
- Github Copilot
- ······
### 推荐优化项:修改使用vscode时python的路径设置
vscode界面左下角管理(设置)->设置页的搜索栏(注意不是最顶上的搜索栏)->搜索`python.terminal.executeInFileDir`->勾上
功能:这样可以让.py文件不在工作目录的根目录时也可以正确使用相对路径。
### 推荐优化项:添加传参提示
搜索`python.analysis.inlayHints.callArgumentNames`->选择`all`
功能:.py文件中的函数调用会显示函数定义时的形参,方便你检查传参有没有传歪。
另外,搜索`inlay Hints`有更多的类似设置,你可以尝试一下。
# 创建一个conda虚拟环境并在其中安装pytorch库
# 创建一个conda虚拟环境并在其中安装pytorch库
- 本章节分为GPU检查、GPU版torch安装、CPU版安装三部分,安装GPU版需阅读前两部分,安装CPU版只需要阅读最后一部分,读者可按需阅读。
- 在安装torch前请先确保已有创建的虚拟环境并且已激活环境。
- 重要提示:如果是使用`conda create -n aaaa`的语句创建新环境,默认不会立刻安装python,conda会在首次使用`conda install`指令安装包时根据依赖关系选择兼容的python版本进行安装。这会导致一个问题:在新建环境后立刻执行`pip`指令时,会由于当前环境的pip尚未安装,以及环境变量的优先级机制,`pip`指令会匹配到上一层环境的`pip`(例如base环境),这将导致`pip install`指令会将库安装到错误的环境中。
- 检查方法:在激活环境后,使用`where.exe python``where.exe pip`查询当前环境变量中的python或pip路径是否在当前环境中。
- 解决方案:使用`pip install`安装库之前,需要先执行`conda install python=3.10`安装python,此处版本号可以按需修改或删除(警告:当最新版python发布时,删除版本号会默认安装最新版python,这会导致出现大量依赖冲突问题)。
- conda创建环境指令:
```powershell
# 在powershell或anaconda prompt中执行环境创建指令
conda create -n aaaa python=3.10
# 遇到提示[y/n]时输入y然后点回车
# 指令执行完毕后激活环境
conad activate aaaa
```
- 补充提示:本节内容是配置一个conda虚拟环境的步骤,如果遇到无法解决的问题或误操作等,可以新建另一个环境重新进行配置尝试。conda的主要功能就是:环境配坏了方便删了重配。
```powershell
# 当环境配置出现问题时:
# 创建并激活新环境
conda create -n bbbb python=3.10
conda activate bbbb
# 删除旧环境
conda remove -n aaaa --all
```
## GPU科普
- 显卡(也叫GPU)一般有核心显卡(核显)、集成显卡(集显,已淘汰)、独立显卡(独显)三大类。显卡的功能是为电脑提供屏幕显示的内容。简而言之,没有显卡,电脑会黑屏。
- 集显与核显:集显与核显都是使用CPU和电脑内存完成计算任务,核显是直接集成到了CPU核心中,集显则在CPU之外,但一般焊接在主板上,这两类显卡都无法从电脑上拆分出去。
- 独显:有独立的计算和存储组件(显存),不需要使用CPU和电脑内存,独立完成计算任务,并且在大部分电脑上可以方便的单独安装或拆卸下来。市场上生产独显的两大厂商分别为NVIDIA和AMD,这两家公司生产的独立显卡分别被称为N卡和A卡,AI训练目前主流使用N卡。
- AI训练一般使用N卡,N卡在用于AI训练时的运行逻辑与作为显卡时的计算策略是不同的,并且不同型号的显卡的硬件结构也有所不同...总之最终导致的结果就是目前在安装GPU版torch时需要先查询自己显卡的cuda版本。
## GPU版torch和CPU版torch的选择
- GPU版torch只支持具有N卡的电脑,安装步骤根据显卡cuda版本和驱动版本的不同,安装步骤可能会相当繁琐。
- CPU版torch支持任何电脑,并且安装步骤方便,但是训练速度慢。
- 不要两种都安装。
- 选择安装CPU版可直接跳到本页最底部的CPU版torch安装步骤部分。
- 选择安装GPU版请继续按顺序阅读。
## 检查N卡GPU是否存在
首先确定自己的电脑有没有独立显卡。右键底部任务栏空白处->打开任务管理器->性能->GPU,检查是否存在NVIDIA开头的独立显卡。
![GPU检查图一](img/GPU_check1.jpg)
![GPU检查图二](img/GPU_check2.jpg)
- 有NVIDIA开头的GPU:有N卡,可以正常安装cuda版pytorch
- 只有其他开头的GPU:无法安装cuda版,请选择安装CPU版
- 技术党参考:知道自己是A卡的用户也可以使用ROCM版pytorch,但是坑多且只支持Linux操作系统,非必要建议也安装CPU版。
## (可选)更新显卡驱动
少数长期不联网的电脑需要手动更新显卡驱动,这里提供更新方法
在英伟达官网下载自动更新驱动的工具
<https://www.nvidia.cn/geforce/drivers/>
下载安装后使用工具更新驱动即可。
## 检查自己的cuda版本
在powershell中输入
```powershell
nvidia-smi
```
### 指令成功执行
查看右上角自己的`CUDA Version`确定自己能安装的最高cuda版本,比如我的是12.2,所以我选择pytorch-cuda版本时不能大于12.2。
![GPU检查图3](img/GPU_check3.jpg)
### 指令执行失败
绝大部分情况是由于电脑没有N卡,如果确定自己的电脑没有N卡,则只能安装CPU版torch
极少数情况下,该指令会被放置在一个随机命名的路径中导致无法在shell中识别
可用通过在C盘全局搜索`nvidia-smi.exe`来进行确认,将搜索到的路径添加到`path`中从而解决该问题。如果这一步操作对读者来说比较有难度,则还是建议安装CPU版torch,不要死磕。
## GPU版torch安装
进入pytorch官网:`https://pytorch.org/`并往下拉,找到以下页面:
![pytorch官网安装指令页面](img/pytorch官网安装页示意图.png)
cuda版本和镜像源的额外说明:
- cuda说明
- 上图中的cuda版本选项推荐在不高于自己的`CUDA Version`版本的基础上尽可能高,在此基础上在上方页面选择安装版本。
- 使用镜像源安装GPU版
- 请将下方示例指令中的`torch==2.5.1`修改为上图中蓝框中或你需要的torch版本,将示例指令末尾的链接中的`cu124`修改为你的cuda版本。其中`cu124`就是`cuda 12.4`的意思。修改原理在上图中已给出说明。
- 示例指令:`pip install torch==2.5.1 torchvision torchaudio --index-url https://pypi.tuna.tsinghua.edu.cn/simple --extra-index-url https://download.pytorch.org/whl/cu124`
- 提示:使用pip前请确保当前环境存在python,具体方法在本文开头已给出。
## CPU版torch安装
要求:
- 已激活虚拟环境。
- 若使用codna安装,需要已正常安装conda并按要求配置好镜像源(如果需要)。
- 若使用pip安装,需要确保当前环境存在pip和python,检查方法:执行`where.exe pip`检查,查看当前激活的pip的路径是否存在并且在第一行。
使用conda安装:
```powershell
# 使用torch的官方源下载:
conda install pytorch torchvision torchaudio cpuonly -c pytorch
# 使用国内镜像源下载(要先进行conda换源操作):
conda install pytorch torchvision torchaudio cpuonly
```
使用pip安装:
```powershell
# 使用pip的默认源下载
pip install torch torchvision torchaudio
# 使用pip临时指定镜像源下载(CPU版就不需要像GPU版那样需要另一个链接指定依赖了)
pip install torch torchvision torchaudio -i https://pypi.tuna.tsinghua.edu.cn/simple
```
## 检查pytorch安装情况
pytorch安装完成后,>>**重启powershell**<<然后输入下方指令并稍等片刻,返回cuda支持情况以确定pytorch是否安装成功。
```powershell
python -c "import torch;print(torch.cuda.is_available())"
# 安装GPU版pytorch返回应当为True
# 安装CPU版pytorch返回应当为False
```
```powershell
python -c "import torch;print(torch.__version__)"
# 正常情况应当返回torch版本2.x.x,过旧的cuda版本可能会是1.x.x
```
若输出符合预期则pytorch配置完毕。若输出与预期不符则可能为环境配置步骤中的某步出问题,需要进行检查。
## 安装其他第三方库
- 第三方库的安装主要要注意点在于安装时的名称与常用称呼可能不一致,例如`sklearn`在安装时要使用全称`scikit-learn`
- 以下是一些深度学习常用第三方库的安装指令,注意不要安装到base环境中。
```powershell
conda install numpy
conda install pandas
conda install matplotlib
conda install seaborn
conda install scipy
conda install scikit-learn
# 也可以合并为一句
conda install numpy,pandas,matplotlib,seaborn,scipy,scikit-learn
```
# vscode的日常使用
# vscode的日常使用
## 指定工作文件夹
- 方法一:左上角文件->打开文件夹->选择一个文件夹作为你的工作文件夹。
- 方法二:或点击ctrl+shift+E->点击打开文件夹(已打开一个文件夹时不会显示该按钮)。
- 方法三:组合快捷键:先按`ctrl+k`,左下角会显示`(ctrl+k)已按下,正在等待第二个快捷键...`,此时再点击`ctrl+o`,然后选择一个文件夹。
![方法一图片](img/open_dir.jpg)
如遇到弹窗,点击信任即可
## 创建python或jupyter文件
快捷键ctrl+shift+E或左上角打开资源管理器,在此处点击新建文件并命名为a.py即自动被识别为python文件,jupyter文件则为.ipynb后缀。
- 注意:新建文件时,后缀名要手动打字输入
![方法一图片](img/new_file.jpg)
## 设置执行python文件和jupyter文件代码的python解释器(vscode内称为内核)
**注意:在终端使用conda activate 激活环境的操作是用于配置环境而不是使用环境,并不能在vscode中改变.py文件和.ipynb文件的执行环境。**
### .py文件的内核指定
- 组合键ctrl+shift+p->输入“python select interpreter”->选择conda的虚拟环境。
### .ipynb文件的内核指定
- 由于jupyter支持的是多种语言并且python内核无法直接识别.ipynb格式,所以每个jupyter文件都要独立指定python环境并安装ipykernel。
- 打开.ipynb文件->右上角选择内核->conda的虚拟环境。
- python内核在安装不能直接识别.ipynb格式文件,需要先安装对应插件。当运行代码时jupyter会提示需要安装ipykernel。
- 国外用户点击确定即可。
- 国内用户建议换源后手动安装:`conda install ipykernel`
## 在vscode中使用终端shell
- 中文名用户不推荐使用本操作,请使用conda自带的独立的`anaconda prompt`快捷方式(不是`anaconda powershell prompt`
- 在vscode点击左上角`···->终端->新建终端`即可在vscode内部打开一个powershell终端,功能与使用win+r组合键单独打开的powershell页面相同,工作目录会自动修改为当前打开的工作文件夹
- 注意区分:在终端中使用conda激活环境的操作与上述的.py与.ipynb文件的执行内核无关,三者都各需要独立指定是使用哪个python。
{
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## python基础入门"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"hello woorld\n"
]
}
],
"source": [
"print(\"hello woorld\")"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1 2 3 4 5\n"
]
}
],
"source": [
"print(1,2,3,4,5)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1 2\n"
]
}
],
"source": [
"acc=1\n",
"epoch=2\n",
"print(acc,epoch) # acc为深度学习模型训练的精度指标,epoch为轮数"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1 2 3 4 5\n",
"1->2->3->4->5\n"
]
}
],
"source": [
"print(1,2,3,4,5)\n",
"print(1,2,3,4,5,sep=\"->\") # sep指定输出的分隔"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1 2 3 4 5\t1 2 3 4 5\n"
]
}
],
"source": [
"print(1,2,3,4,5,end=\"\\t\") # \\t为制表符,默认一个tab\n",
"print(1,2,3,4,5)\n"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1 2 3 4 5\n",
"1 2 3 4 5\n"
]
}
],
"source": [
"print(1,2,3,4,5) # \\n为换行\n",
"print(1,2,3,4,5)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"f = open(\"test.txt\",\"a\") # 若没有此txt文件则先创建,然后将内容追加在末尾\n",
"print(\"\\n\",file=f)\n",
"print(\"中文报错,print后面括号为中文()\",file=f)\n",
"f.close()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.30000000000000004\n"
]
}
],
"source": [
"print(0.1+0.2)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1690473024512\n",
"1690473024512\n"
]
}
],
"source": [
"list1 = [1,2,3,5]\n",
"print(id(list1))\n",
"list1[1] = 5\n",
"print(id(list1))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 格式化输出"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"我叫qianyu,今年18岁啦\n"
]
}
],
"source": [
"print(\"我叫%s,今年%d岁啦\" % (\"qianyu\",18)) # %s为字符串 %d为整型"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"学校的名称是点头教育,学习的网站是wwww.diantouedu.cn\n"
]
}
],
"source": [
"print(\"学校的名称是{},学习的网站是{}\".format(\"点头教育\",\"wwww.diantouedu.cn\"))"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"我叫做qianyu,今年19岁啦\n",
"我叫做qianyu,今年19岁啦\n",
"我叫做qianyu,今年19岁啦\n",
"我叫做qianyu,今年19岁啦\n"
]
}
],
"source": [
"# f表达式格式化输出\n",
"name = \"qianyu\"\n",
"age = 19\n",
"print(f\"我叫做{name},今年{age}岁啦\")\n",
"print(f\"我叫做{name},今年{age}岁啦\")\n",
"print(f\"我叫做{name},今年{age}岁啦\")\n",
"print(f\"我叫做{name},今年{age}岁啦\")"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"我叫做qianyu,今年19岁啦\n",
"我叫做qianyu,今年19岁啦\n",
"我叫做qianyu,今年19岁啦\n",
"我叫做qianyu,今年19岁啦\n"
]
}
],
"source": [
"print(\"我叫做qianyu,今年19岁啦\")\n",
"print(\"我叫做qianyu,今年19岁啦\")\n",
"print(\"我叫做qianyu,今年19岁啦\")\n",
"print(\"我叫做qianyu,今年19岁啦\")"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"训练轮数为1\n"
]
}
],
"source": [
"epoch = 1\n",
"print(f\"训练轮数为{epoch}\")"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['False', 'None', 'True', '__peg_parser__', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']\n"
]
}
],
"source": [
"import keyword\n",
"print(keyword.kwlist)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 变量"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2437147683120\n",
"2437147683152\n"
]
}
],
"source": [
"a = 1\n",
"print(id(a)) \n",
"# print(type(a)) ctrl+/为整体注释\n",
"a = 2\n",
"print(id(a))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 输入函数"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"hello\n",
"<class 'str'>\n"
]
}
],
"source": [
"age = input() # 无论输入的是什么 都会被转化为字符串类型\n",
"print(age)\n",
"print(type(age))"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "test",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.18"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
# Python基础编程
# Python基础编程
这个仓库包含了关于第一和第二节课的Python基础编程代码。
## 第一节课
- 代码文件: `python基础入门.ipynb`
- 文本文件: `test.txt` (包含一些常见的报错,是第一节课中用到的文本文件)
## 第二节课
- 代码文件: `六大数据类型2.ipynb`(六大数据类型.ipynb为往期代码,可做参考)
\ No newline at end of file
# Python基础报错例子
# Python基础报错例子
SyntaxError(语法错误):
print "Hello, World!"
# 缺少括号,应该是 print("Hello, World!")
IndentationError(缩进错误):
def my_function():
print("Hello, World!")
# 函数体缩进不正确
NameError(名称错误):
print(x)
# x未定义
TypeError(类型错误):
x = "5"
y = 2
z = x + y
# 字符串和整数不能直接相加
IndexError(索引错误):
my_list = [1, 2, 3]
print(my_list[3])
# 索引超出了列表范围
KeyError(键错误):
my_dict = {"name": "Alice", "age": 30}
print(my_dict["gender"])
# 字典中没有"gender"这个键
ValueError(数值错误):
int("abc")
# 无法将非数字字符串转换为整数
FileNotFoundError(文件未找到错误):
with open("nonexistent_file.txt", "r") as f:
content = f.read()
# 文件不存在
ImportError(导入错误):
import nonexistent_module
# 未安装或导入的模块不存在
ZeroDivisionError(除零错误):
result = 10 / 0
# 除数为零
AttributeError(属性错误):
x = 5
print(x.append(1))
# 整数对象没有append()方法
KeyboardInterrupt(键盘中断):
while True:
pass
# 执行这段代码后,按下Ctrl+C将会中断程序执行hello world
中文报错,print后面括号为中文()
### Python进阶知识
### Python进阶知识
这里是Python部分进阶的知识,主要包括以下内容:
#### 1. 三大程序结构
- **顺序:** 指程序从上到下按照顺序执行的结构。
- **分支:** 涉及条件判断,根据条件不同执行不同的代码块。
- **循环:** 允许代码块多次执行,直到满足退出条件为止。
#### 2. 函数的定义和使用
函数是一段可重复使用的代码块,可以接受参数并返回值。
#### 3. 经典编程案例
- **递归求n阶乘:** 通过递归方式计算给定数的阶乘。
- **求解水仙花数:** 寻找指定范围内的水仙花数,即每位数字的立方和等于该数本身的数。
## 本章节讲解的是 Python 面向对象编程的相关内容,包括类和对象的定义和使用、封装、继承、多态。在学习本章之前需要先看环境配置、Python基础、进阶课程
## 本章节讲解的是 Python 面向对象编程的相关内容,包括类和对象的定义和使用、封装、继承、多态。在学习本章之前需要先看环境配置、Python基础、进阶课程
[
[
{
"id": "001",
"name": "点头教育",
"url": "www.diantouedu.cn",
"age": 10
},
{
"id": "002",
"name": "Google",
"url": "www.google.com",
"age": 100
},
{
"id": "003",
"name": "淘宝",
"url": "www.taobao.com",
"age": 50
}
]
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
++ "b/\345\275\225\346\222\255/2-AI\345\267\245\345\205\267\345\214\205/2.5-Pandas\346\225\260\346\215\256\345\244\204\347\220\206/test.py"
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment