前言

魂魄妖梦天下第一可爱!

该教程共有五章,面向受众为零基础非计算机专业学生,旨在让你在个人计算机上成功部署一份 Python 运行环境以及初步接触 Python,如果您读完之后仍有余力,不妨看看第四章“步入高阶”最后一节“深入学习”里面的推荐文章继续深入此语言;如果您在复刻实践过程中出现了某些不能解决问题,可以跳转至第五章“出现问题?”或使用搜索引起检索一下,请尽量不要使用百度、360 或搜狗等国内搜索引擎!

好了,让我们开始吧!では、ゲームを始めましょう!

安装环境

下载软件包

Python 是开源项目,所以你可以在很多地方找到它的二进制可执行文件分发包,包括但不限于其官网、Github 和广大镜像站,在这里选择 TaobaoNPM 镜像站:CNPM Binaries Mirror,根据您的需要和操作系统选择相应的版本。

Python 发行版分为几个阶段:测试、稳定、维护、过时,您可以从其文件的命名推测该版本正在开发(rc/test/beta/alpha)或者已经发布,推荐新人使用稳定(stable)及正在维护版本(截止写稿日 22/07/12,stable 为 3.9 和 3.10,3.7 以上为还在维护),完全不建议使用 2.x(因为已经过时且停止维护),如果您犹豫不决,完全可以选择 stable 任一小版本。

点开 3.10.5 版本,您会发现里面有很多文件,上面两个文件夹为 Windows 环境下安装 Python 的拓展选项,包括标准库的测试套件、pip 包管理器、tcl/tk 等等可以不必理会,选择对应系统架构的二进制可执行文件下载即可(Windows 系统后缀名为 exe、Macos 后缀名 pkg、Linux 发行版使用 tar.xz 或 tgz 编译,embed 意为便携版不建议新人安装,含有-amd64 为 64 位未含有为 32 位,电脑设置-系统信息里面可查看)

可以看到我使用的是 64 位 Windows 系统,所以我需要下载名为“python-3.10.5-amd64.exe”的文件,好了现在你得到了一份完整的二进制可执行文件,现在可以进入第二节“标准化安装”或者第三节“自定义安装”了!

二者有什么区别?

两种方式在安装上并没有什么本质的区别,都将在您的系统上部署一份 Python 的解释器用于运行 Python 的源码,如果您只是为了运行某些特定的项目且没有深入学习的想法,您可以直接选择第二节进入标准化安装模式;如果您想自定义安装位置和配置某些东西利于以后的学习,您可以跳过直接进入第三节自定义安装,自行选择想要安装的套件,二者任选其一即可!

标准安装

运行 Python 可执行文件时会进入安装模式选择界面,在这里您可以选择默认项(标准模式)安装和自定义安装,标准模式会安装在/user/AppData/Local/Programs文件夹下并默认安装 IDLE(Python 自带的代码编辑器)、pip 包管理工具和官方文档,还会创建后缀名和文件关联,如果您追求省事或者害怕出错,您可以选择此安装方式,但需要注意务必勾选最下方“Add Python to PATH”,是否安装启动器(Launcher)完全依靠您的喜好

图:安装选择界面

图:默认模式安装进度

图:安装成功页面,点击“Close”即可

出现上图即为安装成功,如果一切顺利的话,Python 已经安装到您的系统中并自行配置了环境变量,这样您就可以直接在命令行运行交互式或 Python 脚本文件了。您可以使用命令行进行测试安装是否成功:同时按下键盘Win徽标键+R键呼出 Windows 运行,然后输入cmd打开命令行界面使用python或者python -V进行测试

上图即可证明安装成功,可以进行下一章节的学习了!

自定义安装

自定义安装可以提供更多的可配置项,您可以依靠自身喜好选择安装可选功能,在默认安装页面选择第二项进入可选功能安装页面

自上到下选项所代表的含义下述,如果没有特殊需求,您可以参考上图我的选择,这对于一个新手来说绰绰有余,后续您也可以在官网或第三方镜像站下载安装其余功能!选择后点击 Next 进入安装配置页面

  1. 安装 Python 的官方文档(英文)
  2. 安装 pip 包管理工具
  3. 安装 tcl/tk 和自带的代码编辑器 IDLE
  4. 安装标准库的测试套件
  5. 安装 python 启动器和为所有用户安装

自上到下选项所代表的含义下述,同样您也可以参考我的设置

  1. 为所有用户安装(选中会将安装位置调整到系统盘/Program Files
  2. 关联所有的.py/.pyc 文件使用 Python 运行
  3. 创建安装应用的快捷方式(?)
  4. 添加 Python 到系统环境变量
  5. 预编译添加 Python 的标准库
  6. 下载调试符号
  7. 下载用于 VS 的调试符号(不使用 VS 的可以忽略)
  8. 选择安装位置

该项配置完成后可点击 Install 进入安装过程

图:自定义安装模式安装进度

图:安装成功页面,点击“Close”即可

出现上图即为安装成功,如果一切顺利的话,Python 已经安装到您的系统中并自行配置了环境变量,这样您就可以直接在命令行运行交互式或 Python 脚本文件了。您可以使用命令行进行测试安装是否成功:同时按下键盘Win徽标键+R键呼出 Windows 运行,然后输入cmd打开命令行界面使用python或者python -V进行测试

上图即可证明安装成功,可以进行下一章节的学习了!

配置环境

环境变量

环境变量是操作系统中的一类特殊存在的对象,我们一般使用的是 path 环境变量,当我们在 Shell 里面调用某些应用程序但没有给予相应的路径时,系统除了在根目录文件夹下寻找该应用程序外也会在 path 所指定的目录中去寻找,这就意味着将某些文件夹添加进入 path 环境变量之后就可以在任何时间任何地点使用 Shell 输入其应用程序调用且不用标注其所在路径

在 Windows10 及以前的系统,您可以右键此电脑->属性->高级系统设置->(页面最下面)环境变量->(在上面那一栏)选中 path 然后点击编辑,即可添加、更改 path 环境变量;在 Windows10 及以上的系统,您也可以按下 Win 徽标键或单击任务栏搜索按钮,输入“高级系统设置”然后进入“查看高级系统设置”进行更改

当然,您也可以在该应用程序可执行文件所在的文件夹使用Shift键+右键呼出高级右键菜单,选择在此处打开PowerShell,这时候打开的 PowerShell 会默认切换到所在的文件夹,就可以使用.\AppName.exe(“.\”意为在当前目录下寻找,相对应的为在根目录和 path 环境变量指定的目录中寻找)打开名为 AppName 应用程序

认识 Python

Python 是一门 开源的 解释性 脚本语言,它最擅长的工作是自动化、数据处理和嵌入代码开发,当然你也可以添加浩如烟海的第三方库/包/模块使其可以用于 Web 服务器、游戏、桌面应用甚至你能想到的各种东西。由于其只需要经由解释器运行,所以亦可称为全平台(区分 Java 一次编译到处运行,Python 的全平台需要安装解释器),且相较于 C/Cpp(Python 的解释器是用其他语言如 C、Cpp、Java 等编写的)运行缓慢

Python 所编写的应用程序有很多,大到数以亿计的互联网应用小到只有两三行代码的脚本文件,比如内置于 Linux 发行版里面的各大包管理器工具 yum 或 apt、比如知名的社区平台 Facebook 豆瓣和知乎,Python 作为脚本语言的好处就是易于学习易于使用且开发效率高(输出“Hello World!”仅需要一行代码!)

认识 pip

pip 是 Python 的一个包管理工具,其内置在 Python 默认安装器中,您可以使用 Shell 调用 pip 应用程序安装、管理、卸载 Python 的第三方包,由于天朝众所周知的网络环境,pip 下载默认包仓库文件较为缓慢,推荐切换为国内的镜像仓库源,在这里以清华大学镜像源为例分别演示全局切换和当前包切换

# Tips:[参数]为必备参数
# 临时替换
>>>pip install [PackageName] -i [MirrorAddr]
e.g.:pip install [PackageName] -i https://pypi.tuna.tsinghua.edu.cn/simple
使用某个镜像站获取并安装当前包,注意simple 不能少
# 全局替换
>>>pip config set global.index-url [MirrorAddr]
e.g.:pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
将全局配置替换为镜像站地址,替换后可安装任一包测试哦

这里罗列了一些 pip 的命令,您可以复制到您喜欢的地方随时查阅

# Tips: [参数]为必备参数, / 意为两种指令同义
pip -V/--version 查看pip应用程序版本
pip -h/--help/help 查看pip应用程序帮助
pip install [PackageName] 安装某个包
pip install [PackageName] -i [MirrorAddr] 通过镜像站安装某个包
pip uninstall [PackageName] 卸载某个包
pip list 列出当前环境中已安装的全部Python包

认识 shell

Shell,意为壳。用于接收用户发出的指令并处理调用相关应用程序,在 Windows 系统下,你可以使用 PowerSehll 或者类似 Shell 的 cmd.exe 应用程序,在验证安装时我们就是用了 cmd.exe 调用 python.exe 和 pip.exe 进行测试,在 Shell 里面,你可以使用python进入 Python 的交互式开发(用户输入一行代码或一个代码块,python 解释器即时运行并返回结果)或者使用python FileName.py运行已经编写好的脚本

图:使用 cmd.exe 进入 Python 交互式开发

图:使用 Shell 运行 Python 脚本

经过此章节的学习,您以及了解了一个开发者必备的基础知识理论的学习,接下来将很简洁的介绍一下 Python 的语言基础并编写第一个 Python 脚本应用

你好,世界

认识 IDLE

IDLE 是 Python 的集成开发和学习环境(简单理解就是可以给你提供写代码的环境),是完全使用 Python 工具包编写的,具备基本的 IDE 功能(异常提示,代码高亮,代码提示等等),对于新学者或者仅仅是应付考试的同学来说,熟练使用 IDLE 是必备的技能之一。如果您使用的是默认安装方式,则在安装中 IDLE 会自动安装到您的系统当中;如果是自定义安装则需要您手动选择。

图:使用搜索启动 IDLE

成功安装 Python 后您可以在开始-Python 文件夹中找到 IDLE,或直接键入 IDLE 进行搜索来启动它,默认启动为一个交互式的开发界面,你可以在交互式界面随机键入 Python 语法或某些函数来进行测试获得结果;也可以选中菜单中的“File”-“New File”新建一个 py 文档编写 Python 脚本,编写完成后选中菜单中的“File”-“Save”或者“Save As…”保存后选中菜单中的“Run”-“Run Module”运行脚本

图:交互式和编写运行 Python 脚本

编写程序

现在已经了解了基础知识,认识了集成开发环境,让我们上手编写第一个 Python 脚本吧!首先使用 IDLE 新建一个空白脚本文件(如果忘记如何操作的话不如回顾一下本章第一节的内容),然后依次在该脚本文件中键入以下两行代码,稍后我会解释这些代码的具体作用

# -*- coding: UTF-8 -*-

print('Hello World!')

Tips:Python 是一门以强调代码的可读性和简洁的语法为主的编程语言,故其最大的特点为使用空格缩进划分代码区块而非使用大括号、分号等进行区分,每一行都为单独的代码且末尾不需要加任何符号,代码区块(如条件、循环、函数、类)使用固定的行首空格缩进(推荐使用Tab键

该脚本文件的第一行# -*- coding: UTF-8 -*-意为声明该脚本的编码方式(有关编码的理解可以自行使用搜索引擎检索),为了防止出现程序输出除英文外其他语言的乱码情况,我们一般声明使用 Unicode 进行编码,这里使用的是 UTF-8,您可能也会在其他网站上看到程序开头除了声明编码外还会出现诸如#!/usr/bin/python的一行代码,这是为了在 Linux/Unix 系统中声明 Python 的路径以防止找不到解释器(您可以在 sh 脚本中看到类似的写法),如非必要此行代码可以省略(声明后意味着写死了 Python 解释器所在的位置)

其实在上文中,我们已经不止一次的使用了print("Str")这一行代码,这一行代码意为调用 Python 的一个函数print(),它的作用是将所接收到的参数(就是括号中的部分)输出到终端中,我们在这里给予了一个“字符串”类型的参数:"Hello World!"(使用单引号和双引号无区别)使其输出(有关数据类型、函数、方法的概念在此教程中不予以赘述,请参阅第四章最后一节深入学习)

运行程序

在上一节中您已经编写了一个最简单的 Python 脚本,现在我们来试图运行它,可以使用两种方式进行运行:使用 IDLE 直接运行或者保存后使用 Shell 运行,我们逐一介绍

  • 使用 IDLE

    编写完成后如果您直接点击菜单中的“Run”选择“Run Module”则会弹出一则报错信息“Source Must Be Save…”,这是因为您的源代码需要保存后才可以使用 IDLE 运行,参照本章第一节保存在任意位置(推荐选择一个容易记忆的路径进行保存您在学习中产生的所有源代码)后再次执行运行命令就可以发现 IDLE 中正确的输出了“Hello World!”,您也可以尝试着将双引号中的字符串替换一下

  • 使用 Shell

    在学习过程中,请务必掌握使用 Shell 运行 Python 脚本的能力!使用 IDLE 编辑器编辑完成当前代码后,将代码文件保存到一个易于记忆的文件夹当中,然后在该文件夹使用Shift键+右键呼出高级系统菜单,选择在此处打开PowerShell窗口(我这里有“在终端中打开”是因为我安装了 Terminal 应用)

    而后在 Power Shell 中使用python .\FileName.py的指令运行您所编写、保存的脚本文件,可以发现 Power Shell 中正确的输出了“Hello World!”,您也可以尝试着将脚本中双引号里面的字符串替换一下

在脚本运行中出现了问题不能正常的输出“Hello World”?不妨参考一下第五章,那里罗列了一些新人刚刚开始编程时容易犯的一些问题和解决问题的方式

步入高阶!

富文本编辑器

上文我们演示了使用 IDLE 进行 Python 的开发和调试(测试您的代码正确与否的一种方式),但是现在已经是 2022 年,如此老旧复古的 UI 不仅不美观,还存在着英文 UI 导致初学者一头雾水不知所措的情况,所以我们介绍一种更高级的应用:富文本编辑器,可以大幅提高我们的开发速度和质量

图:团队开发项目,VS Code 截图

何为富文本编辑器?

富文本编辑器区分于普通的文本编辑软件(如 Windows 的 Notepad),前者拥有对于多种语言(如编程语言 C、Cpp、Java、Python 等,文本标记语言 HTML、Markdown 等,数据文件 Json、CSV 等,各类配置文件 Yaml、INI 等)的支持(代码高亮、代码格式化、异常报错等等)、浩如烟海的插件支持、自定义客制化 UI 主题以及和各类工具良好的集成兼容性(如 Git/SVN、Shell、SSH)

主流的富文本编辑器亦有很多种,如巨硬做的 VS Code,JB 做的 Fleet、个人开发的 Sublime Text(收费)、GitHub 做的 Atom 和 Linux 的 Vim,任选其一安装即可

我将使用 VS Code(注意区分 Visual Studio/VS,后者为 IDE,我们下一节就会讲到)进行演示,其他富文本编辑器的功能大抵都是大同小异,进入官网Visual Studio Code - Code Editing. Redefined,您可以直接点击主页上的“Download For Windows,Stable Build”进入下载页面;或者可以选择下面一行中的“other platforms”进入多平台选择页面,推荐选择“System Installer”一行(64 位、32 位和 ARM)

安装应用以自己喜欢的方式安装即可,这里不再赘述,安装完成后运行会首先出现欢迎界面,您可以在其中自行选择配置主题、文件关联和学习技巧,右下角会提示安装“简体中文语言包/Simple Chinese Language Package”,选择 Install 安装重启应用即可,有关 VS Code 的配置、美化教程可自行检索

有关安装、使用方面的问题,可以参考幽蓝伊梦的视频:幽蓝伊梦视频教程,或加入其 QQ 群:871 302 808

深入学习

恭喜您,目前您已经掌握了部署一份 Python 开发环境并熟悉了简单的编写运行 Python 脚本的能力,如果还想继续深入了解学习这门语言的话,这里罗列了一部分编者自认为质量较高的教程/文档,您可以选择较为感兴趣的教程进行学习,预祝您在以后学习愉快!(如果侵权请联系编者删除)

出现问题?

Q1:在 shell 运行python跳转至 Windows Store?

右键开始-搜索,键入“管理应用执行别名”,将应用安装程序“Python/Python3”关闭,另外请在安装 Python 过程中选中“Add Python to PATH”

Q2:’python’ 不是内部或外部命令,也不是可运行的程序或批处理文件。

python 解释器未添加到 path 环境变量中,参考章一重新安装或手动将 Python 安装目录添加到 path 环境变量当中

Q3:Python 运行正常但 pip 输出“不是内部或外部命令”?

pip 应用模块未处于 path 环境变量中,使用python -m pip替换 pip 指令或将 pip 所在路径“[PythonInstallPath]/Scripts”添加到 path 环境变量当中

Q4:程序输出中文乱码!

是否在脚本文件头部添加编码信息?尝试修改为 UTF-8 编码模式!

Q5:我在自定义安装时忘记安装了某些我需要的东西!

再次运行 Python 安装包,选择“Modify”项进行重新选择(无法修改安装路径!)

Q6:我无法正常输出 Hello World!

仔细检查是否使用了中文的标点符号?是否遗漏了另一半的引号或括号?尝试在搜索引擎检索 Shell 返回的异常信息,这将会很有帮助!

Q7:我的 Python 文件在 VS Code 提示“受限模式”!

选中 VS Code 菜单栏文件-首选项-设置,在搜索框中键入“security”,将”security.workspace.trust”选项取消选中即可关闭工作区信任模式!

本章内容不定期添加,如有其他问题可以加入群聊或使用搜索引擎检索!

写在最后

本文编者:上杉夏相(SSXX_233)

本文校对:阿忆(GoodAN)

本文吉祥物:幽蓝伊梦(Kawaii Desu)

非常感谢您能读完此篇教程,如果您对教程中的某些东西产生疑惑或者发现教程的错误,可以使用站点/Links页面最下方的联系方式联系编者,推荐加入上杉夏相的 QQ 群[827 327 623]与众多大佬一同吹水解决问题!

本文及文章内所用到的代码文件除特殊声明外均为编者原创,本文采用 CC BY-NC-SA 4.0 协议,在这里感谢 GoodAN 同学在本文编写中给予的建议以及发色图加快进度,感谢幽蓝伊梦的冰块合集中的群友提供的新手常犯的错误章节的编写思路(笑)。我一向不建议完全的计算机小白学习软件工程或计算机科学与技术,没有思维思考能力只会给自己和解决问题的人带来更大的麻烦,另烦在提问之前先看看这一篇别像弱智一样提问 | 上杉の个站 (ssxx.site)

该 PDF 最后生成日期为:2022/07/17 10.40.00 UTC+8

Python 学习笔记

Python 内置函数

计算平方,开方

# 使用自带库
pow(x,y)
pow(x,0.5)
# 使用第三方库numpy
import numpy
numpy.square(4) #4的平方
numpy.sqrt(16) #16的开方
# 使用数学函数
import math
math.sqrt(x)

格式化字符/数字

# 使用字符串格式化
a = 12.345
print("%.2f" %a)
# 使用函数格式化数字
a = 12.345
round(a,2)

进制转换

10->16:hex(20)
10->8:oct(20)
10->2:bin(20)
16->10:int("0x14",16)
8->10:int("0o24",8)
2->10:int("0b10100",2)

格式化字符串

^, <, > 分别是居中、左对齐、右对齐,后面带宽度
:号后面带填充的字符,只能是一个字符,不指定则是用空格填充
+、-表示在正数前显示+,负数前显示-,空格表示在正数前加空格
b、d、o、x 分别是二进制、十进制、八进制、十六进制

%格式化输出

#整数的输出
%o --- oct 八进制
%d --- dec 十进制
%x --- hex 十六进制

# 浮点数输出
%f --- 默认保留六位小数
%.xf --- 保留x位小数
%e --- 默认保留六位小数,指数方式输出
%.xe --- 以x位小数指数方式输出
%g --- ≥六位小数形式,否则科学计数法

# 使用round()函数:
round(number[,ndigits])
number-数字表达式
ndigits-四舍五入的位数,默认为零
TIPS:
默认为零返回int类型
参数为零返回float类型

# 字符串输出 %s:
%10s --- 右对齐,占10
%-10s --- 左对齐,占10
%.2s --- 截取两位字符
%10.2s --- 右对齐,占10位,截取两位

其他代码

\ 续行符
\\ 反斜杠符号
\' 单引号符号
\" 双引号符号
\a 响铃
\b 退格
\e 转义
\000 空符号
\n 换行
\v 纵向制表符
\t 横向制表符
\r 回车
\f 换页
\o 八进制数代表的字符
\x 十进制代表的字符

format()函数格式化

# 位置匹配
# 不带编号{},不可调换顺序
# 带数字编号{1},{2},可调换顺序,可重复调用,默认从零开始
# 带关键字编号{a},{b},可调换顺序,可重复调用

# 格式转换
'{:b}' - 二进制输出,同理o,d,x
'{:c}' - 转换成Unicode字符串
'{:n}' - 数字,分类型输出
'{:%}' - 六位小数百分数输出,加%
TIPS:
:前面可以加位置匹配的数字,默认为0
进制转换也可以在字母前加#

# 对齐&补全
< - 右对齐字符串
> - 左对齐字符串
^ - 居中对齐字符串

# 示例
print('{:^30}'.format("hello world"))
# 30位居中字符串
print('{:=^30}'.format("hello world"))
# 30位居中字符串且自动补齐
print('{:=>30}'.format("hello world"))
# 30位右对齐且自动补全
print('{:.2s}'.format("hello world"))
# 截取前两位字符串
print('{:.2f}'.format(1.234))
# 截取前两位浮点数

# 正负号显示
> '{:+f}; {:+f}'.format(3.14, -3.14) # 总是显示符号
'+3.140000; -3.140000'
> '{: f}; {: f}'.format(3.14, -3.14) # 若是正数,则在前面留空格
' 3.140000; -3.140000'
> '{:-f}; {:-f}'.format(3.14, -3.14) # 负数显示符号,正数无显示
'3.140000; -3.140000'

类和函数

若一个 function 为螺丝刀 或者 扳手 或者 锯子……那么 一个 class 可能是一个工程师培训方案;当你使用 function 时你必须要清楚各个流程与 functions 之间的来龙去脉,然后拼装它们;当你使用 class 时,先用这套方案培训出一个 instance,在此可以比作工作人员,然后你只需要给工作人员下达更抽象的目标命令,工作人员就会按照方案(class)来执行。class 设计要比 function 困难很多,但是设计完毕,实施要比 function 简单很多。function 对过程打包,class 对过程分类。class 相比于 function 来说更清晰、代码更少。

面向对象

把现实生活的事物以及关系,抽象成类,通过继承,实现,组合的方式把万事万物都给容纳了。实现了对现实世界的抽象和数学建模。

有一天你想吃鱼香肉丝了,怎么办呢?你有两个选择 1、自己买材料,肉,鱼香肉丝调料,蒜苔,胡萝卜等等然后切菜切肉,开炒,盛到盘子里。 2、去饭店,张开嘴:老板!来一份鱼香肉丝!这就是 1 是面向过程,2 是面向对象。

面向对象三大特性

1、封装:隐藏对象的属性和实现细节,仅对外提供公共访问方式,将变化隔离,便于使用,提高复用性和安全性。
2、继承:提高代码复用性;继承是多态的前提。
3、多态:父类或接口定义的引用变量可以指向子类或具体实现类的实例对象。提高了程序的拓展性。

面向对象的组成

属性:用来描述具体某个对象的特征。比如小志身高 180M,体重 70KG,这里身高、体重都是属性。一般来说都是一些变量(?)

属性属于对象静态的一面,用来形容对象的一些特性,方法属于对象动态的一面,咱们举一个例子,小明会跑,会说话,跑、说话这些行为就是对象的方法,一般来说都是函数(?)