前言
Python是目前非常流行的编程语言,这篇文章将对其相关入门内容进行说明。
基础说明
写这篇文章时Python最新发布的版本为 Python 3.11.3 。 目前市面上常见的用到的Python大版本为Python2和Python3,这两者是完全不兼容的。这篇文章将以目前最新的版本进行说明。
使用官网的Python安装包安装完成后一般会有下面一些东西:
- Python解释器(Interpreter)
Python解释器是Python的核心,Python代码文本需要通过解释器解读执行; - Python标准库
Python内置的库; - pip工具
用于下载和管理python第三方包的工具; - IDLE
自带的轻量级的IDE,通常可以不用管它; - 语言使用文档和库文档
Python是一个脚本语言,你可以打开文本编辑器直接编写脚本代码,然后丢给解释器去解读这些脚本代码并执行相关操作;或者也可以直接打开解释器输入脚本代码并执行。
Python解释器是Python的核心,很多软件中如果用到的Python,都会单独打包一个Python解释器到软件中。
Python主要优势有两点:
- 语法简单且功能丰富
这是Python早期时最大的优势,简单且功能丰富,上手使用非常简单,所以吸引了很多非专业程序员来使用(特别是很多科研人员); - 第三方库丰富
因为有上面的原因,目前Python的第三方库非常丰富,而这又反过来促进了Python的流行;
Python的主要缺点是性能差(所有脚本语言的通病)。不过很多时候这并没有关系:一方面现在计算机性能强;另一方面大部分使用场景下程序运行性能要求并不高,差个几十上百倍也没什么影响(可能也就是几十毫秒和几秒钟的区别)。
Python安装
Windows
Windows下安装比较简单,直接从官网下载安装包进行安装即可:
安装时记得勾选添加Python的环境变量,如果没有的话也可以安装完成后手动添加:
一切OK的话就可以在命令提示符窗口中打开Python解释器了,在解释器中输入代码回车即可执行:
Ubuntu
现在的大部分Linux发行版中是自带Python的,只不过通常版本可能不是最新的,比如在 Ubuntu 20.04.6 中默认版本是 Python 3.8.10 :
可以自己下载源码编译安装最新版本的:
# 安装编译环境
sudo apt install build-essential
# 安装相关依赖
sudo apt install -y libffi-dev libreadline-dev readline-common libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev checkinstall
# 下载Python源码,地址可以从官网获取
wget https://www.python.org/ftp/python/3.11.3/Python-3.11.3.tar.xz
# 解压下载到的源码
tar -xJf Python-3.11.3.tar.xz
# 进入源码目录
cd Python-3.11.3/
# 配置编译
./configure
# 进行编译
make
# 安装
make install
# 按照上面的配置、编译、安装方式讲覆盖原有的Python
# 下面方式可以将新的python安装到指定目录
# --prefix=用来指定安装目录,--enable-optimizations是用来优化编译的选项
# ./configure --prefix=/home/nx/python3113 --enable-optimizations
# make
# make altinstall
# 注意这个方式安装完成后还需要手动将新的python程序目录添加到环境变量
开发环境
Python流行的开发环境挺多,下面介绍一些我用过的:
Thonny
https://thonny.org/
只是学习或是小型项目的话推荐使用这个,简单好用。
Thonny安装完成后是自带Python解释器的,只不过可能版本不是最新的,如果需要用最新的版本可以自行配置:
Visual Studio Code
https://code.visualstudio.com/
Windows 下直接去官网下载安装包进行安装即可。(安装时可以勾选将VS Code添加到系统上下文菜单)
Ubuntu 中使用下面命令进行安装:
sudo snap install code --classic
安装完成后在VS Code安装Go扩展:
安装完扩展就可以使用了:
spyder
https://www.spyder-ide.org/
这个主要用于科学计算等方面。
程序编写
Python的程序通常写在 .py
为后缀的文件中,比如前面 VS Code 演示中的 test.py 文件。程序编写本身主要是需要了解语法本身,如果要实现一些稍微复制的功能的话可能还会需要用到标准库等。这些内容不在这篇文章中展开,可以参考官方文档中 教程(Tutorial) 部分:
英文文档:https://docs.python.org/3/
中文文档:https://docs.python.org/zh-cn/3/
模块和包
对于简单给工作通常可以把所有代码都写到一个 .py
文件中,但是如果是复杂的项目这样就不太好了,所以通常是将各部分代码按照功能逻辑分别写道不同的 .py
文件中。这些许多的文件需要进行组织,在Python中通常使用模块和包来进行描述。Python通常说的库就说模块或者包。
下面演示中 #
及其后面内容为注释信息。
模块(module)
Python中每个 .py
文件其实就是一个模块,下面是个最简单的模块使用演示:
程序在运行后会生成 __pycache__
文件夹,其中有 .pyc
格式文件,这是一个临时的编译后的文件,可以加快下次程序运行的速度。
模块导入有多种方式:
# 下面方式是导入整个模块,在当前文件中通过模块名或是设置的别名来使用
import module # 导入整个模块
import module1,module2 # 导入多个模块
import module as alias # 导入整个模块并命名为alias
# 下面方式是从模块中导入成员,这样在当前文件中就可以直接通过成员名来使用
from module import member # 从模块中导入成员
from module import * # 导入模块中所有成员
.py
文件作为模块使用是起作用的只有内部定义的各种成员,而流程上的代码并不会执行。上面的例子中如果想要测试 module1 中的函数必须要借助另外一个 .py
文件。不过其实Python也有机制也处理这个问题,让单个的模块直接可以进行测试:
上面的 __name__
是每个文件都自带的变量,当用作普通脚本执行时该变量的值为 __name__
,当用作模块使用时它的值就是模块名。
Python导入模块时解释器会依次通过下面路径查找模块:
- 当前目录
PYTHONPATH
(环境变量)下的每个目录
环境变量可以使用sys.path
打印,可以通过sys.path.append(path)
临时添加新路径;- Python 默认的安装目录
包(package)
对于大型项目来说只用模块基本还是不够用的,所以又有了包的概念。包其实就是一个文件夹,文件加中可以有多个模块,除了一般的模块外还需要有一个名称为 __init__.py
的文件(内容可以为空),该文件用于标识该文件夹是一个包。
包名就是文件夹名称,包中的模块相当于该包中的成员:
包与其内部模块等的导入方式也有多种:
import package.module # 从包中导入某个模块,使用时必须用package.module方式来使用
import package.module as alias # 从包中导入某个模块并命名为alias,使用时可以直接用alias使用
from package import module # 从包中导入某个模块,使用时可以直接用module方式使用
from package import module as alias
from package.module import member # 从包中的某个模块导入成员
from package.module import *
在导入包时会自动导入 __init__.py
文件,并执行其中代码,通常可以在该文件中做一些包的初始化操作或者导入包中的模块:
包中也可以嵌套包。
pip和换源
pip
是Python的包管理工具,可以用来下载、卸载、管理各种第三方模块等。可以使用 pip help
来查看该工具的使用方法:
下面是一些常使用命令:
# 下载包
pip install 包名
# 卸载包
pip uninstall 包名
# 列出已下载的包
pip list
默认情况下下载的包会放置与Python安装模块下的 /Lib/site-packages/
目录下。
pip
本身使用挺简单的,但是国内使用通常会因为网络原因下载经常失败,所以通常需要使用国内的源,下面是一些常见的国内源:
# 清华
https://pypi.tuna.tsinghua.edu.cn/simple
# 阿里
https://mirrors.aliyun.com/pypi/simple/
# 豆瓣
http://pypi.douban.com/simple/
# 腾讯云
http://mirrors.cloud.tencent.com/pypi/simple
# 中国科学技术大学
http://pypi.mirrors.ustc.edu.cn/simple/
# 百度
https://mirror.baidu.com/pypi/simple
# 华中理工大学
http://pypi.hustunique.com/
# 山东理工大学
http://pypi.sdutlinux.org/
# 搜狐
http://mirrors.sohu.com/Python/
使用镜像源通常分为两种方式:
# 临时指定镜像源
pip install 包名 -i 镜像源地址
# 设置永久生效
pip config set global.index-url 镜像源地址
总结
到这里为止介绍了Python基础入门相关的内容,有这些内容Python基本上已经可以用起来了,接下来只是学习相关语法、根据功能需求学习相关的标准库和第三方包,这些都可以通过实际项目练习掌握。