✍ 个人博客:https://blog.csdn.net/Newin2020?type=blog
📝 专栏地址:https://blog.csdn.net/newin2020/category_12801353.html
📣 专栏定位:为 0 基础刚入门 Python 的小伙伴提供详细的讲解,也欢迎大佬们一起交流~
📚 专栏简介:在这个专栏,我将带着大家从 0 开始入门 Python 的学习。在这个 Python 的新人系列专栏下,将会总结 Python 入门基础的一些知识点,方便大家快速入门学习~
❤️ 如果有收获的话,欢迎点赞 👍 收藏 📁 关注,您的支持就是我创作的最大动力 💪
Python 的学习过程少不了 IDE 或者代码编辑器,或者集成的开发编辑器(IDE),这些 Python 开发工具帮助开发者加快使用 Python 开发的速度并提高效率,高效的代码编辑器或者 IDE 应该会提供插件、工具等能帮助开发者高效开发的特性。
常见 Phyton IDE:PyCharm(推荐)、Sublime Text、VS Code、Eclipse + Pydev、Emacs、WingIDE、IDLE
下载地址:https://www.jetbrains.com/zh-cn/pycharm/
PyCharm 是由 JetBrains 打造的一款 Python IDE。PyCharm 基本具备一切 Python IDE 的所有功能,比如:调试、语法高亮、项目管理、代码跳转、智能提示、自动完成、单元测试、版本控制等。
PyCharm 有分两个版本,一个是社区版(免费功能有限),一个是专业版(有一些增强功能)。
计算机本来是不认识 Python 代码的,但是 Python 有解释器程序。我们前面安装 Python 环境,本质上其实是在电脑中安装 Python 解释器程序。代码随时都可以写,但是能不能运行,就要看电脑里是否有解释器程序了。
不同开发项目需求中,如何保证在不同 Python 版本或依赖包环境下能互不干扰?如下场景:
- 项目 A 采用 Python2.x,项目 B 采用 Python3.x
- 项目 C 采用 Python 3.x Django 1.x, 项目 D 采用 Python 3.x Django 2.x
为了解决这些多版本或多环境共同的情况,就需要引出虚拟环境了:
- virtualenv 是用来创建虚拟环境,让不同的项目拥有自己独立的的运行环境,避免相互干扰。
- pyenv 用来管理多个 Python 版本,比如系统中有一个 2.x 的版本,安装 pyenv 后可以使用 pyenv 安装其他版本的 Python,让系统可以同时支持多个版本,而且不影响系统版本。
- pipenv 它有两个功能,一个是管理依赖(替代 pip 管理工具)、另一个是可以创建虚拟环境。
不过这些都是第三方的虚拟环境,需自己额外去安装,但在 Python3 中我们可以使用自带的虚拟环境 venv。
官方文档:https://docs.python.org/zh-cn/3.7/library/venv.html#moduule-veny
Python3.3 以上的版本通过 venv 模块原生支持虚拟环境,可以代替 Python 之前的 virtualenv。
该 venv 模块提供了创建轻量级 “虚拟环境”,提供与系统 Python 的隔离支持。每一个虚拟环境都有其自己的 Python 二进制(允许有不同的 Python 版本创作环境),并且可以拥有自己独立的一套 Python 包。
- 查看帮助命令:python3 -m venv --help
- 创建虚拟环境:python3 -m venv py3_env(py3_env 指定所创建虚拟环境的名称)
上面是基于命令行的操作方法,下面我来详细介绍一下在 PyCharm 中如何创建并配置虚拟环境。
-
新建项目
a. 位置选择自己一般存放项目的地方,例如我这里选择存放在 project 文件夹下,并新创建了一个 test_python 文件夹用于存放本项目文件。
-
新的虚拟环境选择基于 “Virtualenv” 这个工具来创建。
-
位置默认为项目文件夹下的 venv 文件夹内(如果没有则自己创建),名称前加 . 则正常目录下会进行隐藏。该文件夹创建成功后,会存放 python 解释器和各种库。
- 如果项目地址是 E:projects est_python
- 则虚拟环境的地址就是 E:projects est_pythonvenv
- 虚拟环境中的库 E:projects est_pythonvenvLibsite-packages
-
选择基本解释器,一般就选择下载的系统解释器。如果此处为空,则需要添加已安装在电脑中的 Python 路径;若没安装,则点击此处让 PyCharm 帮你自动安装。
- 如果勾选下面的 “Inherit global site-packages”,则会继承 base interpreter 基本解释器 site-packages 文件夹下的所有库。
- 如果勾选下面的 “Make available to all projects”,则再次创建新项目时,本次选择的 Python 解释器就会显示在 “Previously configured interpreter” 下的解释器列表之中。这样创建该新项目就有两种创建方式,一种是创建新的虚拟环境,一种是使用这里的先前配置的解释器。
-
点击 “Create” 创建新的虚拟环境及项目。
-
- 查看虚拟环境
可以在 “Settings” -> “Project:xxx” -> “Python Interpreter” 下,查看 Python 解释器的虚拟环境,例如下面这个 Python 3.12 的解释器下存在两个虚拟环境,一个是 test_python 即刚才新建的虚拟环境,另一个是原来存在的虚拟环境 venv。
另外,也可以通过下图右上角的 “Add Interpreter” 来添加或创建新的虚拟环境。
- 查看并安装依赖包
我们可以直接点击上图 Package 标题上面的 “+” 号来添加所需的包,例如我下面想添加 requests 包,则可以在搜索栏搜索查找到所需的依赖包,然后点击 “Install Package” 进行下载。下载好的依赖包,会存放到虚拟环境中的 site-packages 文件夹下。
我们也可以在终端 Terminal 通过 pip list 命令查看当前虚拟环境下所安装的包,然后通过 pip install requests 来下载所需包。
另外,打开终端后可以发现命令行前出现了一个小括号,里面的名字 .venv 显示的就是我们该项目所使用的虚拟环境名称,显然该虚拟环境 PyCharm 已经帮我们自动激活了。
如果使用的是 Windows 电脑,执行上一步时可能会报错,这是因为当前使用的终端可能不是 cmd 而是 powershell。可以在 “Ssttrings” -> “Tools” -> “Terminal” 下找到 “Shell path”,由于我下图使用的是 mac,所以只存在 /bin/bash,但如果使用的是 Windows 则可以看到两个选项即 cmd 和 powershell,此时选择更改为 cmd 即可。
- 导出依赖包
如果我们想导出当前虚拟环境所依赖的包然后复制到其它虚拟环境使用的话,则可以使用如下命令:
这样我们就可以在目录下获得到一个 requirements.txt 文件,里面存放着该虚拟环境用到的依赖包。
我们可以复制这个 requirements.txt 文件到其它虚拟环境中的目录下,然后执行下面的命令:
这样其它的虚拟环境也可以复制我当前虚拟环境用到的依赖包,从而快速配置好所需的开发环境。
- 第三方库下载
在 “Settings” -> “Project:xxx” -> “Python Interpreter” 下,可以下载想要的第三方库。
- IDE 主题选择
在 “Settings” -> “Appearance & Behavior” -> “Appearance” 下,可以选择自己喜欢的 IDE 主题风格。
- IDE 字体大小更改
在 “Setting” -> “Editor” -> “Font” 下,可以更改字体的首选样式(Font)、大小(Size)以及行间距(Line height)。
- 查看项目文件的结构
通过 “View” -> “Tool Windows” -> “Structure” 可以打开这个功能,在 IDE 的左下方能看到这个模块,在这个模块中可以看到当前文件的结构。
- 插件安装
在 “Settings” -> “Editor” -> “Plugins” 下,可以安装自己心仪的插件,通过安装插件可以对 IDE 的功能进行扩展。
- IDE 快捷键查看
通过 “Help” -> “Keyboard Shortcuts PDF”,可以获得到一个 PDF 形式的快捷键大全。
常用代码的调试方法:
- 通过 print 语句,打印变量的值,帮助我们了解代码的执行流程和变量的取值情况,这是最简单的调试方法
- 通过 logging 模块即日志模块,去记录我们关键变量的取值
- 使用调试器,比如 pdb、ipdb
- 使用 IDE PyCharm 的调试功能**(推荐)**
下面我们来介绍一下 PyCharm 中,是如何进行代码调试的。
- 设置断点
在想要暂停程序执行以检查变量值或程序状态的代码行旁边的灰色区域,用鼠标左键点击,此时就会出现一个红点,即表示设置了一个断点。
- 启动调试
主要有两种启动方式:
- 方式一:直接点击右上角的小虫子图标
- 方式二:鼠标右键,选择 “Debug ‘xxx’”
Tips:
不要通过普通 Run 的方式启动程序,需要通过 Debug 方式启动,设置的断点才能生效。
- 调试工具窗口
当程序执行到断点时,会暂停执行,此时会出现调试工具窗口,主要包括以下几个部分:
- 调试工具:提供了若干操作按钮。
- Rerun ‘xxx’(command + R):重新以调试的方式运行代码。
- Stop ‘xxx’(command + F2):停止运行当前代码调试。
- Resume Program(option + command + R):继续执行程序一直到结束,如果当前执行处后面还有断点,则执行到下一个断点处。
- Pause Program:如果当前程序正在运行中,点击该按钮,则会立即停止到正在运行的地方。
- Step Over(F8):步过,单步运行,但不会进入函数体中。
- Step Into(F7):步入,单步运行,但会进入到函数体中。
- Step Into My Code(option + shift + F7):步入我的代码,单步运行,也会进入到函数体中,但是只会进入到你自己编写的代码函数中,不会进入到系统的函数。
- Step Out(F8):步出,跳出当前函数体。
- View Breakpoints…(shift + command + F8):查看当前程序的所有断点。
- Mute Breakpoints:禁止当前程序的所有断点,使所有断点失效。
- 变量窗口:显示当前作用域内的变量及其值,可以展开查看对象的属性。
- 栈帧窗口:显示当前的调用栈,可以查看程序的执行路径。
- 控制台:可以在调试过程中输入命令或查看程序的输出。
在 Windows 中,下面 command 指令都替换成 ctrl,option 指令都替换成 alt 即可。
Mac 键盘符号和修饰键说明:
- ⌘ command
- ⇧ shift
- ⌥ option
- ⌃ control
- ↩︎ return / enter
- ⌫ delete
另外,Mac 中想触发 Fx,则需要加上 fn 键,例如触发 F3,需要 fn 和 F3 一同按下才能触发 F3 键。
所有指令:
- 快速查找文件
用快捷 command + E 可打开最近访问过的文件。
- 万能搜索
连续按两下 shift 键可以搜索文件名、类名、方法名,如果要搜索目录则在开头加斜杠 /。
- 全局搜索、全局替换
如果你要全局项目范围内搜索文件里面的关键字,那么就需要使用 command + shfit + F,或者 command + shfit + R 全局替换。
- 智能提示
智能提示是 IDE 的标配功能,PyCharm 默认有自动提示功能,但是还不够智能,比如要使用还没有引入到的模块则没法自动提示了,因此可以使用 option + enter 智能提示帮助你选择合适的操作。
- 任意位置换行
无论你的光标处在何位置,你都可以通过快捷键 shfit + enter 另起一行,这样无需把光标移到未尾去操作。
- 误删文件,一秒找回
在你的项目目录里,点击右键,有个 Local History 的选项,再点击子选项 Show History,你可以看到这里有个记录板。如果你想恢复删除的文件,就在删除的记录项点击右键,选择 Revert 即可恢复。
另外,也可以在这里面找到之前修改前的历史记录,同样可以选择恢复到之前的状态。
- 使用书签,快速定位
- F3:在鼠标所在代码行,添加 / 取消匿名书签
- option + F3:在鼠标所在代码行,使用助记符添加 / 取消书签
- control + 0…9:定位到对应数值的书签位置
- command + F3:显示所有书签
- 代码模板,效率编码
PyCharm 提供的代码模板,是相当实用的一个功能。它可以在你新建一个文件时,按照你预设的模板自动帮你生成一段内容,比如解释器路径,编码方法,作者详细信息等。
当你在键盘中敲入 command + J 时,就可以调出一个面板,从下图可以看出里面有许多预设的模板。
- Tab 轻松空格
同一个 Python 文件模块里,Tab 和四个空格缩进两种风格是不能共存的。这就需要你按照该文件原来的缩进风格来进行编码,在 PyCharm 里,可以设置自动检测原文件的缩进风格来决定当你使用 Tab 键缩进的时候,是 Tab 还是四个空格。
若在 Use tab character 打上勾,则你新建一个 Python 后,就会使用 Tab 进行缩进。反之,则使用四个空格进行缩进。
- 一键进行代码性能分析
点击 Run -> Profile ‘程序’,即可进行性能分析。
性能统计界面由 Name、Call Count、Time (ms)、Own Time (mss),4 列组成一个表格,见下图。
- 表头 Name 显示被调用的模块或者函数;Call Count 显示被调用的为次数;Time (ms) 显示运行时间和时间百分比,时间单位为毫秒 (ms)。
- 点击表头上的小三角可以升序或降序排列表格。
- 在 Name 这一个列中双击某一行可以跳转到对应的代码。
- 以 fun4 这一行举例:fun4 被调用了一次,运行时间为 1000ms,占整个运行时间的 16.7%。
Statistic:
点击 Call Graph(调用关系图)界面直观展示了各函数之间的调用关系、运行时间和时间百分比,见下图。
- 箭头表示调用关系,由调用者指向被调用者
- 矩形的左上角显示模块或者函数的名称,右上角显示被调用的的次数
- 矩形中间显示运行时间和时间百分比
Call Graph: