Python中带.的方法与无点函数的使用场景区分疑问
Python中对象方法与全局函数的区分
核心区别
带点的是对象方法,属于某一特定数据类型的实例;无点的是内置全局函数,是通用工具,不绑定单一数据类型。
什么时候用带点的对象方法?
- 功能是某类数据独有的:比如
str.lower()是字符串专属的转小写功能,只有字符串对象能调用;list.pop()是列表专属的删除末尾元素功能,其他类型用不了。 - 操作围绕调用它的对象本身:有些方法会修改原对象(比如
list.append()直接给原列表加元素),有些会返回新对象但不改动原对象(比如str.lower()返回新的小写字符串,原字符串不变)。
什么时候用无点的全局函数?
- 功能是跨类型通用的:比如
sorted()可以处理列表、元组、字符串等所有可迭代对象;len()能获取字符串、列表、字典、集合等各种对象的长度;sum()可以计算列表、元组甚至生成器的总和。 - 通常返回新结果,不修改原对象:比如
sorted([3,1,2])会返回一个新的排序列表,原列表[3,1,2]保持不变;而list.sort()是直接修改原列表。
特殊情况:既有方法又有全局函数
有些功能同时存在两种实现,比如排序:
- 用
list.sort():直接在原列表上排序,不返回新值(或者说返回None),适合不需要保留原列表的场景。 - 用
sorted(list):返回新的排序列表,原列表不动,适合需要保留原始数据的场景。
内容的提问来源于stack exchange,提问作者abhinav_2143
相关产品推荐
相关产品推荐

