Python 快速入门 🚀
Table of Contents
Python 语言核心,有编程经验的可以 2 ~ 3 小时完成
目标 #
- 了解 Python 基本数据类型,集合类型,流程控制,能够刷题
- 了解 Python OO 特性 - 用 Python 进行开发的基础
- 了解 Python 模块及包结构
只涉及开发最基本,最核心的东西,不包括实际项目开发需要的各种知识点,如 IO,异步,数据分析,等等,Python 的包和框架很多,掌握语言基础后可以在项目实践中逐一学习。
安装 Anaconda #
- 下载并安装 Anaconda: https://www.anaconda.com/products/individual
- 运行 Anaconda Navigator
- 创建一个独立的虚拟环境并激活它, 可以通过上面的图形化界面,也可以通过命令行,例如 mth251:
[I] ➜ mkdir workspace/suss/MTH251 && cd workspace/suss/MTH251
[I] ➜ conda create -n mth251 python=3.8.5
- 切换到 mth251,然后安装 jupyter notebook:
[I] ➜ conda activate mth251
(mth251) 13:03:38 in workspace/suss/MTH251 via 🅒 mth251
[I] ➜ conda activate mth251
(mth251) 13:11:18 in workspace/suss/MTH251 via 🅒 mth251
[I] ➜ jupyter notebook
jupyter notebook 是一个在线互动的编程环境,可以敲下第一行代码:
print("Hello, world!")
基本语法 #
㊫ 结合代码看一目了然: notebook
Primitive Data Types & Operators #
Python Collections #
Python Program Structure #
Python OO #
Misc. #
这部分涉及到 Python 的内部工作原理,属于核心进阶知识:
Module, Package, Library #
这些概念都是围绕着代码的组织和重用。
module
是放在一起的变量,函数,class 等,一段有逻辑的可执行代码,Python import 的基本单位,简单讲以一个 Python 文件(.py 结尾)就是一个 module。Python 提供了大量的 built-in module - Datetime,Random,re 等。自带的数据结构 string,list,程序功能 function,class,等这些也是由自带的底层 module 来实现的。module 也可以有其它语言编写(如 Python 的原装 Cpython)。built-in 的 module 是不需要 import 的, Python 虚拟机启动时自动装载。
package
则是一组 module 通过文件目录的方式组织在一起:
Graphics/
__init__.py
Primitive/
__init__.py
lines.py
fill.py
text.py
...
Graph2d/
__init__.py
plot2d.py
...
Graph3d/
__init__.py
plot3d.py
Formats/
__init__.py
png.py
gif.py
tiff.py
jpeg.py
__init__
是 package 的标志文件,当 package 被 import 时自动执行,所以可在 __init__ 里定义和初始化 package 需要的全局变量。
Python 开发的比较早,还没有类似 Java 里 package namespace 的概念,直接用文件目录来管理 module,避免命名冲突的问题。
module、package 的增、删、改、查,都是可以通过 api 操作的。
library
没有明确定义和组织方式,就是把相关的 package/module 放在一起提供一种完整的功能,如 Python 自带的 Standard Library(包含了各种基础的 pacakge 和 module),开发时常需要第三方 library,如用于绘图的 Matlablib,机器学习的 Pytorch,等等,这些 library 需要下载安装才能使用。
要成功 import,package/module 必须在 Python 可查找的目录下:
import sys
print(sys.path)
修改方法一个是直接修改 sys.path:
import os
import sys
fpath = os.path.join(os.path.dirname(__file__), 'utils')
sys.path.append(fpath)
print(sys.path)
或者修改 PYTHONPATH
环境变量,这个和 Java 的 CLASSPATH 类似。
Script #
有几种形式:
# add1.py
def add(a, b):
return a+b
# app.py
import add from add1
result = add(1,2)
print(result)
# add2.py
def add(a, b):
return a+b
result = add(1,2)
print(result)
if __name__=="__main__":
result = add(3,4)
print(result)
#!/usr/bin/env python3
# add3.py
def add(a, b):
return a+b
if __name__=="__main__":
result = add(1,2)
print(result)
三个文件其实都差不多:
- 第一个倾向于称之模块 module,定义或声明,没有执行什么,可以被别的 Python 文件作为模块引入并调用(import);
- 第二个倾向于称之脚本 script,主要是可以独立执行(也可以 import,但通常只把它当作程序入口),__main__是主函数入口,输出如下:
[I] ➜ python add2.py
3
7
- 第三个进一步把上面脚本变为像 bash script (第一行类似 #!/usr/bin/env bash)那样可直接执行:
[I] ➜ add3.py
3
7