Python 内置函数(len/str 等)使用:分清用法 + 速查对照表
【摘要】 刚学 Python 时,特别容易搞混 “直接引用的属性” 和 “要加 () 调用的函数”—— 比如想知道列表长度得写len(list),而转字符串要写str(123),不是直接写len或str就行。其实这些都是 Python 给我们准备好的 “内置工具”,不用额外装包就能用。一、先搞懂:len/str 到底是什么?为什么有的要加 ()?这么说吧,len()、str()、int()这些带括号的...
刚学 Python 时,特别容易搞混 “直接引用的属性” 和 “要加 () 调用的函数”—— 比如想知道列表长度得写
len(list),而转字符串要写str(123),不是直接写len或str就行。其实这些都是 Python 给我们准备好的 “内置工具”,不用额外装包就能用。一、先搞懂:len/str 到底是什么?为什么有的要加 ()?
这么说吧,
len()、str()、int()这些带括号的,都是 Python 的内置函数—— 相当于 Python 提前给你准备好的 “现成工具”,需要你 “主动调用”(加括号、传参数)才能干活;而你说的 “直接引用” 的,大概率是对象的属性 / 方法(比如list.append是方法,math.pi是属性),要么是不用传参的属性,要么是需要加括号调用的方法(比如s.lower())。举个直观例子:
- 想知道
['a','b','c']的长度:得调用len(['a','b','c'])(把列表传给 len 工具,它返回 3); - 想把数字 123 转成字符串:得调用
str(123)(把数字传给 str 工具,它返回 '123'); - 而列表的
append是 “方法”(属于列表自己的工具),得先有列表,再调用:lst = [1,2]; lst.append(3)(不能直接写append(3))。
至于 “能不能替换”:
- 比如
len(lst)本质上是调用了列表自己的lst.__len__()方法,你写成lst.__len__()也能得到长度,但绝对不推荐—— 内置函数len()是 Python 官方规范的写法,兼容所有可计算长度的对象(字符串、字典、元组等),而__len__()是对象的底层方法,不同类型的写法可能不一致,还容易出错; - 同理,
str(123)等价于123.__str__(),但优先用str(),通用性更强。
简单说:内置函数是 “通用接口”,不用替换,直接用就是最优解。
二、常用内置函数速查对照表(按场景分类,好记好用)
我把日常用得最多的内置函数按 “用途” 分类,你不用记全,遇到对应场景翻这个表就行:
1. 序列 / 容器操作(最常用,比如 len)
| 函数 | 作用 | 示例 | 返回结果 | 能不能替换(不推荐) |
|---|---|---|---|---|
| len(obj) | 计算可迭代对象的长度(字符串 / 列表 / 字典等) | len('abc') / len([1,2,3]) | 3 / 3 | obj.len() |
| max(iter) | 找可迭代对象的最大值 | max([1,5,3]) | 5 | 无通用替换,手动遍历更麻烦 |
| min(iter) | 找可迭代对象的最小值 | min((2,0,4)) | 0 | 无通用替换 |
| sum(iter) | 计算数值型可迭代对象的和 | sum([1,2,3]) | 6 | 手动循环累加(低效) |
| sorted(iter) | 排序可迭代对象(返回新列表) | sorted([3,1,2]) | [1,2,3] | list.sort ()(改原列表) |
| reversed(iter) | 反转可迭代对象(返回迭代器) | list(reversed([1,2])) | [2,1] | obj [::-1](切片,仅序列可用) |
2. 类型转换(比如 str/int)
| 函数 | 作用 | 示例 | 返回结果 | 能不能替换 |
|---|---|---|---|---|
| str(obj) | 转成字符串类型 | str(123) / str(True) | '123' / 'True' | obj.str() |
| int(obj) | 转成整数(需可转换,比如数字字符串) | int('123') / int(3.9) | 123 / 3 | 无通用替换 |
| float(obj) | 转成浮点数 | float('3.14') / float(5) | 3.14 / 5.0 | 无通用替换 |
| list(iter) | 转成列表 | list('abc') / list((1,2)) | ['a','b','c'] / [1,2] | 无通用替换 |
| tuple(iter) | 转成元组 | tuple([1,2]) | (1,2) | 无通用替换 |
| dict(iter) | 转成字典(需键值对格式) | dict([('a',1),('b',2)]) | {'a':1,'b':2} | 无通用替换 |
3. 判断 / 检查(辅助逻辑判断)
| 函数 | 作用 | 示例 | 返回结果 |
|---|---|---|---|
| type(obj) | 查看对象类型 | type(123) / type('abc') | int / str |
| isinstance(obj, cls) | 判断对象是否是指定类型 | isinstance(123, int) / isinstance('a', str) | True / True |
| bool(obj) | 转成布尔值(空 / 0 为 False,其余 True) | bool(0) / bool([1]) | False / True |
4. 输入输出(基础交互)
| 函数 | 作用 | 示例 | 说明 |
|---|---|---|---|
| print(obj) | 打印内容到控制台 | print('hello') | 直接用,无替换 |
| input(msg) | 接收用户输入(返回字符串) | name = input (' 请输入姓名:') | 直接用 |
三、避坑小技巧:什么时候用内置函数?什么时候用对象方法?
咱们不妨看看实际场景,避免搞混 “内置函数” 和 “对象方法”:
- 内置函数是 “全局工具”:比如
len()能算字符串、列表、字典的长度,不管是什么类型,只要能算长度,传进去就行;而对象方法是 “专属工具”—— 比如字符串的'abc'.upper(),只有字符串能用,列表就没有upper()方法。 - 优先用内置函数:比如排序时,
sorted(lst)返回新列表,不修改原列表;而lst.sort()是列表的方法,会改原列表,根据需求选,但len()、str()这类内置函数,直接用就对了。 - 不用纠结 “替换”:除非是面试考底层原理,否则日常开发中,
len(obj)就是最优写法,不用换成obj.__len__()—— 既不规范,也容易在不同对象上出问题(比如字典的__len__()和列表的写法虽然一样,但自定义对象可能没实现)。
四、总结一下下干货
len()、str()等是 Python内置函数,需要加括号传参数调用,是官方推荐的通用写法;- “直接引用” 的通常是对象的属性 / 方法(比如
lst.append),和内置函数是不同类型的 “工具”; - 内置函数不用替换,对照上面的分类表,按场景选就行;
- 核心原则:优先用内置函数(通用、规范),对象方法按需求用(专属、灵活)。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)