Bootstrap

【Python学习教程】Python编程环境搭建_python环境搭建

输入完成以后注意保存。

运行 Python 源文件有两种方法:

  1. 使用 Python 自带的 IDLE 工具运行源文件。

通过file -> open菜单打开 demo.py 源文件,然后在源文件中的菜单栏中选择Run->Run Module,或者按下 F5 快捷键,就可以执行源文件中的代码了。

运行效果截图
图 3 运行效果截图

更多关于 IDLE 的使用方法,请转到《Python IDLE使用方法》。

  1. 在命令行工具或者终端(Terminal)中运行源文件。

进入命令行工具或者终端(Terminal),切换到 demo.txt 所在的目录,然后输入下面的命令就可以运行源文件:

python demo.py

运行完该命令,可以立即看到输出结果,如下图所示。

在 WIndows 命令行工具中运行Python源文件
图 4 在 WIndows 命令行工具中运行 Python 源文件

这里简单介绍一下 python 命令,它的语法非常简单,其基本格式如下:

python <源文件路径>

这里的源文件路径,可以是自盘符(C盘、D盘)开始的绝对路径,比如D:\PythonDemo\demo.py;也可以在执行 python 命令之前,先进入源文件所在的目录,然后只写文件名,也就是使用相对路径。

图4演示的是使用相对路径,下面我们再演示一下使用绝对路径:

python 命令使用绝对路径
图 5 python 命令使用绝对路径

需要注意的是,Windows 系统不区分大小写,在 Windows 平台上输入源文件路径时可以不用注意大小写。但是类 Unix 系统(Mac OS X、Linux 等)都是区分大小写,在这些平台上输入 Python 源文件路径时一定要注意大小写问题。

第一个Python程序——在屏幕上输出文本

本节我将给大家介绍最简单、最常用的 Python 程序——在屏幕上输出一段文本,包括字符串和数字。

Python 使用 print 函数在屏幕上输出一段文本,输出结束后会自动换行。

在屏幕上输出字符串

字符串就是多个字符的集合,由双引号" "或者单引号' '包围,例如:

“Hello World”
“Number is 198”
‘Pyhon教程:http://c.biancheng.net/python/’

字符串中可以包含英文、数字、中文以及各种符号。

print 输出字符串的格式如下:

print(“字符串内容”)

或者

print(‘字符串内容’)

字符串要放在小括号( )中传递给 print,让 print 把字符串显示到屏幕上,这种写法在 Python 中被称为函数(Function)。

需要注意的是,引号和小括号都必须在英文半角状态下输入,而且 print 的所有字符都是小写。Python 是严格区分大小写的,print 和 Print 代表不同的含义。

print 用法举例:

print("Hello World!")  #输出英文
print("Number is 198")  #输出数字
print("Pyhon教程:http://c.biancheng.net/python/")  #输出中文

在 IDLE 下的演示效果:

print函数用法举例
图 1 print 函数用法举例

也可以将多段文本放在一个 print 函数中:

print(
    "Hello World!"
    "Number is 198"
    "http://c.biancheng.net/python/"
);
print("Hello World!" "Python is great!" "Number is 198.")
print(
    "Hello World!\n"
    "Number is 198\n"
    "http://c.biancheng.net/python/"
);

注意,同一个 print 函数的字符串之间不会自动换行,加上\n才能看到换行效果。

将多个字符串放在一个print中
图 2 将多个字符串放在一个 print 中

对分号的说明

有编程经验的读者应该知道,很多编程语言(比如C语言、C++Java 等)都要求在语句的最后加上分号;,用来表示一个语句的结束。但是 Python 比较灵活,它不要求语句使用分号结尾;当然也可以使用分号,但并没有实质的作用(除非同一行有更多的代码),而且这种做法也不是 Python 推荐的。

修改上面的代码,加上分号:

print(198);
print("Hello World!"); print("Python is good!");
print("Pyhon教程:http://c.biancheng.net/python/");

运行结果:

198
Hello World!
Python is good!
Pyhon教程:http://c.biancheng.net/python/

注意第 2 行代码,我们将两个 print 语句放在同一行,此时必须在第一个 print 语句最后加分号,否则会导致语法错误。

对 Python 2.x 的说明

Python 3.x 要求在使用函数时加上小括号( ),但是以前的 Python 2.x 版本可以省略小括号,也即是写成下面的样子:

print 198
print "Hello World!";  #末尾也可以加上分号
print "Pyhon教程:http://c.biancheng.net/python/"

我建议大家加上小括号,这样写比较容易理解,而且兼容性好。

在屏幕上输出数字

print 除了能输出字符串,还能输出数字,将数字或者数学表达式直接放在 print 中就可以输出,如下所示:

print( 100 )
print( 65 )
print( 100 + 12 )
print( 8 * (4 + 6) )

注意,输出数字时不能用引号包围,否则就变成了字符串。下面的写法就是一个反面教材,数学表达式会原样输出:

print(“100 + 12”)

运行结果是100 + 12,而不是 112。

另外,和输出字符串不同,不能将多个数字放在一个 print 函数中。例如,下面的写法就是错误的:

print( 100 12 95 );
print(
    80
    26
    205
);

总结

Python 程序的写法比较简单,直接书写功能代码即可,不用给它套上“外壳”。下面我们分别使用C语言、Java 和 Python 输出C语言中文网的网址,让大家对比感受一下。

使用C语言:

#include <stdio.h>
int main()
{
    puts("http://c.biancheng.net/");
    return 0;
}

使用 Java:

public class HelloJava {
    public static void main(String[] args) {
        System.out.println("http://c.biancheng.net/");
    }
}

使用 Python:

print("http://c.biancheng.net/")

IDE(集成开发环境)是什么

IDE 是 Integrated Development Environment 的缩写,中文称为集成开发环境,用来表示辅助程序员开发的应用软件,是它们的一个总称。

通过前面章节的学习我们知道,运行 C 语言(或 Java 语言)程序必须有编译器,而运行 Python 语言程序必须有解释器。在实际开发中,除了运行程序必须的工具外,我们往往还需要很多其他辅助软件,例如语言编辑器、自动建立工具、除错器等等。这些工具通常被打包在一起,统一发布和安装,例如 PythonWin、MacPython、PyCharm 等,它们统称为集成开发环境(IDE)。

因此可以这么说,集成开发环境就是一系列开发工具的组合套装。这就好比台式机,一个台式机的核心部件是主机,有了主机就能独立工作了,但是我们在购买台式机时,往往还要附带上显示器、键盘、鼠标、U盘、摄像头等外围设备,因为只有主机太不方便了,必须有外设才能玩的爽。

需要注意的是,虽然有一些 IDE 支持多种程序语言的开发(如 Eclipse、NetBeans、VS),但通常来说,IDE 主要还是针对某一特定的程序语言而量身打造的(如 VB)。

一般情况下,程序员可选择的 IDE 类别是很多的,比如说,用 Python 语言进行程序开发,既可以选用 Python 自带的 IDLE,也可以选择使用 PyCharm 和 Notepad++ 作为 IDE。并且,为了称呼方便,人们也常常会将集成开发环境称为编译器或编程软件,对此读者没必要较真儿,就把它当做“乡间俗语”吧。

Python IDE有哪些,哪款适合初学者?

百度搜索“Python IDE”会发现支持 Python 编程的 IDE 有很多,那么对于零基础的初学者,应该使用哪款 IDE 呢?

我个人推荐初学者使用 Python 自带的 IDLE。因为 IDLE 的使用方法很简单,非常适合初学者入门。本教程中使用的也是 Python 自带的 IDLE。

当然,除了 IDLE,还有很多其他的 IDE 供大家选择,这里列出常用的几个,喜欢探索的读者可自行安装使用。

PyCharm

这是由 JetBrains 公司开发的一款 Python 开发工具,在 Windows、Mac OS 和 Linux 操作系统中都可以使用。

PyCharm 具有语法高亮显示、Project(项目)管理代码跳转、智能提示、自动完成、调试、单元测试以及版本控制等一般开发工具都具有的功能,除此之外,它还支持 Django(Python 的 Web 开发框架)框架下进行 Web 开发。

PyCharm 的主窗口如图 1 所示。

img
图 1 PyCharm主窗口示意图

PyCharm 开发工具可通过其官方网站(http://www.jetbrains.com/pycharm/)下载获取。需要注意的是,该网站提供了 2 个版本,一个是社区版(免费并且提供源代码,适合多数读者),另一个是专业版(免费试用)。

有关 PyCharm 下载和安装,可阅读《PyCharm下载和安装教程》一节,至于如何使用 PyCharm 运行 Python 程序,可阅读《PyCharm运行Python程序》一节。

Eclipse+PyDev

Eclipse 是一个开源的、基于 Java 的可扩展开发平台,最初主要用于 Java 语言的开发。该平台可通过安装不同的插件,进行不同语言的开发。

PyDev 是一款功能强大的 Eclipse 插件,它可以提供语法高亮、语法分析、语法错误提示,以及大纲视图显示导入的类、库和函数、源代码内部的超链接、运行和调试等功能。

当 Eclipse 在安装 PyDev 插件后,就可以进行 Python 应用开发。其开发界面如图 2 所示。

img
图 2 Eclipse+PyDev 开发界面

除此之外,还有 PythonWin(只针对 Win32 平台)、MacPython IDE(PythonWin 对应的 Mac 版本)、Emacs 和 Vim(功能强大的文本编辑器,可以用来编写 Python 程序)等,都可以作为执行 Python 程序的 IDE。

有关 Eclipse+PyDev 下载和安装,可阅读《Eclipse+PyDec下载和安装教程》一节,至于如何使用安装有 PyDev 插件的 Eclipse 编写并运行 Python 程序,可阅读《Eclipse+PyDec运行Python程序》一节。

Visual Studio Code

Visual Studio Code,简称 VS Code,是微软公司开发的一款轻量级 IDE。和 PyCharm 一样,它也支持在 Windows、Linux 和 macOS 平台上运行。

VS Code 支持几乎所有主流开发语言的语法高亮、智能代码补全、自定义热键、括号匹配等功能,支持使用插件进行功能扩展,还针对网页开发和云端应用开发做了优化。

值得一提的是,使用 VS Code 编写 Python 代码,无需向其它编译器那样,通过创建项目来管理源代码文件,在 VS Code 中可以直接创建 Python 源代码文件。VS code 的开发界面如图 3 所示。

VS Code 开发界面
图 3 VS Code 开发界面

有关 VS Code 下载和安装,可阅读《VS Code下载和安装教程》一节,至于如何使用 VS Code 编写并运行 Python 程序,可阅读《VS Code运行Python程序》一节。

Microsoft Visual Studio

Microsoft Visual Studio,简称 VS,也是 Microsoft(微软)公司开发的一款 IDE。它可用于进行 C# 和 ASP.NET 等应用的开发,也可以作为 Python 的开发工具,只需要在安装时,选择安装 PTVS 插件即可。

PTVS 插件是一个开源插件,它支持编辑、浏览、智能感知、混合 Python/C++ 调试、Djange 等,适用于 Windows、Linux 和 Mac OS 客户端的云计算。

当 VS 安装 PTVS 插件之后,就可以进行 Python 应用开发了,其开发界面如图 4 所示。

img
图 4 应用 VS 开发 Python 项目

有关 VS 下载和安装教程,可阅读《Visual Studio下载和安装教程》一节,至于如何使用 VS 编写并运行 Python 程序,可阅读《Visual Studio运行Python程序》一节。

PyCharm下载和安装教程(包含配置Python解释器)

PyCharm 是 JetBrains 公司(www.jetbrains.com)研发,用于开发 Python 的 IDE 开发工具。图 1 所示为 JetBrains 公司开发的多款开发工具,其中很多工具都好评如潮,这些工具可以编写 Python、C/C++C#、DSL、Go、Groovy、JavaJavaScript、Objective-C、PHP 等编程语言。

JetBrains 开发工具
图 1 JetBrains 开发工具

PyCharm下载和安装

进入 PyCharm官方下载页面(如图 2 所示),可以看到 PyCharm 有 2 个版本,分别是 Professional(专业版)和 Community(社区版)。其中,专业版是收费的,可以免费试用 30 天;而社区版是完全免费的。

PyCharm 官方下载页面
图 2 PyCharm 官方下载页面

强烈建议初学者使用社区版,更重要的是,该版本不会对学习 Python 产生任何影响。

根据图 2 所示点击“下载”按钮,等待下载完成。下载完成后,读者会得到一个 PyCharm 安装包(本节下载的是 pycharm-community-2019.2.2 版本)。双击打开下载的安装包,正式开始安装(如图 3 所示)。

PyCharm开始安装界面
图 3 开始安装界面

直接选择“Next”,可以看到如图 4 所示的对话框,这里是设置 PyCharm 的安装路径,建议不要安装在系统盘(通常 C 盘是系统盘),这里选择安装到 E 盘。

设置 PyCharm 安装路径
图 4 设置 PyCharm 安装路径

继续点击“Next”,这里需要进行一些设置,可根据图 5 所示,自行选择需要的功能,若无特殊需求,按图中勾选即可;

安装设置对话框
图 5 安装设置对话框

继续点击“Next”,达到图 6 所示的对话框,这里选择默认即可,点击 “Install”,并等待安装进度条达到 100%,PyCharm 就安装完成了。

选择开始菜单文件
图 6 选择开始菜单文件

需要注意的是,首次启动 PyCharm,会自动进行配置 PyCharm 的过程(选择 PyCharm 界面显式风格等等),读者可根据自己的喜好进行配置,由于配置过程非常简单,这里不再给出具体图示。读者也可以直接退出,即表示全部选择默认配置。

PyCharm配置Python解释器

首先安装 PyCharm 完成之后,打开它会显示如下所示的界面:

PyCharm初始化界面
图 8 PyCharm 初始化界面

在此界面中,可以手动给 PyCharm 设置 Python 解释器。点击图 8 所示的 Configure 选项,选择“Settings”,进入图 9 所示的界面。

设置Python解释器界面
图 9 设置 Python 解释器界面

可以看到,“No interpreter” 表示未设置 Python 解释器,这种情况下,可以按图 9 所示,点击设置按钮,选择"add",此时会弹出图 10 所示的窗口。

添加Python解释器界面
图 10 添加 Python 解释器界面

按照图 10 所示,选择“System Interpreter”(使用当前系统中的 Python 解释器),右侧找到你安装的 Python 目录,并找到 python.exe,然后选择“OK”。此时显式界面会自动跳到图 9 所示的界面,并显示出可用的解释器,如图 11 所示,再次点击“OK”。

添加Python解释器界面
图 11 添加 Python 解释器界面

等待 PyCharm 配置成功,它会再次回到图 8 所示的界面,由此就成功的给 PyCharm 设置好了 Python 解释器。

关于如何使用 PyCharm 运行 Python 程序,可猛击《PyCharm运行Python程序》一文详细了解。

PyCharm运行Python程序

第一个Python程序》一节中,分别介绍了如何使用 Python IDLE、Python Shell 以及 Sublime Text 编辑并运行 Python 程序。但是,如果要开发复杂的项目,使用 PyCharm、VS Code 等这些强大的 IDE 应该是更不错的选择。

本节仍以第一个 Python 程序为例,给大家介绍如何使用 PyCharm 创建 Python 项目,以及如何编写并运行 Python 程序。

PyCharm创建Python项目

PyCharm 中,往往是通过项目来管理 Python 源代码文件的。虽然对于第一个 Python 程序来说,创建项目来管理似乎有些“大材小用”,但对于初学者来说,学会创建 Python 项目是非常有必要的。

PyCharm 创建项目的步骤是这样的,首先打开 PyCharm,会显示出如图 1 所示的欢迎界面。

PyCharm欢迎界面
图 1 PyCharm 欢迎界面

在该界面中点击“Create New Project”(创建一个新项目),打开如图 2 所示的 Location 对话框,在该对话框中输入项目名称(例如 demo)。

设置项目名称并配置Python解释器
图 2 设置项目名称并配置 Python 解释器

另外,强烈建议初学者单击图中所示的三角按钮,展开 Python 解释器设置界面,按图中所示选用本地的 Python 解释器。默认情况下,PyCharm会选用第一种配置方式,它会自动为项目配置虚拟环境,即向项目中添加运行 Python 程序所必备的文件(例如 Python 解释器和标准库文件),但这些文件对于初学者来说,是晦涩难懂的,对 Python 入门没有任何帮助。

输入好项目名称,并配置好 Python 解释器之后,就可以单击“Create”按钮创建项目。创建好的项目如图 3 所示。

创建好的Python项目
图 3 创建好的 Python 项目

可以看到,使用本地Python解释器,创建的项目是空的。

PyCharm项目中创建Python文件

项目创建完成之后,就可以创建一个 Python 代码文件了,具体操作如下。

首先,在创建好项目的基础上,右键选中该项目,并依次选择“New->Python File” 菜单,如图 4 所示。


新建Python文件流程
图 4 新建 Python 文件流程

此时,就会打开新建 Python 文件的对话框,输入要新建 Python 文件的名字(如 hello),如图 5 所示。

新建Python文件对话框
图 5 新建 Python 文件对话框

然后点击“OK”按钮或按“Enter”回车键,即可成功创建一个 Python 文件,如图 6 所示。

成功创建Python文件
图 6 成功创建 Python 文件

Python文件创建成功之后,就可以向该文件中编写 Python 程序。例如,在新创建的 hello 文件中编写第一个Python程序,如图 7 所示。

向Python文件中编写代码
图 7 向 Python 文件中编写代码

运行此 Python 程序也很简单,只需选择左侧工程目录中的 hello.py 文件,并右键选择“Run’hello’”,如图 8 所示。

PyCharm运行Python程序
图 8 PyCharm 运行 Python 程序

运行结果如图 9 所示。

程序运行结果示意图
图 9 程序运行结果示意图

提示:如果该程序已经运行过一次,当再次运行时,可直接点击工具栏中的 Run 箭头按钮,或者使用快捷键“Shift + F10”,都可以运行上次的程序。

Python VS Code下载和安装教程

Visual Studio Code,简称 VS Code,是由微软公司开发的 IDE 工具。与微软其他 IDE(如 Visual Studio)不同的是,Visual Studio Code 是跨平台的,可以安装在 Windows、Linux 和 macOS平台上运行。

不仅如此,Visual Studio Code 没有限定只能开发特定语言程序,事实上只要安装了合适的扩展插件,它可以开发任何编程语言程序,包括 Python。因此,本节就来讲解如何下载并安装 VS Code,使其能够支持 Python 编程。

VS Code下载和安装

VS Code官网提供了 VS Code下载地址 ,如图 1 所示。

img
图 1 VS Code下载界面

可以看到,考虑到不同的操作系统平台,官方准备了分别适用于 Windows、Linux 和 macOS 操作系统的安装包,读者可根据实际情况,选择适合自己电脑的安装包。

值得一提得是,针对 Windows 系统提供的安装包中,还被细分为 User Installer、System Installer 以及 .zip 版,它们之间的区别是:

  • User Installer:表示 VS Code 会安装到计算机当前账户目录中,意味着使用其他账号登陆计算机的用户将无法使用 VS Code;
  • System Installer:和 User Installer 正好相反,即一人安装,所有账户都可以使用。
  • .zip:这是一个 VS Code 的压缩包,下载后只需解压,不需要安装。也就是说,解压此压缩包之后,直接双击包含的 “code.exe” 文件,即可运行 VS Code。

默认情况下,VS Code 提供的是 User Installer 64 位的版本。

由于笔者电脑使用的 Windows 10 系统,所以有 2 种安装 VS Code 的方式,但由于 .zip 版下载即可使用,无需安装,因此本节选择以 User installer 版本为例,给大家演示如何通过安装包安装 VS Code。

注意,.zip 压缩包中包含的 VS Code 和使用安装包安装,没有任何区别。

下载完成安装包之后,大家会得到一个类似名为 VSCodeUserSetup-x64-1.38.1.exe (笔者下载的是此版本)的文件,双击打开,看到如图 2 所示的安装界面。

img
图 2 VS Code安装界面

勾选“我接受协议”,然后点击“下一步”,进入图 3 所示的界面。

img
图 3 选择安装位置

如图 3 所示,建议读者不要将 VS Code 安装到系统盘(通常系统盘是 C 盘),可以安装到其它磁盘中。选择好安装位置后,继续点击“下一步”,进入图 4 所示的界面。

img
图 4 选择开始菜单文件夹

这里不需要改动,默认即可,直接点击“下一步”,进入图 5 所示的界面。

img
图 5 选择其他任务

读者可根据自己的操作习惯,勾选适合自己的选项即可,需要注意的是,"添加到 PATH"选项一定要勾选。选择完成后,点击“下一步”,进入图 6 所示的界面。

img
图 6 安装准备就绪

如图 6 所示,显示的是前面选择对 VS Code 做的配置,确认无误后点击“安装”,即可正式安装 VS Code。安装成功后,会出现如图 7 所示的界面,表示安装成功。

img
图 7 安装成功界面

点击“完成”,即可启动 VS Code。

VS Code安装Python扩展插件

注意,刚刚安装成功的 VS Code 是没有 Python 扩展的,安装此插件的方法也很简单。打开 VS Code,会进入图 8 所示的欢迎界面。

img
图 8 VS Code 界面

VS Code 安装 Python 扩展的方法有 2 种,分别是:

  • 按照图 9 所示,在欢迎界面中选择 “Python”,下方会弹出一个对话框,选择 “OK”,即可完成 Python 扩展的安装;

img
图 9 安装 Python 扩展插件

  • 安装图 10 所示,点击“扩展”按钮,并搜索 Python 扩展插件,找到合适的扩展(这里选择的是第一个,这是 Python 的调试工具),选择“Install”即可安装成功。

img
图 10 安装 Python 扩展插件

有关如何使用 VS Code 运行 Python 程序,可猛击《VS Code运行Python程序》一文详细了解。

VS Code运行Python程序

本节介绍如何使用 VS Code(Visual Studio Code 的简称)编写并运行 Python 程序。值得一提的是,相比 PyCharm、Eclipse+PyDev,使用 VS Code 编写 Python 程序,不用创建项目,直接创建 Python 文件即可。

VS Code创建Python文件

首先,打开 VS Code,会看到如图 1 所示的欢迎界面。

VS Code 欢迎界面
图 1 VS Code 欢迎界面

点击“New File”,或者在菜单栏中依次选择“File -> New File”,如图 2 所示。

VS Code创建文件
图 2 VS Code创建文件

此时可以看到,新建了一个名为“Untitled-1”的文件,此文件是 VS Code 默认创建的文件,没有文件类型,所以在编写 Python 代码前,需要手动将其另存为后缀名为 .py 的文件。

另存为的方式也很简单,使用快捷键“Ctrl+S”,或者在菜单栏中依次选择“File -> Save”,都会弹出如图 3 所示的窗口。

另存为 .py 文件
图 3 另存为 .py 文件

在此窗口中,我们可以设置该新建文件的文件名(包括后缀名),还可以自定义该文件的存储位置。

只有重新将新建文件保存为以 .py 为后缀名的文件,VS Code 才能够识别出来是 Python 文件,后期在此文件中编写 Python 代码时,才能高亮显示。

由此,我们就成功的创建了一个名为“demo.py”的 python 源文件,如图 4 所示。

新建的 Python 文件
图 4 新建的 Python 文件

创建 Python 文件成功后,就可以在该文件中编写 Python 代码了,这里仍以第一个 Python 程序为例,即向“demo.py”文件中编写如下代码:

print("Hello,World")

代码编写完成后,就可以运行了,具体步骤是,使用组合键“Ctrl+F5”,或者在菜单栏中选择“Debug -> Start Without Debugging”,即可看到如图 5 所示的输出结果。

运行结果
图 5 运行结果

图 5 显示的信息中,除了运行结果,还有代码执行过程中产生的信息。有读者可能会想,能否只显示运行结果呢?办法是有的,只需进行如下操作。

  1. 手动将我们创建的 Python 文件放到一个文件夹中,然后将此文件夹引入到 VS Code。例如,这里将前面创建的 demo.py 文件放到了一个 Demo 文件夹(新建的),将此文件夹引入到 VS Code 的方法是,在菜单栏中依次选择“File -> Open Folder”(如图 6 所示),然后找到 Demo 文件夹,点击“选择文件夹”,就可以成功将指定文件夹引入到 VS Code 中。

向 VS Code 引入文件夹
图 6 向 VS Code 引入文件夹

  1. 引入成功,资源管理器(EXPLORER)中如图 7 所示。

VS Code资源管理器
图 7 VS Code资源管理器

  1. 在图 7 的基础上,先点击“demo.py”文件(这一步很重要),使 VS Code 右侧显示该文件,然后点击左侧的 Debug 按钮(小甲壳虫图标),再点击“设置”按钮,如图 8 所示。

跳转到 Debug 界面
图 8 跳转到 Debug 界面

注意,VS Code 的右侧一定要显示有建立的 Python 源文件,才能执行此步,否则会出错。

  1. 此时会弹出一个对话框,选择“Python File”,如图 9 所示。

编译配置
图 9 编译配置

  1. 可以看到,显示出了一个名为“launch.json”的文件,我们需要做的就是将它所包含代码中的 “console”:“integratedTerminal” 改为 “console”: “none”,如图 10 所示。

修改 launch.json 文件
图 10 修改 launch.json 文件

  1. 然后再次运行 demo.py,可以看出如图 11 所示的运行结果。

只显示程序运行结果
图 11 只显示程序运行结果

Python注释(多行注释和单行注释)用法详解

注释(Comments)用来向用户提示或解释某些代码的作用和功能,它可以出现在代码中的任何位置。Python 解释器在执行代码时会忽略注释,不做任何处理,就好像它不存在一样。

在调试(Debug)程序的过程中,注释还可以用来临时移除无用的代码。

注释的最大作用是提高程序的可读性,没有注释的程序简直就是天书,让人吐血!

千万不要认为你自己写的代码规范就可以不加注释,甩给别人一段没有注释的代码是对别人的不尊重,是非常自私的行为;你可以喜欢自虐,但请不要虐待别人。

很多程序员宁愿自己去开发一个应用,也不愿意去修改别人的代码,没有合理的注释是一个重要的原因。虽然良好的代码可以自成文挡,但我们永远不清楚今后阅读这段代码的人是谁,他是否和你有相同的思路;或者一段时间以后,你自己也不清楚当时写这段代码的目的了。

一般情况下,合理的代码注释应该占源代码的 1/3 左右。

Python 支持两种类型的注释,分别是单行注释和多行注释。

Python 单行注释

Python 使用井号#作为单行注释的符号,语法格式为:

注释内容

从井号#开始,直到这行结束为止的所有内容都是注释。Python 解释器遇到#时,会忽略它后面的整行内容。

说明多行代码的功能时一般将注释放在代码的上一行,例如:

#使用print输出字符串
print("Hello World!")
print("C语言中文网")
print("http://c.biancheng.net/python/")
#使用 print输出数字
print(100)
print( 3 + 100 \* 2)
print( (3 + 100) \* 2 )

说明单行代码的功能时一般将注释放在代码的右侧,例如:

print("http://c.biancheng.net/python/")  #输出Python教程的地址
print( 36.7 \* 14.5 )  #输出乘积
print( 100 % 7 )  #输出余数

Python 多行注释

多行注释指的是一次性注释程序中多行的内容(包含一行)。

Python 使用三个连续的单引号’’'或者三个连续的双引号"""注释多行内容,具体格式如下:

'''
使用 3 个单引号分别作为注释的开头和结尾
可以一次性注释多行内容
这里面的内容全部是注释内容
'''

或者

"""
使用 3 个双引号分别作为注释的开头和结尾
可以一次性注释多行内容
这里面的内容全部是注释内容
"""

多行注释通常用来为 Python 文件、模块、类或者函数等添加版权或者功能描述信息。

注意事项
  1. Python 多行注释不支持嵌套,所以下面的写法是错误的:
'''
外层注释
    '''
    内层注释
    '''
'''

  1. 不管是多行注释还是单行注释,当注释符作为字符串的一部分出现时,就不能再将它们视为注释标记,而应该看做正常代码的一部分,例如:
print('''Hello,World!''')
print("""http://c.biancheng.net/cplus/""")
print("#是单行注释的开始")

运行结果:

Hello,World!
http://c.biancheng.net/cplus/
#是单行注释的开始

对于前两行代码,Python 没有将这里的三个引号看作是多行注释,而是将它们看作字符串的开始和结束标志。

对于第 3 行代码,Python 也没有将井号看作单行注释,而是将它看作字符串的一部分。

注释可以帮助调试程序

给代码添加说明是注释的基本作用,除此以外它还有另外一个实用的功能,就是用来调试程序。

举个例子,如果你觉得某段代码可能有问题,可以先把这段代码注释起来,让 Python 解释器忽略这段代码,然后再运行。如果程序可以正常执行,则可以说明错误就是由这段代码引起的;反之,如果依然出现相同的错误,则可以说明错误不是由这段代码引起的。

在调试程序的过程中使用注释可以缩小错误所在的范围,提高调试程序的效率。

Python缩进规则(包含快捷键)

和其它程序设计语言(如 Java、C 语言)采用大括号“{}”分隔代码块不同,Python 采用代码缩进和冒号( : )来区分代码块之间的层次。

在 Python 中,对于类定义、函数定义、流程控制语句、异常处理语句等,行尾的冒号和下一行的缩进,表示下一个代码块的开始,而缩进的结束则表示此代码块的结束。

注意,Python 中实现对代码的缩进,可以使用空格或者 Tab 键实现。但无论是手动敲空格,还是使用 Tab 键,通常情况下都是采用 4 个空格长度作为一个缩进量(默认情况下,一个 Tab 键就表示 4 个空格)。

例如,下面这段 Python 代码中(涉及到了目前尚未学到的知识,初学者无需理解代码含义,只需体会代码块的缩进规则即可):

height=float(input("输入身高:")) #输入身高
weight=float(input("输入体重:")) #输入体重
bmi=weight/(height\*height)       #计算BMI指数
#判断身材是否合理
if bmi<18.5:
    #下面 2 行同属于 if 分支语句中包含的代码,因此属于同一作用域
    print("BMI指数为:"+str(bmi)) #输出BMI指数
    print("体重过轻")
if bmi>=18.5 and bmi<24.9:
    print("BMI指数为:"+str(bmi)) #输出BMI指数
    print("正常范围,注意保持")
if bmi>=24.9 and bmi<29.9:
    print("BMI指数为:"+str(bmi)) #输出BMI指数
    print("体重过重")
if bmi>=29.9:
    print(BMI指数为:"+str(bmi)) #输出BMI指数
    print("肥胖")

Python 对代码的缩进要求非常严格,同一个级别代码块的缩进量必须一样,否则解释器会报 SyntaxError 异常错误。例如,对上面代码做错误改动,将位于同一作用域中的 2 行代码,它们的缩进量分别设置为 4 个空格和 3 个空格,如下所示:

if bmi<18.5:
    print("BMI指数为:"+str(bmi)) #输出BMI指数
   print("体重过轻")

可以看到,第二行代码和第三航代码本来属于同一作用域,但我们手动修改了各自的缩进量,这会导致 SyntaxError 异常错误,如图 1 所示。

img
图 1 缩进不符合规范导致异常

对于 Python 缩进规则,初学者可以这样理解,Python 要求属于同一作用域中的各行代码,它们的缩进量必须一致,但具体缩进量为多少,并不做硬性规定。

IDLE 开发环境对缩进量的设置

在 IDLE 开发环境中,默认是以 4 个空格作为代码的基本缩进单位。不过,这个值是可以手动改变的,在菜单栏中选择Options -> Configure,会弹出如下对话框:

img

如图所示,通过拖动滑块,即可改变默认的代码缩进量,例如拖动至 2,则当你使用 Tab 键设置代码缩进量时,会发现按一次 Tab 键,代码缩进 2 个空格的长度。

不仅如此,在使用 IDLE 开发环境编写 Python 代码时,如果想通过设置多行代码的缩进量,可以使用 Ctrl+]Ctrl+[ 快捷键,此快捷键可以使所选中代码快速缩进(或反缩进)。

Python编码规范(PEP 8)

在讲解具体的 Python 编码规范之前,先来看看图 1 中的代码:

img
图 1 两段功能相同的 Python 代码

对比图 1 中的两段代码你会发现,它们所包含的代码时完全相同的,但很明显,右侧的代码编写格式看上去比左侧的代码段更加规整,阅读起来也会比较轻松、畅快,因为它遵循了最基本的 Python 代码编写规范。

Python 采用 PEP 8 作为编码规范,其中 PEP 是 Python Enhancement Proposal(Python 增强建议书)的缩写,8 代表的是 Python 代码的样式指南。下面仅给大家列出 PEP 8 中初学者应严格遵守的一些编码规则:

  1. 每个 import 语句只导入一个模块,尽量避免一次导入多个模块,例如:
#推荐
import os
import sys
#不推荐
import os,sys

关于 import 的含义和用法会在后续介绍,这里不必深究。
2. 不要在行尾添加分号,也不要用分号将两条命令放在同一行,例如:

#不推荐
height=float(input("输入身高:")) ; weight=fioat(input("输入体重:")) ;

  1. 建议每行不超过 80 个字符,如果超过,建议使用小括号将多行内容隐式的连接起来,而不推荐使用反斜杠 \ 进行连接。例如,如果一个字符串文本无法实现一行完全显示,则可以使用小括号将其分开显示,代码如下:
#推荐
s=("C语言中文网是中国领先的C语言程序设计专业网站,"
"提供C语言入门经典教程、C语言编译器、C语言函数手册等。")
#不推荐
s="C语言中文网是中国领先的C语言程序设计专业网站,\
提供C语言入门经典教程、C语言编译器、C语言函数手册等。"

注意,此编程规范适用于绝对大多数情况,但以下 2 种情况除外:

* 导入模块的语句过长。
* 注释里的 URL。
  1. 使用必要的空行可以增加代码的可读性,通常在顶级定义(如函数或类的定义)之间空两行,而方法定义之间空一行,另外在用于分隔某些功能的位置也可以空一行。比如说,在图 1 右侧这段代码中,if 判断语句同之前的代码多实现的功能不同,因此这里可以使用空行进行分隔。
  2. 通常情况下,在运算符两侧、函数参数之间以及逗号两侧,都建议使用空格进行分隔。

以上就是初学者应该遵循的部分 Python 编码规范,如果想了解更多 PEP 8 的详细信息,可访问 PEP 8官方介绍

Python编码规范的重要性

很多去 Google 参观的人,在用完洗手间后都有这样的疑惑,马桶前面的门上怎么会贴着 Python 编码规范?要知道,Google 对编码规范的要求极其严格,这也能从侧面说明编码规范的重要性。

对于编码规范的认知,很多初学者还仅停留在初级阶段,即只知道编码规范有用,比如命名时使用驼峰式的格式(如 TheFirstDemo),而至于为什么要求这样严格,就不是很清楚了。

本节,将给读者扫除以下 2 个盲区:

  1. Python 编码规范到底有多么重要,它对于业务开发来说,究竟有哪些帮助?
  2. 有哪些流程和工具,可以强制你遵循规定好的编码规范呢?

注意,在讲解过程,会引用以下 2 个编码规范来举例,分别是:

  • 《8 号 Python 增强规范》,通常称之为 PEP8;
  • 《Google Python 风格规范》 简称为 Google Style,这是源自 Google 内部公开发布的社区版本,其目的是为了让 Google 旗下所有 Python 开源项目的编程风格统一。

以上这 2 个编码规范,Google Style 比 PEP8 更为严格,因为 PEP8 的主要面向群体是个人和小团队开发者,而 Google Style 则能够胜任大团队甚至是企业。

Python编码规范到底有多么重要

Python 编码规范重要性的原因用一句话来概括就是:统一的编码规范可以提高开发效率。

而影响开发效率的有 3 类对象,分别是阅读者、编程者和机器,它们的优先级是阅读者>>编程者>>机器(>>表示远远大于)。

阅读者>>编程者

写过代码的人应该深有体会,在实际工作中真正用来码代码的时间,远比阅读或者调试的时间要少。事实也是如此,有研究表明,软件工程中 80% 的时间都在阅读代码。

因此,如果想提高开发效率,首先要优化的不是码代码的速度,而是阅读代码的体验。

其实,很多编码规范本身就是为优化读者体验而存在的,拿命名原则来说,PEP8 第 38 条规定命名不能是无意义的单字母,有意义的名称可以很大程序提高阅读者的体验。

编程者>>机器

说完了阅读者的体验,再来聊聊编程者的体验。笔者常常见到的一个错误倾向就是过度简化自己的代码,这样做会大大降低代码的可阅读性,并且一旦出现 BUG,也不容易检查出来。

例如,阅读如下这行程序:

result = [(x, y) for x in range(10) for y in range(5) if x \* y > 10]

上面这行代码还可以改写成如下这种形式:

result = []
for x in range(10):
  for y in range(5):
     if x \* y > 10:
       result.append((x, y))

以上代码,涉及到了列表和判断循环结构的相关知识,由于还未学到,初学者不需要理解。

对比这 2 种写法,显然后者调理更清楚,更容易理解,编写起来也更轻松。

机器体验也很重要

每个人都希望自己编写的代码能正确、高效地在电脑上执行,但是一些危险的编程风格,不仅会影响程序的正确性,也容易成为代码效率的瓶颈。

例如,PEP8 和 Google Style 都特别强调了,何时使用 is, 何时使用 ==,何时使用隐式布尔转换。不仅如此,Google Style 2.8 还对遍历方式的选择作出了明确限制。

在编程过程中,只要严格遵守编码规范,编写出的代码通常都很健壮,可移植性也很高。

编码规范的自动化工具

既然编码规范的终极目标是提高开发效率。所以,如果每次写代码都需要在代码规范上额外花很多时间,就达不到我们的初衷了。

首先,你需要根据自己的具体工作环境,选择或者制定适合自己公司或团队的编码规范。市面上可以参考的规范,也就是在文章开头提到的 PEP8 和 Google Style。

要知道,没有放之四海而皆准的规范,我们必须要因地制宜。例如在 Google 中,因为历史原因 C++ 不使用异常,引入异常对整个代码库带来的风险已经远大于它的益处,所以在它的 C++ 代码规范中,禁止使用异常。

一旦确定了整个团队所遵从的编码规范,就一定要强制执行,有什么好的办法呢?靠强制代码评审和强制静态或者动态 linter。具体流程是:

  1. 在代码评审工具里,添加必须的编码规范环节;
  2. 把团队确定的代码规范写进 Pylint 里,能够在每份代码提交前自动检查,不通过的代码无法提交。

整合之后,你的团队工作流程就会变成图 1 所示的这样。

自动检查编码规范的工作流程
图 1 自动检查编码规范的工作流程

学到这里,相信你对代码风格的重要性有了全新的认识。

Python标识符命名规范

简单地理解,标识符就是一个名字,就好像我们每个人都有属于自己的名字,它的主要作用就是作为变量、函数、类、模块以及其他对象的名称。

Python 中标识符的命名不是随意的,而是要遵守一定的命令规则,比如说:

  1. 标识符是由字符(A~Z 和 a~z)、下划线和数字组成,但第一个字符不能是数字。
  2. 标识符不能和 Python 中的保留字相同。有关保留字,后续章节会详细介绍。
  3. Python中的标识符中,不能包含空格、@、% 以及 $ 等特殊字符。

例如,下面所列举的标识符是合法的:

UserID
name
mode12
user_age

以下命名的标识符不合法:

4word #不能以数字开头
try #try是保留字,不能作为标识符
$money #不能包含特殊字符
4. 在 Python 中,标识符中的字母是严格区分大小写的,也就是说,两个同样的单词,如果大小格式不一样,多代表的意义也是完全不同的。比如说,下面这 3 个变量之间,就是完全独立、毫无关系的,它们彼此之间是相互独立的个体。

number = 0
Number = 0
NUMBER = 0
5. Python 语言中,以下划线开头的标识符有特殊含义,例如:

* 以单下划线开头的标识符(如 \_width),表示不能直接访问的类属性,其无法通过 from…import\* 的方式导入;
* 以双下划线开头的标识符(如\_\_add)表示类的私有成员;
* 以双下划线作为开头和结尾的标识符(如 **init**),是专用标识符。因此,除非特定场景需要,应避免使用以下划线开头的标识符。

另外需要注意的是,Python 允许使用汉字作为标识符,例如:

C语言中文网 = “http://c.biancheng.net”

但我们应尽量避免使用汉字作为标识符,这会避免遇到很多奇葩的错误。

标识符的命名,除了要遵守以上这几条规则外,不同场景中的标识符,其名称也有一定的规范可循,例如:

  • 当标识符用作模块名时,应尽量短小,并且全部使用小写字母,可以使用下划线分割多个字母,例如 game_mian、game_register 等。
  • 当标识符用作包的名称时,应尽量短小,也全部使用小写字母,不推荐使用下划线,例如 com.mr、com.mr.book 等。
  • 当标识符用作类名时,应采用单词首字母大写的形式。例如,定义一个图书类,可以命名为 Book。
  • 模块内部的类名,可以采用 “下划线+首字母大写” 的形式,如 _Book;
  • 函数名、类中的属性名和方法名,应全部使用小写字母,多个单词之间可以用下划线分割;
  • 常量命名应全部使用大写字母,单词之间可以用下划线分割;

有读者可能会问,如果不遵守这些规范,会怎么样呢?答案是程序照样可以运行,但遵循以上规范的好处是,可以更加直观地了解代码所代表的含义,以 Book 类为例,我们可以很容易就猜到此类与书有关,虽然将类名改为 a(或其它)不会影响程序运行,但通常不这么做。

Python关键字(保留字)一览表

保留字是 Python 语言中一些已经被赋予特定意义的单词,这就要求开发者在开发程序时,不能用这些保留字作为标识符给变量、函数、类、模板以及其他对象命名。

Python 包含的保留字可以执行如下命令进行查看:

import keyword
keyword.kwlist
[‘False’, ‘None’, ‘True’, ‘and’, ‘as’, ‘assert’, ‘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’]

所有的保留字,如下表所示:

andasassertbreakclasscontinue
defdelelifelseexceptfinally
forfromFalseglobalifimport
inislambdanonlocalnotNone
orpassraisereturntryTrue
whilewithyield

需要注意的是,由于 Python 是严格区分大小写的,保留字也不例外。所以,我们可以说 if 是保留字,但 IF 就不是保留字。

在实际开发中,如果使用 Python 中的保留字作为标识符,则解释器会提示“invalid syntax” 的错误信息,如图 2 所示。

保留字作标识符报错信息示意图
图 2 保留字作标识符报错信息示意图

Python内置函数一览表,内置函数和标准库函数的不同

Python 解释器自带的函数叫做内置函数,这些函数可以直接使用,不需要导入某个模块。

如果你熟悉 Shell 编程,了解什么是 Shell 内置命令,那么你也很容易理解什么是 Python 内置函数,它们的概念是类似的。

将使用频繁的代码段封装起来,并给它起一个名字,以后使用的时候只要知道名字就可以,这就是函数。函数就是一段封装好的、可以重复使用的代码,它使得我们的程序更加模块化,不需要编写大量重复的代码。

内置函数和标准库函数是不一样的。

Python 解释器也是一个程序,它给用户提供了一些常用功能,并给它们起了独一无二的名字,这些常用功能就是内置函数。Python 解释器启动以后,内置函数也生效了,可以直接拿来使用。

Python 标准库相当于解释器的外部扩展,它并不会随着解释器的启动而启动,要想使用这些外部扩展,必须提前导入。Python 标准库非常庞大,包含了很多模块,要想使用某个函数,必须提前导入对应的模块,否则函数是无效的。

内置函数是解释器的一部分,它随着解释器的启动而生效;标准库函数是解释器的外部扩展,导入模块以后才能生效。一般来说,内置函数的执行效率要高于标准库函数。

Python 解释器一旦启动,所有的内置函数都生效了;而导入标准库的某个模块,只是该模块下的函数生效,并不是所有的标准库函数都生效。

内置函数的数量必须被严格控制,否则 Python 解释器会变得庞大和臃肿。一般来说,只有那些使用频繁或者和语言本身绑定比较紧密的函数,才会被提升为内置函数。

例如,在屏幕上输出文本就是使用最频繁的功能之一,所以 print() 是 Python 的内置函数。

在 Python 2.x 中,print 是一个关键字;到了 Python 3.x 中,print 变成了内置函数。

除了 print() 函数,Python 解释器还提供了更多内置函数,下表列出了 Python 3.x 中的所有内置函数。

内置函数
abs()delattr()hash()memoryview()set()
all()dict()help()min()setattr()
any()dir()hex()next()slicea()
ascii()divmod()id()object()sorted()
bin()enumerate()input()oct()staticmethod()
bool()eval()int()open()str()
breakpoint()exec()isinstance()ord()sum()
bytearray()filter()issubclass()pow()super()
bytes()float()iter()print()tuple()
callable()format()len()property()type()
chr()frozenset()list()range()vars()
classmethod()getattr()locals()repr()zip()
compile()globals()map()reversed()import()
complex()hasattr()max()round()

表 1 中各个内置函数的具体功能和用法,可通过访问 https://docs.python.org/zh-cn/3/library/functions.html 进行查看。

注意,不要使用内置函数的名字作为标识符使用(例如变量名、函数名、类名、模板名、对象名等),虽然这样做 Python 解释器不会报错,但这会导致同名的内置函数被覆盖,从而无法使用。例如:

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Python开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注Python)
img

最后

🍅 硬核资料:关注即可领取PPT模板、简历模板、行业经典书籍PDF。
🍅 技术互助:技术群大佬指点迷津,你的问题可能不是问题,求资源在群里喊一声。
🍅 面试题库:由技术群里的小伙伴们共同投稿,热乎的大厂面试真题,持续更新中。
🍅 知识体系:含编程语言、算法、大数据生态圈组件(Mysql、Hive、Spark、Flink)、数据仓库、Python、前端等等。

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

.org/zh-cn/3/library/functions.html 进行查看。

注意,不要使用内置函数的名字作为标识符使用(例如变量名、函数名、类名、模板名、对象名等),虽然这样做 Python 解释器不会报错,但这会导致同名的内置函数被覆盖,从而无法使用。例如:

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-mTc8oew3-1712877094807)]
[外链图片转存中…(img-K7s3hg0N-1712877094807)]



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Python开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注Python)
[外链图片转存中…(img-8BN3rO5F-1712877094808)]

最后

🍅 硬核资料:关注即可领取PPT模板、简历模板、行业经典书籍PDF。
🍅 技术互助:技术群大佬指点迷津,你的问题可能不是问题,求资源在群里喊一声。
🍅 面试题库:由技术群里的小伙伴们共同投稿,热乎的大厂面试真题,持续更新中。
🍅 知识体系:含编程语言、算法、大数据生态圈组件(Mysql、Hive、Spark、Flink)、数据仓库、Python、前端等等。

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-k4PuPVzL-1712877094808)]

;