一句话定位Python 是“可执行的伪代码”——语法简洁、动态强类型、面向对象与函数式双栖。本手册覆盖从基础语法到高阶特性的完整知识体系。一、基础语法1.1 变量与数据类型python# 动态类型变量无需声明类型类型在运行时确定 name Python # 字符串 (str) age 30 # 整数 (int) pi 3.14159 # 浮点数 (float) is_valid True # 布尔 (bool) numbers [1, 2, 3] # 列表 (list) person {name: John} # 字典 (dict) unique {1, 2, 3} # 集合 (set) coordinates (10, 20) # 元组 (tuple)1.2 核心数据类型对比类型可变性有序性重复元素常用操作list✅ 可变✅ 有序✅ 允许append,extend,pop,slicetuple❌ 不可变✅ 有序✅ 允许count,indexdict✅ 可变✅ 有序3.7❌ 键唯一keys,values,items,getset✅ 可变❌ 无序❌ 不允许add,remove,union,intersectionstr❌ 不可变✅ 有序✅ 允许split,join,replace,strip,upper1.3 条件控制python# if-elif-else score 85 if score 90: grade A elif score 80: grade B elif score 70: grade C else: grade D # 三目运算符 status 成人 if age 18 else 未成年1.4 循环结构python# for 循环 for i in range(5): # 0,1,2,3,4 print(i) for item in [a, b, c]: print(item) for key, value in {x: 1, y: 2}.items(): print(key, value) # while 循环 n 5 while n 0: print(n) n - 1 # 循环控制break, continue, else for i in range(10): if i 5: break if i % 2 0: continue print(i) # 1,3 else: print(循环正常结束未触发break)二、函数2.1 函数定义python# 基础函数 def greet(name): return fHello, {name}! # 默认参数 def power(base, exponent2): return base ** exponent power(3) # 9 power(3, 3) # 27 # 关键字参数 def introduce(name, age, city): print(f{name}, {age}, {city}) introduce(age25, city北京, name张三) # 可调换顺序 # 可变参数 *args (元组) 和 **kwargs (字典) def sum_all(*args): return sum(args) sum_all(1, 2, 3, 4) # 10 def print_info(**kwargs): for key, value in kwargs.items(): print(f{key}: {value}) print_info(name张三, age25) # name: 张三, age: 25 # 同时使用必须先 positional再 *args再 **kwargs def func(a, b, *args, optiondefault, **kwargs): pass # 返回值 def divide(a, b): if b 0: return None, 除数不能为零 return a / b, None result, error divide(10, 2) # result5.0, errorNone # 匿名函数 (lambda) square lambda x: x ** 2 list(map(lambda x: x * 2, [1, 2, 3])) # [2, 4, 6] # 文档字符串 (docstring) def my_function(): 函数说明 参数: param1: 第一个参数 返回: 处理后的结果 pass2.2 作用域python# LEGB 规则: Local → Enclosing → Global → Built-in x 10 # 全局变量 def outer(): y 20 # 闭包变量 def inner(): z 30 # 局部变量 print(x, y, z) # 10 20 30 # global 和 nonlocal 关键字 count 0 def increment(): global count count 1 def outer(): value 0 def inner(): nonlocal value value 12.3 装饰器python# 基础装饰器 def timer(func): import time def wrapper(*args, **kwargs): start time.time() result func(*args, **kwargs) print(f耗时: {time.time() - start:.4f}秒) return result return wrapper timer def slow_function(): import time time.sleep(1) # 带参数的装饰器 def repeat(times): def decorator(func): def wrapper(*args, **kwargs): for _ in range(times): result func(*args, **kwargs) return result return wrapper return decorator repeat(3) def say_hello(): print(Hello)三、面向对象编程3.1 类与对象pythonclass Person: # 类变量所有实例共享 species Human # 初始化方法构造器 def __init__(self, name, age): self.name name # 实例变量 self.age age # 实例方法 def introduce(self): return f我叫{self.name}今年{self.age}岁 # 类方法 classmethod def from_birth_year(cls, name, birth_year): age 2026 - birth_year return cls(name, age) # 静态方法 staticmethod def is_adult(age): return age 18 # 特殊方法 def __str__(self): return fPerson(name{self.name}, age{self.age}) def __repr__(self): return fPerson({self.name}, {self.age}) # 创建实例 p1 Person(张三, 25) p2 Person.from_birth_year(李四, 2000) print(p1) # Person(name张三, age25)3.2 继承pythonclass Student(Person): # 子类特有属性 def __init__(self, name, age, student_id): super().__init__(name, age) # 调用父类构造器 self.student_id student_id # 方法重写 def introduce(self): return f我是学生{self.name}学号{self.student_id} def __str__(self): return fStudent({self.name}, {self.age}, {self.student_id}) # 多重继承 class A: def method(self): print(A) class B: def method(self): print(B) class C(A, B): # 按从左到右顺序解析方法 pass print(C.__mro__) # (class C, class A, class B, class object)3.3 属性与封装pythonclass BankAccount: def __init__(self, owner, balance): self.owner owner self.__balance balance # 私有属性双下划线名称修饰 property def balance(self): return self.__balance # 只读属性 balance.setter def balance(self, value): if value 0: raise ValueError(余额不能为负数) self.__balance value def deposit(self, amount): if amount 0: self.__balance amount四、模块与包python# 导入方式 import math from math import sqrt, pi as PI from collections import * # 不推荐 import os.path as path # 模块搜索路径 import sys print(sys.path) # __name__ 的用法 # 当文件被直接执行时__name__ __main__ # 当文件被导入时__name__ 模块名 if __name__ __main__: print(主程序入口) # 包包含 __init__.py 的目录 # 目录结构: # mypackage/ # __init__.py # module1.py # module2.py # subpackage/ # __init__.py # module3.py # 从包导入 from mypackage import module1 from mypackage.subpackage.module3 import some_function五、文件与异常处理5.1 文件操作python# 基础读写 with open(file.txt, r, encodingutf-8) as f: content f.read() # 读取全部 line f.readline() # 读取一行 lines f.readlines() # 读取全部行 with open(file.txt, w, encodingutf-8) as f: f.write(Hello, World!\n) f.writelines([line1\n, line2\n]) # 模式说明: r(读), w(写,覆盖), a(追加), rb(二进制读), wb(二进制写) # 使用 pathlib推荐 from pathlib import Path p Path(data/file.txt) p.read_text(encodingutf-8) p.write_text(content, encodingutf-8) # 上下文管理器自定义 class MyContext: def __enter__(self): print(进入上下文) return self def __exit__(self, exc_type, exc_val, exc_tb): print(退出上下文) return False # 返回True表示异常已被处理5.2 异常处理pythontry: result 10 / 0 except ZeroDivisionError as e: print(f除零错误: {e}) except ValueError: print(值错误) except Exception as e: print(f其他错误: {e}) else: print(没有异常时执行) finally: print(无论是否异常都会执行) # 自定义异常 class MyCustomError(Exception): def __init__(self, message): self.message message super().__init__(message) raise MyCustomError(自定义错误信息)六、高级特性6.1 列表推导式与生成器python# 列表推导式 squares [x**2 for x in range(10)] # [0,1,4,9,16,25,36,49,64,81] evens [x for x in range(20) if x % 2 0] # [0,2,4,6,8,10,12,14,16,18] matrix [[j for j in range(3)] for i in range(3)] # [[0,1,2], [0,1,2], [0,1,2]] # 字典推导式 square_dict {x: x**2 for x in range(5)} # {0:0,1:1,2:4,3:9,4:16} # 生成器惰性计算节省内存 def my_generator(n): for i in range(n): yield i * i gen my_generator(5) next(gen) # 0 next(gen) # 1 # 或使用: for item in gen:6.2 迭代器协议python# 可迭代对象必须实现 __iter__ 方法 # 迭代器必须实现 __iter__ 和 __next__ 方法 class CountDown: def __init__(self, start): self.current start def __iter__(self): return self def __next__(self): if self.current 0: raise StopIteration value self.current self.current - 1 return value # 内置迭代器工具 from itertools import chain, cycle, repeat, product, permutations list(chain([1,2], [3,4])) # [1,2,3,4] # cycle 无限循环, repeat 重复 # product 笛卡尔积, permutations 排列6.3 上下文管理器python# 使用 contextlib 创建上下文管理器 from contextlib import contextmanager contextmanager def open_file(file, mode): f open(file, mode) try: yield f finally: f.close() with open_file(test.txt, w) as f: f.write(Hello)七、常用内置函数函数说明示例len()获取长度len(abc)→ 3type()获取类型type(123)→class intisinstance()检查类型isinstance(123, int)→ Trueint(),str(),float()类型转换int(10)→ 10map()对可迭代对象应用函数list(map(str, [1,2]))→ [1,2]filter()过滤可迭代对象list(filter(lambda x: x0, [-1,2]))→ [2]sorted()排序sorted([3,1,2])→ [1,2,3]zip()并行迭代多个可迭代对象list(zip([1,2], [a,b]))→ [(1,a),(2,b)]enumerate()同时获取索引和值list(enumerate([a,b]))→ [(0,a),(1,b)]open()打开文件open(file.txt)sum(),max(),min()数学运算sum([1,2,3])→ 6any(),all()布尔判断any([False, True])→ Truehelp()查看帮助信息help(print)dir()查看对象属性dir(str)八、常用标准库模块模块说明常用功能os操作系统交互os.path.join,os.environ,os.listdir,os.makedirssysPython解释器sys.argv,sys.exit,sys.path,sys.stdoutjsonJSON处理json.dumps,json.loads,json.dump,json.loaddatetime日期时间datetime.now,timedelta,strftime,strptimere正则表达式re.search,re.match,re.findall,re.sub,re.compilemath数学函数math.sqrt,math.pi,math.sin,math.powrandom随机数random.randint,random.choice,random.shufflecollections扩展容器类型Counter,defaultdict,deque,namedtupleitertools迭代器工具chain,cycle,combinations,productfunctools函数工具partial,reduce,lru_cachesubprocess子进程管理subprocess.run,subprocess.Popenpathlib路径操作推荐Path,Path.read_text,Path.write_textlogging日志记录logging.info,logging.debug,basicConfigargparse命令行参数ArgumentParsertyping类型提示List,Dict,Optional,Union,Callable九、类型提示Type Hintspythonfrom typing import List, Dict, Optional, Union, Callable, Tuple # 基础类型 def greet(name: str, age: int) - str: return f{name}, {age} # 复杂类型 def process(data: List[int]) - Dict[str, int]: return {sum: sum(data), len: len(data)} # 可选类型 def find_user(user_id: int) - Optional[Dict[str, str]]: return {name: 张三} if user_id 1 else None # 多种类型 def parse(value: Union[int, str, float]) - float: return float(value) # 类型别名 UserDict Dict[str, Union[str, int, List[str]]] def get_user() - UserDict: return {name: 张三, age: 25, tags: [Python, Java]} # 无返回值 def log_message(msg: str) - None: print(fLOG: {msg}) # 可变参数 def add(*args: int) - int: return sum(args) def build_url(**kwargs: str) - str: return .join(f{k}{v} for k, v in kwargs.items())十、总结速查问题答案Python是静态类型还是动态类型动态类型变量无需声明类型可变对象与不可变对象举例可变list,dict,set不可变int,str,tuple函数参数传递方式共享传参对象引用传递不可变对象传值可变对象传引用*args和**kwargs*args接收任意数量的位置参数元组**kwargs接收任意数量的关键字参数字典staticmethod和classmethodclassmethod接收类作为第一个参数clsstaticmethod不接收隐式参数__init__和__new____new__创建实例先于__init____init__初始化实例生成器和列表推导式的区别生成器惰性计算节省内存列表推导式立即计算占用内存浅拷贝vs深拷贝浅拷贝仅复制引用深拷贝递归复制所有内容十一、Python 开发者工具链工具类型常用工具说明包管理pip,poetry,conda安装、管理依赖环境管理venv,conda,virtualenv隔离项目环境格式化black,autopep8自动代码格式化Linterpylint,flake8,ruff静态代码检查类型检查mypy静态类型检查测试框架pytest,unittest编写和运行测试依赖管理requirements.txt,pyproject.toml管理项目依赖调试pdb,ipdb,breakpoint()Python调试器一句话总结Python 语法简洁到“可以像读英文一样读代码”但其动态特性和丰富生态让它的表达能力极其强大。掌握基础语法 常用库 高级特性就能胜任从脚本开发到大型系统的全部场景。