01-Python环境搭建
Python简介
Python由Guido van Rossum于1991年创建,设计哲学强调代码可读性。语法简洁清晰,学习曲线平缓,生态系统丰富。
应用场景
Web开发:
Django、Flask、FastAPI等框架
后端API、全栈应用、微服务
数据科学:
NumPy、Pandas、Matplotlib数据分析
Jupyter Notebook交互式计算
机器学习、深度学习
自动化:
脚本编写、任务调度
运维自动化、测试自动化
爬虫、数据采集
人工智能:
TensorFlow、PyTorch深度学习框架
scikit-learn机器学习
OpenCV计算机视觉、NLTK自然语言处理
其他领域:
科学计算(SciPy)
游戏开发(Pygame)
桌面应用(PyQt、Tkinter)
嵌入式脚本(MicroPython)
语言特点
优势:
语法简洁:相比Java/C++代码量少50%-70%
开发效率高:动态类型、丰富标准库
跨平台:Linux/Windows/macOS无缝运行
生态强大:PyPI拥有30万+第三方库
多范式:面向对象、函数式、过程式
劣势:
性能较低:解释型语言,比C++慢10-100倍
GIL限制:多线程无法利用多核(CPU密集型)
类型检查:运行时才发现类型错误
移动端弱:iOS/Android支持有限
适合: 快速开发、数据处理、原型验证
不适合: 性能极致、底层系统、移动应用
Python版本
Python 2已于2020年停止支持,Python 3是唯一选择。
Python 3.7:2018年发布,数据类、async/await增强
Python 3.8:2019年发布,海象运算符、位置参数
Python 3.9:2020年发布,字典合并、类型提示增强
Python 3.10:2021年发布,模式匹配、更好的错误信息
Python 3.11:2022年发布,性能提升25%
学习环境:Python 3.9+,生产环境:Python 3.9或3.10。
安装Python
Linux
# Ubuntu/Debian
sudo apt update
sudo apt install python3 python3-pip python3-venv
# 验证
python3 --version
pip3 --version
# 设置默认Python3
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 1
macOS
# Homebrew
brew install python3
# 验证
python3 --version
pip3 --version
# 添加到PATH(通常自动完成)
echo 'export PATH="/opt/homebrew/bin:$PATH"' >> ~/.zshrc
Windows
下载官方安装包:python.org
安装时勾选”Add Python to PATH”
验证:
python --version
虚拟环境
虚拟环境隔离项目依赖,避免版本冲突。
venv(内置)
# 创建虚拟环境
python3 -m venv myenv
# 激活
source myenv/bin/activate # Linux/macOS
myenv\Scripts\activate # Windows
# 安装包
pip install requests
# 导出依赖
pip freeze > requirements.txt
# 安装依赖
pip install -r requirements.txt
# 退出
deactivate
virtualenv
# 安装
pip install virtualenv
# 创建
virtualenv myenv
# 使用同venv
conda(数据科学)
# 创建环境
conda create -n myenv python=3.9
# 激活
conda activate myenv
# 安装包
conda install numpy pandas
# 退出
conda deactivate
包管理
pip
# 安装包
pip install package_name
pip install package==1.0.0 # 指定版本
pip install package>=1.0.0 # 版本范围
# 升级
pip install --upgrade package
# 卸载
pip uninstall package
# 列出已安装
pip list
pip show package # 详细信息
# 搜索
pip search keyword
# 导出/导入依赖
pip freeze > requirements.txt
pip install -r requirements.txt
requirements.txt
# 精确版本
requests==2.28.0
numpy==1.23.0
# 版本范围
flask>=2.0.0,<3.0.0
# 最新版本
pandas
# 从git安装
git+https://github.com/user/repo.git
# 本地包
-e ./local_package
开发工具
PyCharm
JetBrains出品,专业Python IDE。
特性:
智能代码补全
调试器
集成测试
数据库工具
虚拟环境管理
快捷键:
Cmd/Ctrl + /:注释Shift + F10:运行Shift + F9:调试Cmd/Ctrl + B:跳转定义Cmd/Ctrl + Alt + L:格式化
VS Code
轻量级,插件丰富。
必装插件:
Python(微软官方)
Pylance(类型检查)
Python Docstring Generator
autoDocstring
配置(.vscode/settings.json):
{
"python.defaultInterpreterPath": "./venv/bin/python",
"python.linting.enabled": true,
"python.linting.pylintEnabled": true,
"python.formatting.provider": "black",
"editor.formatOnSave": true,
"python.testing.pytestEnabled": true
}
Jupyter Notebook
交互式编程环境,适合数据分析。
# 安装
pip install jupyter
# 启动
jupyter notebook
# 或JupyterLab
pip install jupyterlab
jupyter lab
代码规范
PEP 8风格指南
# 命名规范
class MyClass: # 大驼峰
pass
def my_function(): # 下划线
pass
my_variable = 10 # 下划线
MY_CONSTANT = 100 # 全大写
_private_var = 1 # 单下划线:内部使用
__private_var = 2 # 双下划线:名称改写
# 缩进:4空格
if condition:
do_something()
# 空行:函数间2行,类间2行,方法间1行
class MyClass:
def method1(self):
pass
def method2(self):
pass
def function():
pass
# 行长度:最多79字符
long_variable_name = (first_part +
second_part +
third_part)
# 导入顺序:标准库、第三方库、本地模块
import os
import sys
import requests
import numpy
from mypackage import mymodule
代码质量工具
# pylint:代码检查
pip install pylint
pylint myfile.py
# flake8:风格检查
pip install flake8
flake8 myfile.py
# black:自动格式化
pip install black
black myfile.py
# isort:导入排序
pip install isort
isort myfile.py
# mypy:类型检查
pip install mypy
mypy myfile.py
Hello World
基本程序
# hello.py
print("Hello, World!")
# 运行
python hello.py
# 或直接
python -c "print('Hello')"
带函数的程序
def greet(name):
return f"Hello, {name}!"
if __name__ == "__main__":
print(greet("World"))
调试工具
pdb(内置调试器)
import pdb
def buggy_function():
x = 10
pdb.set_trace() # 设置断点
y = x * 2
return y
# 运行会在断点处暂停
# 常用命令:
# n:下一行
# s:步入函数
# c:继续执行
# p variable:打印变量
# q:退出
断点调试(Python 3.7+)
def function():
x = 10
breakpoint() # 替代pdb.set_trace()
return x
项目结构
标准项目结构
myproject/
├── README.md
├── requirements.txt
├── setup.py
├── mypackage/
│ ├── __init__.py
│ ├── module1.py
│ └── module2.py
├── tests/
│ ├── __init__.py
│ ├── test_module1.py
│ └── test_module2.py
├── docs/
│ └── conf.py
└── scripts/
└── run.py
包管理(setup.py)
from setuptools import setup, find_packages
setup(
name='mypackage',
version='0.1.0',
packages=find_packages(),
install_requires=[
'requests>=2.28.0',
'numpy>=1.23.0',
],
python_requires='>=3.9',
)
pyproject.toml(现代方式)
[build-system]
requires = ["setuptools>=45", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "mypackage"
version = "0.1.0"
dependencies = [
"requests>=2.28.0",
"numpy>=1.23.0",
]
requires-python = ">=3.9"
[project.optional-dependencies]
dev = ["pytest", "black", "flake8"]
常用工具
IPython
增强的交互式Shell。
# 安装
pip install ipython
# 启动
ipython
# 特性:
# - 自动补全
# - 魔法命令:%timeit, %run, %debug
# - 历史记录:_(上一结果)
# - 系统命令:!ls
Poetry(依赖管理)
现代Python包管理工具。
# 安装
pip install poetry
# 创建项目
poetry new myproject
# 添加依赖
poetry add requests
# 安装依赖
poetry install
# 运行
poetry run python script.py
# 发布
poetry publish
性能分析
timeit
import timeit
# 测试代码执行时间
timeit.timeit('[i for i in range(1000)]', number=10000)
# 魔法命令(IPython/Jupyter)
%timeit [i for i in range(1000)]
cProfile
import cProfile
def slow_function():
total = 0
for i in range(1000000):
total += i
return total
# 性能分析
cProfile.run('slow_function()')
# 命令行分析
python -m cProfile script.py
Python特性速览
动态类型
x = 10 # int
x = "hello" # str,类型可变
强类型
"3" + 4 # TypeError(不会自动转换)
int("3") + 4 # 7(需显式转换)
缩进敏感
if True:
print("Yes") # 缩进4空格
print("Done") # 不缩进
一切皆对象
# 函数是对象
def func():
pass
x = func # 函数赋值
type(func) # <class 'function'>
# 类是对象
class MyClass:
pass
type(MyClass) # <class 'type'>
Python之禅
import this
# The Zen of Python, by Tim Peters
#
# Beautiful is better than ugly.
# Explicit is better than implicit.
# Simple is better than complex.
# Complex is better than complicated.
# ...
核心理念:
优雅胜于丑陋
明确胜于隐晦
简单胜于复杂
可读性很重要