新闻详情

新闻详情

首页 / 资讯中心 / 详情

Python函数速查手册:77个高频函数实战指南

发布时间:2026/11/11 18:00:17来源:尧图网络
Python函数速查手册:77个高频函数实战指南
1. 为什么我要把77个Python函数翻出来重新整理刚学Python那会儿我特别迷信“背函数”。网上搜“Python常用函数”收藏了几十篇结果真到写代码的时候脑子里只剩一个print()。后来带新人、做Code Review、帮同事排查脚本问题我才慢慢意识到函数不是拿来背的是拿来“认脸”的。你不需要记住每个参数的默认值但你必须知道“这个场景大概有哪个函数能干活”然后去查文档、去试。这篇总结的77个函数是我从日常写脚本、做数据处理、搭小工具的过程中反复用到、反复查、反复教别人的那一批。它们覆盖了内置函数、字符串处理、列表字典操作、文件读写、异常处理、常用标准库这几个高频区域。我不会给你一个干巴巴的清单而是按“这个函数解决什么问题、什么时候用、有什么坑”来讲。适合刚入门Python、能写简单脚本但总觉得“不够顺手”的人也适合工作几年但想系统梳理一下基础工具链的开发者。提示函数签名和参数细节以你当前使用的Python版本官方文档为准本文侧重使用场景和实操经验。2. 内置函数那些你每天都在用但可能没用透的家伙2.1 类型转换与判断int、float、str、bool、type、isinstanceint()、float()、str()、bool()这四个是类型转换的“四大金刚”。但很多人不知道int()可以带第二个参数做进制转换int(ff, 16) # 255 int(1010, 2) # 10这个在解析配置文件、处理硬件返回的十六进制数据时特别有用。bool()的坑在于空字符串、空列表、空字典、None、数字0都会返回False其他返回True。我见过有人写if bool(user_input):来判断用户是否输入了内容其实直接if user_input:就够了。type()和isinstance()的区别是面试常问的。type(obj) int不会考虑继承关系而isinstance(obj, int)会。实际开发中优先用isinstance()因为你的代码可能用到子类或者boolbool是int的子类。isinstance(True, int) # True type(True) int # False2.2 数学运算abs、round、pow、divmod、sum、min、maxabs()取绝对值round()四舍五入。注意round()的“银行家舍入”行为round(2.5) # 2 round(3.5) # 4它不是简单的四舍五入而是“四舍六入五成双”。做金融计算时千万别直接用round()要用decimal模块。divmod(a, b)返回(a // b, a % b)也就是商和余数。这个函数在分页计算里特别好用总共有100条数据每页显示7条需要多少页total, per_page 100, 7 pages, remainder divmod(total, per_page) page_count pages (1 if remainder else 0) # 15页sum()可以对可迭代对象求和但注意它只能用于数字。min()和max()可以传key参数words [apple, banana, cherry] longest max(words, keylen) # banana2.3 序列操作len、range、enumerate、zip、sorted、reversedlen()不用多说。range()的坑在于它返回的是一个“惰性序列”不是列表。Python 3里range(1000000)不会占用大量内存但如果你需要反复遍历或者索引可以先转成list。enumerate()是我最喜欢的内置函数之一。以前写循环要维护索引# 老写法 index 0 for item in items: print(index, item) index 1 # 用enumerate for index, item in enumerate(items): print(index, item)zip()可以把多个列表“拉链式”合并names [Alice, Bob, Charlie] scores [85, 92, 78] for name, score in zip(names, scores): print(f{name}: {score})注意zip()在Python 3里返回迭代器只能遍历一次。如果需要多次使用转成list。sorted()和reversed()的区别sorted()返回新列表reversed()返回迭代器。sorted()的key参数极其强大students [ {name: Alice, score: 85}, {name: Bob, score: 92}, ] sorted(students, keylambda s: s[score], reverseTrue)2.4 输入输出与对象操作print、input、id、hash、repr、dir、helpprint()的sep和end参数很多人没用过print(a, b, c, sep-) # a-b-c print(hello, end ) print(world) # hello worldinput()永远返回字符串需要数字要自己转。id()返回对象的内存地址hash()返回哈希值。repr()返回对象的“官方”字符串表示调试时比str()更有用。dir()列出对象的所有属性和方法help()查看文档。这两个是自省利器遇到不熟悉的库先dir()再help()。3. 字符串处理文本清洗和格式化的核心工具3.1 大小写与判断upper、lower、title、capitalize、startswith、endswith、isdigit、isalphaupper()和lower()做大小写转换。title()把每个单词首字母大写capitalize()只把第一个字符大写。做用户输入规范化时通常先strip()再lower()。startswith()和endswith()可以传元组filename report.pdf if filename.endswith((.pdf, .doc, .docx)): print(文档文件)isdigit()判断是否全是数字但注意它不认负号和小数点。isalpha()判断是否全是字母。这两个在表单验证里很常用但更复杂的验证建议用正则。3.2 查找替换与分割find、index、replace、split、rsplit、join、strip、lstrip、rstripfind()找不到返回-1index()找不到抛异常。我一般用find()因为不想写try-except。split()默认按空白字符分割也可以指定分隔符和分割次数2024-01-15.split(-) # [2024, 01, 15] a,b,c,d.split(,, 2) # [a, b, c,d]rsplit()从右边开始分割处理文件路径时有用。join()是split()的逆操作但注意它只能连接字符串列表-.join([2024, 01, 15]) # 2024-01-15strip()去掉首尾空白lstrip()和rstrip()分别去左和右。它们也可以传参数去掉指定字符###hello###.strip(#) # hello3.3 格式化format、f-string、zfill、center、ljust、rjustformat()是老牌格式化方法f-string是Python 3.6的语法糖。我现在的代码里90%的格式化都用f-string因为它可读性最好name Alice score 92.5 print(f{name}的分数是{score:.1f}) # Alice的分数是92.5zfill()补零做编号生成时好用str(7).zfill(3) # 007center()、ljust()、rjust()做对齐输出写命令行工具时有用print(Name.ljust(10), Score.rjust(5)) print(Alice.ljust(10), 92.rjust(5))4. 列表、字典与集合数据组织的三驾马车4.1 列表操作append、extend、insert、remove、pop、clear、index、count、sort、copyappend()加单个元素extend()加多个元素。很多人搞混a [1, 2] a.append([3, 4]) # [1, 2, [3, 4]] a.extend([3, 4]) # [1, 2, 3, 4]remove()按值删除pop()按索引删除并返回。pop()不传参数默认删最后一个所以列表当栈用就是append()加pop()。sort()是原地排序sorted()返回新列表。sort()不能对包含不可比较元素的列表使用比如[1, a]会报错。copy()是浅拷贝。嵌套列表要深拷贝得用copy.deepcopy()import copy a [[1, 2], [3, 4]] b copy.deepcopy(a)4.2 字典操作get、keys、values、items、update、pop、setdefaultget()是字典最实用的方法没有之一config {host: localhost, port: 8080} config.get(timeout, 30) # 30items()遍历键值对for key, value in config.items(): print(key, value)setdefault()在键不存在时设置默认值并返回groups {} groups.setdefault(admin, []).append(Alice)这行代码的意思是如果admin键不存在设为空列表然后往里面加Alice。比写if-else简洁得多。update()合并字典Python 3.9还可以用|运算符a {x: 1} b {y: 2} a.update(b) # {x: 1, y: 2} # 或者 c a | b4.3 集合操作add、remove、union、intersection、difference、issubset集合最大的价值是去重和快速成员判断nums [1, 2, 2, 3, 3, 3] unique list(set(nums)) # [1, 2, 3]union()并集intersection()交集difference()差集。做权限对比、标签匹配时特别方便user_a {read, write} user_b {read, delete} common user_a user_b # {read} only_a user_a - user_b # {write}5. 文件与异常让脚本真正能干活5.1 文件读写open、read、readline、readlines、write、writelines、close、withopen()的文件模式要记清楚r读w写覆盖a追加b二进制。永远用with语句with open(data.txt, r, encodingutf-8) as f: content f.read()read()读全部readline()读一行readlines()读所有行到列表。大文件不要用read()会爆内存。逐行读with open(big_file.txt, r, encodingutf-8) as f: for line in f: process(line.strip())writelines()接收字符串列表但不会自动加换行符需要自己加lines [line1\n, line2\n] with open(output.txt, w) as f: f.writelines(lines)5.2 异常处理try、except、else、finally、raise、asserttry-except的基本结构try: result 10 / 0 except ZeroDivisionError as e: print(f出错了: {e}) else: print(没出错) finally: print(无论如何都执行)else在没异常时执行finally无论如何都执行。raise主动抛异常assert做断言可以用-O参数禁用。注意不要用裸的except:它会捕获所有异常包括KeyboardInterrupt导致程序无法正常退出。至少写except Exception:。5.3 常用标准库函数os、sys、json、datetime、random、reos.path.join()拼路径os.path.exists()判断存在os.makedirs()创建目录。sys.argv获取命令行参数sys.exit()退出程序。json.dumps()和json.loads()做JSON序列化和反序列化import json data {name: Alice, age: 30} json_str json.dumps(data, ensure_asciiFalse, indent2)datetime.now()获取当前时间strftime()格式化from datetime import datetime now datetime.now() print(now.strftime(%Y-%m-%d %H:%M:%S))random.choice()随机选一个random.shuffle()打乱列表random.randint()生成随机整数。re.findall()、re.search()、re.sub()是正则三件套。处理文本清洗时正则比字符串方法更灵活import re text 联系方式: 138-1234-5678 phones re.findall(r\d{3}-\d{4}-\d{4}, text)6. 常见问题与排查技巧实录6.1 函数用错场景的典型翻车现场坑一list.append()返回None。很多人写a [].append(1)结果a是None。append()是原地操作不返回新列表。坑二sort()和sorted()搞混。sort()只能用于列表原地排序返回Nonesorted()可用于任何可迭代对象返回新列表。坑三dict.get()和dict[key]混用。dict[key]在键不存在时抛KeyErrorget()返回None或默认值。不确定键是否存在时永远用get()。坑四strip()去掉了不该去的字符。hello world.strip(h)返回ello world它去掉的是首尾所有h字符不是前缀。坑五round()的银行家舍入。前面说过金融计算用decimal。6.2 性能相关的注意事项in操作在列表上是O(n)在集合和字典上是O(1)。频繁做成员判断时先把列表转成集合# 慢 if item in big_list: # O(n) # 快 big_set set(big_list) if item in big_set: # O(1)字符串拼接用join()而不是# 慢 result for s in strings: result s # 快 result .join(strings)6.3 常见问题速查表问题现象可能原因解决方法TypeError: NoneType object is not iterable函数返回了None检查是否用了append()、sort()等原地方法的返回值KeyError字典键不存在用get()或先判断inIndexError列表索引越界用len()检查长度或用切片UnicodeDecodeError文件编码不对open()时指定encodingutf-8IndentationError缩进不一致统一用4个空格别混用TabAttributeError对象没有该属性用dir()查看可用方法6.4 我个人的实操心得带新人的时候我发现大家最容易犯的错不是“不知道某个函数”而是“不知道某个函数存在”。比如不知道enumerate()就手动维护索引不知道setdefault()就写一堆if-else不知道with就忘了close()。我的建议是每学一个新函数就把它用到实际脚本里。哪怕只是把原来的三行代码改成一行这个函数就真正变成你的了。另外help()和dir()要养成习惯用比搜索引擎快。还有一个技巧用python -i script.py进入交互模式脚本执行完后可以继续在交互环境里试函数。调试的时候特别方便。7. 把77个函数变成自己的工具箱这77个函数不是让你背下来的。我的做法是把它们按场景分类写成一个自己的“速查笔记”放在项目根目录的docs/下面。每次写代码遇到“这个操作好像有内置函数”的时候先翻笔记翻不到再搜。另外Python的collections、itertools、functools这几个模块里还有很多宝藏函数比如Counter、defaultdict、chain、partial。等你把这77个用熟了自然会想去看这些进阶工具。最后分享一个我常用的调试技巧在脚本里临时加一行breakpoint()Python 3.7会进入调试器可以查看变量、单步执行。比到处print()高效得多。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/11 13:52:51

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/10 19:42:40

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/12 9:50:02

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/12 9:25:38

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/11 15:37:39

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/10 17:14:10

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉