如何在3分钟内掌握英雄联盟智能助手:免费自动化工具完整指南
2026/4/29 16:56:35
日期:2023年5月23日
主题:Standard Libraries(标准库)
基本格式:
lambdaparams:expression普通函数定义:
defsquare_add_two(x,y):returnx**2+y**2等价的Lambda表达式:
lambdax,y:x**2+y**2语法分解:
lambdax,y:x**2+y**2↑ ↑ 参数 表达式直接调用:
(lambdax,y:x**2+y**2)(8,5)# => 89说明:
功能:
numbers=[1,2,3,4,5]# 使用map和lambda函数对每个数字求平方squared_numbers=list(map(lambdax:x**2,numbers))print(squared_numbers)# => [1, 4, 9, 16, 25]工作流程:
numbers: [1, 2, 3, 4, 5] ↓ ↓ ↓ ↓ ↓ lambda x: x**2: 1² 2² 3² 4² 5² ↓ ↓ ↓ ↓ ↓ result: [1, 4, 9, 16, 25]练习环节:Let’s Try Some Out
定义:
模块(Module):
包(Package):
层级关系:
包(Package) └── 模块(Module) └── 函数/类/变量官方文档地址:
importsound sound.effects.echo.echofilter(a,b)fromsound.effectsimportecho echo.echofilter(a,b)fromsound.effects.echoimportechofilter echofilter(a,b)| 方式 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
import sound | 命名空间清晰 | 调用路径长 | 避免命名冲突 |
from sound.effects import echo | 调用简洁 | 中等命名空间 | 使用多个函数 |
from sound.effects.echo import echofilter | 最简洁 | 可能命名冲突 | 只用少数函数 |
1. 高效存储数据:
importpickle# 保存对象data={'name':'Alice','scores':[95,87,91]}withopen('data.pkl','wb')asf:pickle.dump(data,f)# 加载对象withopen('data.pkl','rb')asf:loaded_data=pickle.load(f)2. 进程间传递信息:
An example(课堂演示)
Pickle安全问题:
安全建议:
# ❌ 危险:加载未知来源的pickle文件withopen('untrusted.pkl','rb')asf:data=pickle.load(f)# 可能执行恶意代码# ✓ 安全:只加载自己创建的文件withopen('my_data.pkl','rb')asf:data=pickle.load(f)方式1:文件内调试
importpdbdefbuggy_function(x,y):pdb.set_trace()# 设置断点result=x/yreturnresult方式2:终端调试
python3-mpdb file.py| 命令 | 说明 |
|---|---|
n(next) | 执行下一行 |
s(step) | 进入函数 |
c(continue) | 继续执行 |
l(list) | 显示代码 |
p variable | 打印变量 |
b line | 设置断点 |
q(quit) | 退出调试 |
常用容器:
1. Counter - 计数器
fromcollectionsimportCounter words=['apple','banana','apple','cherry','banana','apple']counter=Counter(words)# Counter({'apple': 3, 'banana': 2, 'cherry': 1})counter.most_common(2)# [('apple', 3), ('banana', 2)]2. defaultdict - 默认字典
fromcollectionsimportdefaultdict dd=defaultdict(list)dd['fruits'].append('apple')# 不需要先初始化dd['fruits'].append('banana')# {'fruits': ['apple', 'banana']}3. deque - 双端队列
fromcollectionsimportdeque dq=deque([1,2,3])dq.appendleft(0)# 左端添加dq.append(4)# 右端添加# deque([0, 1, 2, 3, 4])4. namedtuple - 命名元组
fromcollectionsimportnamedtuple Point=namedtuple('Point',['x','y'])p=Point(11,22)print(p.x,p.y)# 11 221. @lru_cache - 缓存装饰器
fromfunctoolsimportlru_cache@lru_cache(maxsize=128)deffibonacci(n):ifn<=1:returnnreturnfibonacci(n-1)+fibonacci(n-2)2. partial - 部分函数
fromfunctoolsimportpartialdefpower(base,exponent):returnbase**exponent square=partial(power,exponent=2)cube=partial(power,exponent=3)square(5)# => 25cube(5)# => 1253. reduce - 归约函数
fromfunctoolsimportreducenumbers=[1,2,3,4,5]product=reduce(lambdax,y:x*y,numbers)# => 120 (1 * 2 * 3 * 4 * 5)1. count - 无限计数
fromitertoolsimportcount counter=count(start=10,step=2)# 10, 12, 14, 16, 18, ...2. cycle - 循环迭代
fromitertoolsimportcycle colors=cycle(['red','green','blue'])# red, green, blue, red, green, blue, ...3. chain - 链接迭代器
fromitertoolsimportchainlist(chain([1,2],[3,4],[5,6]))# => [1, 2, 3, 4, 5, 6]4. combinations - 组合
fromitertoolsimportcombinationslist(combinations('ABC',2))# => [('A', 'B'), ('A', 'C'), ('B', 'C')]5. permutations - 排列
fromitertoolsimportpermutationslist(permutations('ABC',2))# => [('A', 'B'), ('A', 'C'), ('B', 'A'),# ('B', 'C'), ('C', 'A'), ('C', 'B')]电话号码匹配示例:
importre pattern=r"\(\d{3}\)[- ]\d{3}-\d{4}"phone="(123) 456-7890"ifre.match(pattern,phone):print("Valid phone number")模式解释:
\(\d{3}\) [- ] \d{3} - \d{4} ↓ ↓ ↓ ↓ ↓ (123) 空格或- 456 - 78901. 搜索匹配
importre text="Email: user@example.com"match=re.search(r'[\w\.-]+@[\w\.-]+',text)ifmatch:print(match.group())# user@example.com2. 查找所有匹配
text="Numbers: 42, 123, 7"numbers=re.findall(r'\d+',text)# ['42', '123', '7']3. 替换
text="Hello World"new_text=re.sub(r'World','Python',text)# "Hello Python"4. 分割
text="apple,banana;cherry:date"fruits=re.split(r'[,;:]',text)# ['apple', 'banana', 'cherry', 'date']说明:
常见包介绍:
| 包名 | 用途 | 特点 |
|---|---|---|
| Flask | Web框架 | 轻量级、灵活 |
| NumPy | 数值计算 | 多维数组、科学计算 |
| Pandas | 数据分析 | DataFrame、数据处理 |
| Requests | HTTP请求 | 简单易用的网络库 |
安装方式:
pipinstallflask pipinstallnumpy pipinstallpandas pipinstallrequests每个包都有自己的文档:
事件经过:
安装前检查:
# ❌ 危险:拼写错误可能安装恶意包pipinstallrequets# 注意:拼写错误!# ✓ 正确:仔细检查包名pipinstallrequests最佳实践:
安全检查清单:
□ 包名拼写正确 □ 来自官方源(PyPI) □ 有官方文档 □ 下载量合理 □ 近期有维护 □ 社区活跃Lambda语法:
lambda参数:表达式# 示例square=lambdax:x**2add=lambdax,y:x+yMap用法:
map(函数,可迭代对象)# 示例list(map(lambdax:x**2,[1,2,3]))# => [1, 4, 9]数据结构:
collections: Counter, defaultdict, deque, namedtuple函数工具:
functools: lru_cache, partial, reduce迭代工具:
itertools: count, cycle, chain, combinations, permutations文本处理:
re: 正则表达式调试工具:
pdb: Python调试器序列化:
pickle: 对象序列化# 数据处理fromcollectionsimportCounter,defaultdict,dequefromfunctoolsimportlru_cache,partialfromitertoolsimportchain,combinations# 文本处理importre# 调试importpdb# 序列化importpickle标准库的价值:
选择合适的工具:
第三方包:
最佳实践:
官方文档:
推荐阅读: