Python以其简洁的语法、强大的生态和广泛的应用场景,吸引了全球数百万开发者。无论是Google的深度学习框架TensorFlow,还是Instagram的后端服务,Python都扮演着关键角色。学习Python,就是为未来十年的技术发展做好准备。
Python安装从未如此简单:
# 官方推荐:访问 python.org 下载最新版本# 或者使用包管理器安装# Mac用户brew install python@3.12# Linux用户sudo apt updatesudo apt install python3.12# Windows用户# 从官网下载安装包,记得勾选"Add Python to PATH"
验证安装:打开终端输入 python3 --version或 python --version,看到版本号即成功。
专业提示:新手建议安装Python 3.8+版本,这是目前最稳定且兼容性最佳的版本。
Visual Studio Code已成为Python开发的标配工具:
安装VS Code:从官网免费下载
必备扩展:
Python(微软官方)
Python Extended
Pylance(智能提示)
Python Docstring Generator
配置Python解释器:按Ctrl+Shift+P,输入"Python: Select Interpreter",选择你安装的Python版本
运行代码:右上角的绿色三角按钮,或按F5
2026年,AI编程助手已成为开发者标配。以下工具可极大提升学习效率:
GitHub Copilot:自动补全代码,解释复杂概念
Cursor:智能IDE,支持自然语言编程
Claude Code:专注代码生成的AI助手
本地部署的代码大模型:保护隐私,快速响应
学习建议:初期先用AI助手生成示例代码,然后逐行理解,而不是直接复制使用。
# hello_world.pyprint("你好,2026!欢迎来到Python世界!")print("这是丙午马年,让我们一马当先,代码奔腾!")# 运行:python hello_world.py# 输出:# 你好,2026!欢迎来到Python世界!# 这是丙午马年,让我们一马当先,代码奔腾!
Python解释器有两种使用方式:
# 1. 交互模式(边写边执行)$ python3>>> 1 + 12>>> print("Hello")Hello>>> exit() # 退出# 2. 脚本模式(编写完整程序)$ python3 script.py
新手技巧:使用交互模式快速测试代码片段,验证想法。
良好的注释习惯是专业程序员的标志:
# 单行注释:解释下面代码的作用price = 100 # 商品价格(单位:元)"""多行注释(文档字符串)用于函数、类的详细说明这是商品类,管理商品相关信息"""def calculate_total(price, quantity):"""计算商品总价参数:price -- 单价quantity -- 数量返回:总价格"""return price * quantity
# 1. 数字(Number)num_int = 2026 # 整数num_float = 3.14 # 浮点数num_complex = 3 + 4j # 复数# 2. 字符串(String)name = "Python"wish = "祝您马年大吉,代码无bug!"# 3. 列表(List)- 可变序列languages = ["Python", "Java", "JavaScript"]languages.append("Go") # 添加元素# 4. 元组(Tuple)- 不可变序列coordinates = (39.9042, 116.4074) # 北京坐标colors = ("red", "green", "blue")# 5. 字典(Dictionary)- 键值对student = {"name": "张三", "age": 20, "major": "计算机"}student["grade"] = "A" # 添加键值对# 6. 集合(Set)- 无序不重复prime_numbers = {2, 3, 5, 7, 11, 13}even_numbers = {2, 4, 6, 8, 10}
# 隐式转换(自动)result = 5 + 3.14 # 5自动转为5.0print(type(result)) # <class 'float'># 显式转换(手动)# 字符串转数字age = int("25")price = float("199.99")# 数字转字符串score_str = str(95.5)# 列表、元组、集合间的转换nums_list = [1, 2, 3]nums_tuple = tuple(nums_list) # 列表转元组nums_set = set(nums_list) # 列表转集合(去重)
注意:转换可能失败,要处理异常:
try:num = int("abc")except ValueError:num = 0 # 转换失败时的默认值
text = "2026年,Python依然强大"# 常用操作print(len(text)) # 字符串长度print(text[0:4]) # 切片:2026print("Python" in text) # 成员检查:Trueprint(text.upper()) # 转大写print(text.replace("强大", "无所不能")) # 替换# 字符串格式化(2026推荐)name = "小明"age = 25# f-string(最简洁)message = f"{name}今年{age}岁,学习Python{age-20}年了"# format方法message2 = "{}今年{}岁".format(name, age)
# 列表操作大全fruits = ["apple", "banana", "cherry"]# 增fruits.append("orange") # 末尾添加fruits.insert(1, "grape") # 指定位置插入fruits.extend(["mango", "kiwi"]) # 合并列表# 删fruits.pop() # 删除末尾fruits.remove("banana") # 删除指定元素del fruits[0] # 删除索引位置# 改fruits[0] = "peach"# 查print("apple" in fruits) # 是否存在print(fruits.index("cherry")) # 索引位置print(fruits.count("apple")) # 出现次数# 排序numbers = [3, 1, 4, 1, 5, 9, 2]numbers.sort() # 升序numbers.sort(reverse=True) # 降序
列表 vs 元组:
列表可变,用方括号[],适合存储会变化的数据
元组不可变,用圆括号(),适合存储常量或配置
# 创建字典student = {"name": "李华","age": 22,"courses": ["Python", "数学", "英语"],"graduated": False}# 访问print(student["name"]) # 直接访问print(student.get("grade", "A")) # 安全访问,不存在返回默认值# 遍历for key, value in student.items():print(f"{key}: {value}")# 字典推导式(高级技巧)squares = {x: x**2 for x in range(1, 6)}# 结果:{1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
# 创建集合colors = {"red", "green", "blue"}# 集合运算A = {1, 2, 3, 4, 5}B = {4, 5, 6, 7, 8}print(A | B) # 并集:{1, 2, 3, 4, 5, 6, 7, 8}print(A & B) # 交集:{4, 5}print(A - B) # 差集:{1, 2, 3}print(A ^ B) # 对称差:{1, 2, 3, 6, 7, 8}
# 基本if语句age = 20if age >= 18:print("成年")else:print("未成年")# 多条件判断score = 85if score >= 90:grade = "A"elif score >= 80:grade = "B"elif score >= 70:grade = "C"else:grade = "D"# 简洁的条件表达式status = "通过" if score >= 60 else "不通过"
# 1. for循环:遍历序列# 遍历列表fruits = ["apple", "banana", "cherry"]for fruit in fruits:print(f"我喜欢吃{fruit}")# 遍历数字范围for i in range(1, 6): # 1到5print(f"这是第{i}次循环")# 2. while循环:条件循环count = 0while count < 5:print(f"计数:{count}")count += 1# 3. 循环控制for i in range(10):if i == 3:continue # 跳过本次循环if i == 7:break # 终止循环print(i)
# 列表推导式squares = [x**2 for x in range(1, 6)] # [1, 4, 9, 16, 25]# 带条件的列表推导式even_squares = [x**2 for x in range(1, 11) if x % 2 == 0] # [4, 16, 36, 64, 100]# 字典推导式square_dict = {x: x**2 for x in range(1, 6)}# 集合推导式unique_lengths = {len(word) for word in ["apple", "banana", "cherry"]}
# 定义函数def greet(name, time_of_day="早上"):"""打招呼的函数参数:name -- 姓名time_of_day -- 时间,默认"早上"返回:问候语"""return f"{time_of_day}好,{name}!"# 调用函数message = greet("张三")print(message) # 早上好,张三!# 使用关键字参数message2 = greet(name="李四", time_of_day="下午")# 可变参数def calculate_average(*numbers):"""计算任意数量数字的平均值"""if not numbers:return 0return sum(numbers) / len(numbers)print(calculate_average(1, 2, 3, 4, 5)) # 3.0
# 基本用法square = lambda x: x ** 2print(square(5)) # 25# 配合内置函数使用numbers = [1, 2, 3, 4, 5]squared = list(map(lambda x: x**2, numbers)) # [1, 4, 9, 16, 25]even_numbers = list(filter(lambda x: x % 2 == 0, numbers)) # [2, 4]# 排序时使用students = [("张三", 85), ("李四", 92), ("王五", 78)]students.sort(key=lambda x: x[1], reverse=True) # 按分数降序排序
import timefrom functools import wraps# 计时装饰器def timer(func):@wraps(func)def wrapper(*args, **kwargs):start_time = time.time()result = func(*args, **kwargs)end_time = time.time()print(f"{func.__name__} 执行时间: {end_time - start_time:.2f}秒")return resultreturn wrapper# 使用装饰器@timerdef slow_function():"""模拟耗时操作"""time.sleep(2)return "完成"# 调用result = slow_function() # 自动计时
# 导入整个模块import mathprint(math.sqrt(16)) # 4.0# 导入特定功能from datetime import datetimenow = datetime.now()# 给模块起别名import numpy as npimport pandas as pd# 创建自己的模块# 在my_module.py中:"""def say_hello(name):return f"Hello, {name}!"def add(a, b):return a + b"""# 在其他文件中使用:# from my_module import say_hello, add
__name__的特殊含义# 在my_module.py中def hello():return "Hello from module"# 当模块被直接运行时if __name__ == "__main__":print("这个模块被直接运行")print(hello())# 当模块被导入时else:print("这个模块被导入")
# 读取文件try:withopen("data.txt", "r", encoding="utf-8") asfile:content = file.read() # 读取全部# 或者逐行读取for line in file:print(line.strip())except FileNotFoundError:print("文件不存在")# 写入文件data = "这是要写入的内容\n2026年学习Python"withopen("output.txt", "w", encoding="utf-8") asfile:file.write(data)# 追加内容with open("output.txt", "a", encoding="utf-8") as file:file.write("\n这是追加的内容")
import os# 文件和目录操作print(os.getcwd()) # 当前工作目录os.makedirs("new_folder", exist_ok=True) # 创建目录print(os.listdir(".")) # 列出当前目录内容os.rename("old.txt", "new.txt") # 重命名# 路径操作import os.pathfile_path = os.path.join("folder", "subfolder", "file.txt")print(os.path.abspath(".")) # 绝对路径print(os.path.exists("file.txt")) # 检查文件是否存在
try:num = int(input("请输入数字: "))result = 10 / numprint(f"结果是: {result}")except ValueError:print("错误:请输入有效的数字!")except ZeroDivisionError:print("错误:不能除以0!")except Exception as e:print(f"发生未知错误: {e}")else:print("计算成功完成!")finally:print("程序执行完毕。")# 自定义异常class AgeError(Exception):"""年龄异常"""passdef check_age(age):if age < 0 or age > 150:raise AgeError("年龄必须在0-150之间")return True
class Student:"""学生类"""# 类属性(所有实例共享)school = "清华大学"def __init__(self, name, age, major):"""初始化方法"""self.name = name # 实例属性self.age = ageself.major = majorself.__secret = "这是私有属性" # 私有属性def introduce(self):"""实例方法"""return f"我叫{self.name},{self.age}岁,专业是{self.major}"@classmethoddef change_school(cls, new_school):"""类方法"""cls.school = new_school@staticmethoddef is_adult(age):"""静态方法"""return age >= 18@propertydef info(self):"""属性装饰器"""return f"{self.name} - {self.major}"def __str__(self):"""字符串表示"""return f"Student(name={self.name}, age={self.age})"# 使用类student1 = Student("张三", 20, "计算机科学")print(student1.introduce()) # 我叫张三,20岁,专业是计算机科学print(student1.info) # 张三 - 计算机科学print(student1) # Student(name=张三, age=20)
class Animal:def __init__(self, name):self.name = namedef speak(self):raise NotImplementedError("子类必须实现此方法")class Dog(Animal):def speak(self):return f"{self.name}说:汪汪!"class Cat(Animal):def speak(self):return f"{self.name}说:喵喵!"# 多态animals = [Dog("旺财"), Cat("咪咪")]for animal in animals:print(animal.speak())
# 迭代器class CountDown:"""倒计时迭代器"""def __init__(self, start):self.current = startdef __iter__(self):return selfdef __next__(self):if self.current <= 0:raise StopIterationnum = self.currentself.current -= 1return num# 使用迭代器for num in CountDown(5):print(num) # 5, 4, 3, 2, 1# 生成器(更简洁)def count_down(n):"""生成器函数"""while n > 0:yield nn -= 1for num in count_down(5):print(num)
# 自动管理资源with open("data.txt", "r") as file:data = file.read()# 文件会自动关闭# 自定义上下文管理器class Timer:def __enter__(self):import timeself.start = time.time()return selfdef __exit__(self, exc_type, exc_val, exc_tb):import timeself.end = time.time()print(f"耗时: {self.end - self.start:.2f}秒")with Timer():# 执行需要计时的代码import timetime.sleep(1)
# 创建虚拟环境python3 -m venv myenv# 激活虚拟环境# Windowsmyenv\Scripts\activate# Mac/Linuxsource myenv/bin/activate# 在虚拟环境中安装包pip install requests numpy pandas# 导出依赖pip freeze > requirements.txt# 从requirements.txt安装pip install -r requirements.txt# 退出虚拟环境deactivate
from typing import List, Dict, Optional, Uniondef process_data(data: List[Dict[str, Union[int, str]]],threshold: Optional[int] = None) -> Dict[str, float]:"""处理数据,返回统计结果参数:data -- 要处理的数据列表threshold -- 可选阈值返回:统计结果字典"""if threshold is None:threshold = 0# 处理逻辑result = {"total": len(data), "processed": 0}return result# 使用mypy进行类型检查# pip install mypy# mypy your_script.py
import jsonimport osfrom typing import Dict, List, Optionalfrom dataclasses import dataclass, asdictfrom datetime import datetime@dataclassclass Student:"""学生数据类"""id: strname: strage: intgrade: strcourses: List[str]def to_dict(self) -> Dict:"""转换为字典"""return asdict(self)@classmethoddef from_dict(cls, data: Dict) -> 'Student':"""从字典创建实例"""return cls(**data)class StudentManager:"""学生管理系统"""def __init__(self, filename: str = "students.json"):self.filename = filenameself.students: Dict[str, Student] = {}self.load()def add_student(self, student: Student) -> bool:"""添加学生"""if student.id in self.students:return Falseself.students[student.id] = studentself.save()return Truedef get_student(self, student_id: str) -> Optional[Student]:"""获取学生信息"""return self.students.get(student_id)def update_student(self, student: Student) -> bool:"""更新学生信息"""if student.id not in self.students:return Falseself.students[student.id] = studentself.save()return Truedef delete_student(self, student_id: str) -> bool:"""删除学生"""if student_id not in self.students:return Falsedel self.students[student_id]self.save()return Truedef list_students(self) -> List[Student]:"""列出所有学生"""return list(self.students.values())def search_students(self, keyword: str) -> List[Student]:"""搜索学生"""result = []keyword = keyword.lower()for student in self.students.values():if (keyword in student.name.lower() orkeyword in student.grade.lower() orany(keyword in course.lower() for course in student.courses)):result.append(student)return resultdef save(self) -> None:"""保存到文件"""data = {"students": {sid: student.to_dict() for sid, student in self.students.items()},"updated_at": datetime.now().isoformat()}with open(self.filename, "w", encoding="utf-8") as f:json.dump(data, f, ensure_ascii=False, indent=2)def load(self) -> None:"""从文件加载"""if not os.path.exists(self.filename):returntry:with open(self.filename, "r", encoding="utf-8") as f:data = json.load(f)self.students = {sid: Student.from_dict(student_data)for sid, student_data in data.get("students", {}).items()}except (json.JSONDecodeError, FileNotFoundError):self.students = {}def main():"""主程序"""manager = StudentManager()while True:print("\n=== 学生管理系统 ===")print("1. 添加学生")print("2. 查看学生")print("3. 更新学生")print("4. 删除学生")print("5. 搜索学生")print("6. 列出所有学生")print("7. 退出")choice = input("\n请选择操作 (1-7): ").strip()if choice == "1":# 添加学生student_id = input("学号: ").strip()name = input("姓名: ").strip()age = int(input("年龄: ").strip())grade = input("班级: ").strip()courses = input("课程(用逗号分隔): ").strip().split(",")student = Student(id=student_id,name=name,age=age,grade=grade,courses=[c.strip() for c in courses])if manager.add_student(student):print("学生添加成功!")else:print("学号已存在!")elif choice == "2":# 查看学生student_id = input("请输入学号: ").strip()student = manager.get_student(student_id)if student:print(f"\n学号: {student.id}")print(f"姓名: {student.name}")print(f"年龄: {student.age}")print(f"班级: {student.grade}")print(f"课程: {', '.join(student.courses)}")else:print("学生不存在!")elif choice == "6":# 列出所有学生students = manager.list_students()if students:print(f"\n共有 {len(students)} 名学生:")for student in students:print(f"{student.id}: {student.name} - {student.grade}")else:print("暂无学生信息")elif choice == "7":print("感谢使用,再见!")breakelse:print("无效选择,请重新输入!")if __name__ == "__main__":main()
Python标准库功能强大,以下是一些常用模块:
# 1. collections - 扩展的数据结构from collections import Counter, defaultdict, deque, namedtuple# 计数器counts = Counter("abracadabra")print(counts) # Counter({'a': 5, 'b': 2, 'r': 2, 'c': 1, 'd': 1})# 默认字典grades = defaultdict(list)grades["数学"].append(95)grades["英语"].append(88)# 命名元组Point = namedtuple("Point", ["x", "y"])p = Point(10, 20)print(p.x, p.y) # 10 20# 2. itertools - 迭代工具import itertools# 无限迭代器for i in itertools.count(10, 2): # 从10开始,步长为2if i > 20:breakprint(i) # 10, 12, 14, 16, 18, 20# 排列组合letters = ['A', 'B', 'C']print(list(itertools.permutations(letters, 2))) # 排列print(list(itertools.combinations(letters, 2))) # 组合# 3. re - 正则表达式import retext = "我的电话是13800138000,邮箱是test@example.com"phone_pattern = r'1[3-9]\d{9}'email_pattern = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b'phones = re.findall(phone_pattern, text)emails = re.findall(email_pattern, text)print(f"电话: {phones}") # ['13800138000']print(f"邮箱: {emails}") # ['test@example.com']# 4. datetime - 日期时间from datetime import datetime, timedelta, datenow = datetime.now()print(f"当前时间: {now.strftime('%Y-%m-%d %H:%M:%S')}")tomorrow = now + timedelta(days=1)print(f"明天: {tomorrow.date()}")# 5. random - 随机数import randomprint(random.random()) # 0-1随机小数print(random.randint(1, 100)) # 1-100随机整数print(random.choice(["石头", "剪刀", "布"])) # 随机选择random.shuffle([1, 2, 3, 4, 5]) # 随机打乱
第1-2周:基础语法、数据类型、控制流程
第3-4周:函数、模块、文件操作
第5-6周:面向对象、异常处理
第7-8周:标准库、虚拟环境、项目实战
持续学习:框架学习(Django/Flask)、数据分析(Pandas)、人工智能(PyTorch)
官方文档:docs.python.org(最权威)
交互式学习:Codecademy、LeetCode、HackerRank
视频教程:B站Python相关课程
开源项目:GitHub Trending Python项目
社区:Stack Overflow、知乎、Python中文社区
AI与机器学习:PyTorch、TensorFlow
数据分析:Pandas、NumPy、Matplotlib
Web开发:FastAPI、Django、Flask
自动化:Selenium、Airflow
科学计算:SciPy、SymPy

Python是一门既适合初学者入门,又能支持复杂项目开发的多功能语言。在这个丙午马年,掌握Python将为你的职业发展和技术能力带来质的飞跃。
记住编程的核心原则:
保持好奇:不断探索新技术
动手实践:代码是写出来的,不是看出来的
持续学习:技术更新快,学习不能停
参与社区:分享与交流是进步的阶梯
无论你是编程新手,还是想提升技能的开发者,Python都是一个绝佳的选择。从今天开始,一行行代码,一步步成长,你会发现自己正用代码改变世界。
分享给你的学习伙伴,一起进步!
关注我们,点赞收藏,随时复习!