Python指南:从入门到实战的全纪录(持续更新)
引言 (Introduction)
- Python 是一门强大且优雅的语言,它的魅力在于能将你的想法变为现实。学会它,你将可以:
- 开发网站: 打造属于自己的博客、作品集或在线工具。
- 数据分析: 从海量数据中发现规律,做出更明智的决策。
- 自动化脚本: 让电脑帮你处理繁琐的日常任务,解放你的时间。
- 探索 AI: 站在时代的前沿,与人工智能进行有趣的互动。
- 记录学习和使用Python的过程
- 构建Python整体体系
- 提高使用效率
Python入门 (First Steps in Python)
万丈高楼平地起。在正式用 Python 创造有趣的东西之前,我们需要先打好坚实的地基。这一部分,我们将一起完成所有必要的准备工作,为后续的学习铺平道路。
简介
安装Python
- 你的电脑 (Windows/Mac) 上正确安装 Python 主程序。
选择代码编辑器
- 选择vs code传统IDE,或者cursor 、trae等AI IDE
使用pyenv管理多版本Python
pyenv,是python的多版本管理工具。
pyenv 通过在系统路径(PATH)的最前端插入一个名为 “shims” 的目录来实现版本控制。当您运行 python 命令时,系统会先找到 pyenv 的 “shim”,然后 pyenv 会根据您当前的配置,决定启动哪个版本的真实 Python 解释器。
它主要通过三个层面来管理版本:
- Global (全局): 设置一个在您电脑上全局默认使用的 Python 版本。
- Local (本地): 为某一个特定的项目文件夹设置一个专属的 Python 版本。这个设置会覆盖全局设置。
- Shell (当前会话): 只在当前的终端会话中临时切换 Python 版本。这个设置优先级最高。
安装和配置pyenv
1 | 第一步:安装pyenv |
使用 pyenv 安装Python和查看Python
1 | 查看可安装的Python版本 |
pyenv常见命令
pyenv install --list- 查看所有可供安装的 Python 版本。
pyenv install <version>- 安装一个指定版本的 Python (例如:
pyenv install 3.11.5)。
- 安装一个指定版本的 Python (例如:
pyenv versions- 列出所有已经安装的 Python 版本,并用星号 标记出当前正在使用的版本。
- 例子如下:系统安装了两个Python版本;system是macOS 系统自带的、或通过非
pyenv方式安装的 Python 版本;3.12.4是通过pyenv安装的,星号表示3.12.4是当前终端会话中正在激活并使用的版本,****(set by PYENV_VERSION environment variable)这句解释了为什么3.12.4是当前激活的版本。
1
2system
* 3.12.4 (set by PYENV_VERSION environment variable)pyenv global <version>- 设置全局默认的 Python 版本 (例如:
pyenv global 3.11.5)。
- 设置全局默认的 Python 版本 (例如:
pyenv local <version>- 在当前项目文件夹下,设置该项目专用的 Python 版本 (例如:
pyenv local 3.12.4)。它会在当前文件夹下创建一个.python-version文件来记录这个设置。
- 在当前项目文件夹下,设置该项目专用的 Python 版本 (例如:
理解/运用全局安装和虚拟环境安装
可以用一个“书房”的比喻,帮我们快速理解“全局安装”和“虚拟环境安装”的区别
全局安装 (Global Installation):一个巨大、混乱的公共书架 📚
“全局安装”是指您直接在终端里运行 pip3 install <package>,将一个库安装到您系统或当前 Python 版本的主环境中。
- 如何理解?
- 这就像把您买回来的所有书(技术书、小说、漫画、菜谱)全都塞在一个巨大无比的公共书架上。这个书架为您所有的“项目”(比如“做饭”、“学编程”、“写小说”)服务。
- 什么时候使用?
- 只应该用于安装那些您希望在任何地方都能直接从命令行使用的、系统级的工具。
- 例子:
yt-dlp(YouTube视频下载器),httpie(命令行HTTP客户端), 或者pyenv,pip本身。这些是工具,而不是某个具体项目的“依赖”。
- 有什么问题?(关键)
- 依赖冲突 (Dependency Hell):这是最大的问题。假设“项目A”(写Web应用)需要
SQLAlchemy1.4版本,而“项目B”(做数据分析)需要SQLAlchemy2.0版本。您在公共书架上只能放一个版本,导致其中一个项目无法正常工作。 - 环境污染:公共书架会越来越乱,塞满了各种项目的书。久而久之,您完全不知道哪些书是哪个项目需要的,哪些是过时的、可以扔掉的。这使得项目难以维护和复现。
- 权限问题:在某些系统上,全局安装可能需要管理员权限(
sudo),这本身就是一种不好的安全实践。
- 依赖冲突 (Dependency Hell):这是最大的问题。假设“项目A”(写Web应用)需要
虚拟环境安装 (Virtual Environment Installation):为每个项目准备的独立小书房 🏠
“虚拟环境安装”是指先为您的项目创建一个隔离的、纯净的、独立的 Python 环境,然后在这个环境中安装只属于这个项目的库。
- 如何理解?
- 这就像为您要做的每一件事,都准备一个独立的、私人的小书房。
- 要“学编程”了?您就建一个“编程书房”,里面只放编程相关的书 (
pandas,numpy)。 - 要“写小说”了?您再建一个“文学书房”,里面只放文学理论和字典。
- 这两个书房完全隔离,互不干扰。您可以在“编程书房”里放1.0版的书,在“文学书房”里放2.0版的同一本书。
- 什么时候使用?
- 几乎所有时候! 只要您是在开发一个具体的Python项目(无论是网站、数据分析脚本、自动化工具),都应该为它创建一个虚拟环境。
- 有什么好处?
- 依赖隔离:完美解决冲突问题。每个项目都有自己独立的“书架”,可以使用任意版本的库。
- 环境纯净:每个虚拟环境只包含该项目必需的库,清晰明了。
- 便于协作和部署:您可以轻松地生成一个项目依赖清单(
requirements.txt),您的同事或服务器可以根据这个清单,一键复制出一个一模一样的“书房”,确保了环境的一致性。
- 注意:项目环境(虚拟环境)通常就是基于一个特定的项目目录来搭建的。
如何使用:全局安装 (应避免用于项目开发)
1 | # 直接安装,库会进入您的全局 site-packages 目录 |
如何使用:搭建隔离项目环境
搭建一套专业、高效、无痛的Python开发环境:
- 版本分离:使用
pyenv工具来管理和切换你电脑上不同版本的Python,让它们互不干扰。 - 环境隔离:使用
venv或Poetry为你的每一个项目创建独立的“虚拟环境”,让项目之间的依赖库互不冲突。 - Homebrew: macOS的包管理器。
pyenv: 管理你电脑上的Python版本(你的“地基”)。venv/Poetry: 管理你每个项目的依赖环境(你的“房间”)。venv—— Python官方“标配帐篷”Poetry—— 现代“精装公寓”
如何使用:虚拟环境安装 (使用 Python 内置的 venv)(推荐初学者掌握)
为您的项目创建一个文件夹
1
2mkdir my-project
cd my-project在该文件夹内创建虚拟环境
venv是您为这个虚拟环境起的名字,这是个通用惯例。
1
python3 -m venv venv
- 执行后,您会看到文件夹里多了一个名为
venv的子文件夹,这就是您的“独立小书房”。
激活虚拟环境
在 macOS 或 Linux 上:
1
source venv/bin/activate
激活后,您会看到终端命令提示符前面多了
(venv)的字样,表示您已经“走进”了这个独立书房。
在虚拟环境中安装依赖Bash
- 此时,您使用的
pip就是这个虚拟环境专属的了。
1
2
3
4
5
6
7
8
9# 安装的 requests 只会存在于 venv 这个文件夹里
pip install requests
# (my_project_env) ...
# 在这里用 pip 安装的库,只会存在于这个环境中
pip install requests
# 在这里运行的 python,也是这个环境中的 python
python my_script.py- 此时,您使用的
退出虚拟环境
- 当您想“离开”这个书房时,只需运行:
1 | # (my_project_env) ... |
- 命令提示符前的 (venv) 会消失,您又回到了全局环境。
如何使用:虚拟环境安装 (使用 现代方法Poetry)(更高效,推荐进阶使用)
1 | 安装 Poetry |
总结
| 特性 | 全局安装 | 虚拟环境安装 |
|---|---|---|
| 比喻 | 📚 一个巨大的公共书架 | 🏠 为每个项目准备的独立书房 |
| 适用场景 | 系统级命令行工具 | 所有具体的Python项目开发 |
| 优点 | 方便调用系统级工具 | 依赖隔离、环境纯净、便于协作 |
| 缺点 | 依赖冲突、环境污染 | 需要额外创建和激活的步骤 |
最佳实践:养成好习惯,永远为您的新 Python 项目创建一个虚拟环境。这是成为一个专业 Python 开发者的基本素养。
**Python开发常见组合:**使用 pyenv 来安装和切换基础的 Python 版本,然后在具体的项目文件夹中,使用 Poentry 来管理该项目的虚拟环境和所有依赖。
Python常见命令
好的,Python 的“常见命令”可以分为几个不同但密切相关的类别。下面我将为您分类列出最核心、最常用的命令,并解释它们的用途。
Python 解释器 (python / python3)
这是与 Python 语言本身直接交互的命令。
python3 script.py- 作用: 运行 Python 脚本。这是最常用的命令,用于执行一个名为
script.py的文件中的代码。
- 作用: 运行 Python 脚本。这是最常用的命令,用于执行一个名为
python3- 作用: 启动交互式会话 (REPL)。直接运行此命令会进入一个可以逐行输入并立即执行 Python 代码的环境,非常适合快速测试、计算或学习。退出交互式会话通常使用
exit()或quit()。
- 作用: 启动交互式会话 (REPL)。直接运行此命令会进入一个可以逐行输入并立即执行 Python 代码的环境,非常适合快速测试、计算或学习。退出交互式会话通常使用
python3 -m <module>- 作用: 以脚本方式运行库模块。
m参数允许您像运行脚本一样运行一个库。最常见的例子就是用它来创建虚拟环境 (python3 -m venv ...) 或启动一个简单的Web服务器 (python3 -m http.server)。
- 作用: 以脚本方式运行库模块。
python3 -c '<command>'- 作用: 执行单行命令。
c参数允许您直接在终端执行一小段 Python 代码字符串,而无需将其写入文件。
- 作用: 执行单行命令。
包管理器 (pip / pip3)
这是用来管理第三方库(包)的工具。
pip3 install <package_name>- 作用: 安装一个或多个库。例如,
pip3 install requests pandas。您还可以指定版本,如pip3 install numpy==1.26.0。
- 作用: 安装一个或多个库。例如,
pip3 install -r requirements.txt- 作用: 根据列表批量安装库。
requirements.txt是一个文本文件,里面列出了项目需要的所有依赖及其版本。这个命令会读取该文件并安装所有指定的库,是项目协作和部署的关键。
- 作用: 根据列表批量安装库。
pip3 uninstall <package_name>- 作用: 卸载一个库。
pip3 list- 作用: 列出当前环境中所有已安装的库及其版本。
pip3 freeze > requirements.txt- 作用: 生成当前环境的依赖列表。
pip3 freeze会以特定格式列出所有已安装的包,>符号则将这些输出重定向并保存到requirements.txt文件中。
- 作用: 生成当前环境的依赖列表。
pip3 show <package_name>- 作用: 显示某个已安装库的详细信息,如版本、作者、安装路径、依赖关系等。
虚拟环境 (venv)
这是用于项目依赖隔离的内置工具。
python3 -m venv <environment_name>- 作用: 创建一个虚拟环境。这会在当前目录下创建一个以
<environment_name>命名的文件夹,其中包含一个独立的Python环境。
- 作用: 创建一个虚拟环境。这会在当前目录下创建一个以
source <environment_name>/bin/activate- 作用: 激活虚拟环境 (在 macOS 或 Linux 上)。激活后,您安装的所有包都将局限于这个环境中。
<environment_name>\Scripts\activate- 作用: 激活虚拟环境 (在 Windows 上)。
deactivate- 作用: 退出当前的虚拟环境,返回到全局环境。
多版本管理 (pyenv)
这是用于管理和切换不同 Python 版本的第三方工具。
pyenv versions- 作用: 列出所有已安装的 Python 版本,并用星号 标记当前正在使用的版本。
pyenv install <version>- 作用: 安装一个新的 Python 版本,例如
pyenv install 3.11.5。
- 作用: 安装一个新的 Python 版本,例如
pyenv global <version>- 作用: 设置全局默认的 Python 版本。
pyenv local <version>- 作用: 为当前目录(及其子目录)设置一个特定的 Python 版本。这个命令会创建一个
.python-version文件,非常适合为不同项目指定不同的Python版本。
- 作用: 为当前目录(及其子目录)设置一个特定的 Python 版本。这个命令会创建一个
pyenv shell <version>- 作用: 只在当前终端会话中临时切换 Python 版本,优先级最高。
掌握Python语法规则 📜
学习编程语言,就像学习一门新的外语。我们需要先掌握它的基本词汇和语法,才能组织出有意义的句子。
常用语法
- 变量与数据类型: 学习如何存储数字、文本等不同类型的信息。
- 常用数据结构: 探索列表 (List)、字典 (Dictionary) 等组织数据的方式。
- 流程控制: 掌握
if判断和for/while循环,让你的程序学会“思考”和“重复”。 - 函数 (Function): 学习如何将代码打包成可复用的模块,让程序更整洁。
语法框架
当然,为了让你快速熟悉,这里是 Python 语法的整体框架,它就像一张学习地图。
基本构成 (Core Building Blocks) 🧱——变量 (Variable) +数据类型 (Data Type)
这是 Python 语言最基础的元素(基础元素),用来存储和表示信息。
- 变量 (Variables): 不需要提前声明类型,直接用
名字 = 值的方式给数据贴上标签。 - 数据类型 (Data Types):
- 文本 (String): 用
'单引号'或"双引号"括起来的文字。 - 数字 (Number): 包括整数
int(如10) 和浮点数float(如3.14)。 - 布尔值 (Boolean): 只有
True和False两个值,用于判断。
- 文本 (String): 用
- 理解:
- 变量:就像一个贴着标签的空盒子。它提供一个名字,让你用来存放和引用信息。
- 数据类型:就是你放进盒子里的东西的种类。比如,是文字(字符串)、数字、还是一个开关(布尔值)。
数据结构 (Data Structures) 🗃️
这是 Python 用来组织和存放批量数据的方式。
- 列表 (List):
[1, "apple", True]- 一个有序的、可变的集合,像一个可以随时增删物品的购物清单。
- 元组 (Tuple):
(1, "apple", True)- 一个有序的、不可变的集合,一旦创建就不能修改,像一份已签署的合同。
- 字典 (Dictionary):
{"name": "Alice", "age": 30}- 一个无序的、由 键-值对 (key-value) 构成的集合,通过唯一的“键”来查找“值”,像一本字典。
- 集合 (Set):
{"apple", "banana", "cherry"}- 一个无序的、包含不重复元素的集合,主要用于成员测试和去重。
- 其他
- 基础元素与数据结构关系
基础元素 (变量 + 数据类型): 就是 一块块单独的乐高积木。
name = "Alice"是一块刻着 “Alice” 的文字积木 (String)。age = 30是一块标着 “30” 的数字积木 (Integer)。is_student = True是一块代表 “是” 的开关积木 (Boolean)。
现在,这些积木(信息)零散地堆在地上,它们之间没有联系。
数据结构 (Data Structures): 就是你用来 组织这些积木的特定方式,比如一个“清单”或者一个“名片夹”。
- 它是一个容器,把这些零散的积木按照某种规则装起来。
数据结构是用来存放和组织基础元素的。
流程控制 (Control Flow) 🚦
这决定了你的代码按什么顺序、在什么条件下执行。
条件判断 (
if,elif****,else****): 根据条件是否为True来决定执行哪一段代码,实现程序的分支逻辑。1
2
3
4
5
6if age < 18:
print("未成年")
elif age >= 18 and age < 60:
print("成年人")
else:
print("老年人")循环 (
for,while****):for循环: 主要用于遍历一个序列(如列表、字符串),按顺序取出每一个元素进行操作。while循环: 只要某个条件持续为True,就一直重复执行代码块。
代码组织 (Code Organization) 📦
当代码变多时,用这些方式来保持其结构清晰和可复用。
- 函数 (
def): 将一段具有特定功能的代码打包,并给它起一个名字。通过def function_name(parameters):来定义,可以接收输入参数(parameters)并返回一个结果(return)。这是代码复用的核心。 - 模块 (
import): Python 的强大之处在于其丰富的“代码库”。你可以将自己的代码写在一个.py文件中(这就是一个模块),或者通过import关键字导入别人写好的模块(如import math),直接使用其中定义好的函数和变量。 - 类与对象 (
class): 这是面向对象编程(OOP)的核心。通过class关键字定义一个“模板”,这个模板描述了一类事物共同拥有的属性(数据)和行为(方法/函数)。通过这个模板创建出来的具体实例,就是“对象”。
错误处理 (Error Handling) 🛡️
让你的程序更健壮,遇到错误时不会轻易崩溃。
try...except块: 将你认为可能出错的代码放在try块中。如果真的发生错误,程序会立即跳转到except块去执行预设的补救措施,而不是直接崩溃。
最重要的语法规则
缩进 (Indentation) 是 Python 语法的核心!它不是为了好看,而是用来定义代码块的归属关系(例如,哪些代码属于 if,哪些属于 for 循环)。通常使用 4 个空格作为一级缩进。
解锁核心技能 (Unlocking Core Skills)——待更新
掌握了基础语法,就像我们学会了单词和句子。现在,是时候运用这些知识,去真正地“说话”和“做事”了。在这一部分,我们将把理论付诸实践,解锁 Python 在真实世界中的强大能力。
2.1 Web 开发基础 (Web Development Basics) 🌐
我们将学习如何使用 Python 构建网站和提供服务的 API。我会从 Flask 开始,因为它非常轻量,能帮助初学者快速理解 Web 的工作原理,并搭建起第一个属于自己的网页。
2.2 数据采集入门 (Introduction to Data Scraping) 🕸️
这项技能可以教会计算机自动浏览网页,并抓取我们所需要的信息。我们会从最经典的组合 requests + Beautiful Soup 入手,编写第一个网络爬虫,让信息收集变得轻而易举。
2.3 自动化你的日常 (Automate Your Life) ⚡
这是 Python 最酷的应用之一:用代码解放你的双手。我们将探索一些贴近生活的自动化场景,比如:
- 编写脚本,自动整理“下载”文件夹里的混乱文件。
- 设置一个程序,定时发送邮件提醒自己完成重要任务。
2.4 数据分析初体验 (A Taste of Data Analysis) 📊
数据背后隐藏着故事和真相。我们将学习如何使用 Python 来处理数据,并从中发现有趣的规律。为了让过程不枯燥,我们会从一些简单有趣的数据集开始,比如分析电影评分或者过往的天气数据。
2.5 与 AI 对话 (Talking with AI) 🤖
这可能是最前沿、最激动人心的部分。我们将学习如何通过 Python 调用大语言模型(LLMs)的 API,让你的程序拥有“智慧大脑”,去构建一些真正智能的应用。
我的实践项目 (My Practical Projects)
理论学习最终要回归实践。在这一部分,我们会把之前解锁的各项技能组合起来,像搭积木一样,创造出真正有价值的实用项目。我会完整记录从想法到成品的每一步,让你也能跟着动手实现。
待更新
学习资源库 (Resource Library)
独行快,众行远。在学习的路上,我们不必重新发明轮子。有无数优质的资源可以帮助我们走得更稳、更快。这部分是我在学习过程中收藏和依赖的资源库,它们都对初学者非常友好,我也会持续更新这个列表。
官方与权威 👑
- Python 官方文档: 学习任何技术的终极真相来源。虽然初看可能有些枯燥,但其中的 官方教程 是最权威、最准确的入门材料。养成查阅官方文档的习惯,将受益终生。
三方资料
在线课程 💻
- Python for Everybody (Coursera): 由密歇根大学的 Charles Severance 教授主讲,非常适合零基础的文科生或非计算机专业学生入门,风趣幽默。
- freeCodeCamp: 一个完全免费的编程学习社区,提供了从基础到数据分析、机器学习等完整的 Python 课程和认证。
优质网站与社区 🌐
- Real Python: 提供海量高质量的 Python 教程和文章,内容深入浅出,覆盖面广。
- Stack Overflow: 全球最大的程序员问答社区。遇到任何解决不了的 Bug,先来这里搜索,大概率你的问题前人已经问过并解决了。
- GitHub: 全球最大的代码托管平台。不仅是分享和管理自己代码的地方,更是学习和阅读他人优秀代码的宝库。
实用工具 🛠️
- Jupyter Notebook: 一个交互式的笔记本,可以边写代码、边运行、边记笔记。尤其适合数据分析和学习过程中的代码片段验证。
- Black: 一个“不妥协”的代码格式化工具。它可以帮你自动整理代码风格,让你专注于逻辑而不是格式。
书籍推荐 📚
- 《Python编程:从入门到实践》(Python Crash Course): 一本全球畅销的经典入门书。前半部分讲解基础知识,后半部分带你做三个有趣的项目(游戏、数据可视化、Web应用),理论与实践结合得非常好。
- 《Python自动化办公》(Automate the Boring Stuff with Python): 如果你想用 Python 解决实际问题,这本书是绝佳选择。它不执着于理论,而是用大量实际案例教你如何用代码解放生产力。
总结 (Conclusion)
到这里,我们已经一起走过了 Python 学习的第一段旅程。从最初的环境搭建,到掌握核心语法,再到动手解锁各项实用技能,并最终将它们融合成看得见、摸得着的实践项目。
如果你有任何问题、建议,或是有趣的想法,请一定在评论区留言。
让我们一起在这条路上继续前行,期待看到我们共同的成长!