Python 内置函数大全

Python 内置函数大全:名称、作用与使用方法

Python 内置函数(Built-in Functions)是 Python 自带的一组函数,不需要导入任何模块,就可以直接使用。它们用于数据类型转换、数学运算、字符串处理、集合操作、文件读写、对象检查等场景。

例如:

复制代码
print("Hello Python")   # 输出内容
len([10, 20, 30])       # 获取列表长度,结果为 3
type(123)               # 查看数据类型,结果为 <class 'int'>
str(123)                # 转换为字符串,结果为 "123"

Python 内置函数和你自己定义的函数不同:内置函数由 Python 提供,而自定义函数通常通过 def 定义。

下面按照实际开发中的用途,系统整理各个内置函数,并提供用法和示例。

官方文档按照字母顺序列出了 Python 内置函数。需要注意,int()、str()、list() 等同时也是内置类型的构造器,因此日常所说的"内置函数"通常也会把它们一起学习。

image

Python 3.15.0 documentation

+1

一、先认识最常用的内置函数

下面这 20 个建议优先掌握,它们在日常 Python 开发中非常常见。

函数 作用 示例 返回结果
print() 输出内容 print("Hello") 输出 Hello
len() 获取长度 len("Python") 6
type() 查看类型 type(123) int 类型
isinstance() 判断类型 isinstance(123, int) True
int() 转整数 int("123") 123
float() 转浮点数 float("3.14") 3.14
str() 转字符串 str(123) "123"
bool() 转布尔值 bool(0) False
list() 转列表 list("abc") ['a', 'b', 'c']
dict() 创建字典 dict(a=1) {'a': 1}
set() 创建集合、去重 set([1, 1, 2]) {1, 2}
range() 生成整数序列 list(range(3)) [0, 1, 2]
enumerate() 同时获取索引和值 list(enumerate(["a", "b"])) [(0, 'a'), (1, 'b')]
zip() 配对多个序列 list(zip([1, 2], ["a", "b"])) [(1, 'a'), (2, 'b')]
sorted() 排序 sorted([3, 1, 2]) [1, 2, 3]
sum() 求和 sum([1, 2, 3]) 6
max() 求最大值 max([1, 5, 3]) 5
min() 求最小值 min([1, 5, 3]) 1
abs() 求绝对值 abs(-10) 10
open() 打开文件 open("a.txt", "r") 文件对象

其中,open() 涉及文件资源管理,后面会专门介绍更安全的 with open(...) 写法。

二、全部内置函数分类详解

以下按照功能分类,覆盖 Python 常见版本中的内置函数,以及常用的内置类型构造器。不同 Python 版本可能存在少量差异。

1. 输出、输入与调试

① print() --- 输出内容

复制代码
print("Hello")
print("姓名:", "张三")
print(1, 2, 3, sep="-", end="!")
# 输出:1-2-3!

sep 设置多个值之间的分隔符,end 设置输出结尾,默认是换行。

② input() --- 获取用户输入

复制代码
name = input("请输入姓名:")
print(name)

注意:input() 返回的始终是字符串。需要数字时,应根据情况使用 int() 或 float() 转换。

③ breakpoint() --- 设置调试断点

复制代码
x = 10breakpoint()
print(x)

程序执行到这里会进入调试器,便于检查变量和执行状态。

④ help() --- 查看帮助

复制代码
help(len)
help(str)

用于查询函数、类型或对象的说明。

2. 数据类型转换与创建

函数 用途 示例
bool(x) 转布尔值 bool("") → False
int(x) 转整数 int("12") → 12
float(x) 转浮点数 float("2.5") → 2.5
complex(x) 创建复数 complex(2, 3) → (2+3j)
str(x) 转字符串 str(123) → "123"
bytes(x) 创建不可变字节序列 bytes([65, 66]) → b'AB'
bytearray(x) 创建可变字节序列 bytearray([65, 66])
list(x) 创建列表 list("ab") → ['a', 'b']
tuple(x) 创建元组 tuple([1, 2]) → (1, 2)
dict(x) 创建字典 dict([("a", 1)]) → {'a': 1}
set(x) 创建集合 set([1, 1, 2]) → {1, 2}
frozenset(x) 创建不可变集合 frozenset([1, 2])
range(...) 创建整数范围对象 list(range(1, 4)) → [1, 2, 3]
slice(...) 创建切片对象 slice(1, 5, 2)
object() 创建基础对象 obj = object()
memoryview(x) 创建内存视图 memoryview(b"abc")

注意:range(1, 4) 表示从 1 开始,到 4 之前结束;它本身不是列表。

3. 数学计算与数字处理

函数 用途 示例
abs(x) 绝对值 abs(-5) → 5
round(x, n) 四舍五入规则下的舍入 round(3.14159, 2) → 3.14
pow(x, y) 幂运算 pow(2, 3) → 8
divmod(a, b) 同时求商和余数 divmod(10, 3) → (3, 1)
sum(x) 求和 sum([1, 2, 3]) → 6
max(x) 最大值 max(1, 8, 3) → 8
min(x) 最小值 min(1, 8, 3) → 1

pow() 还支持三个参数:

复制代码
pow(2, 3, 5)  
# 2 的 3 次方再对 5 取余,结果为 3

4. 类型判断与对象检查

函数 用途 示例
type(x) 查看对象的类型 type("abc")
isinstance(x, T) 判断对象是否属于某类型 isinstance(1, int)
issubclass(A, B) 判断类 A 是否为类 B 的子类 issubclass(bool, int) → True
callable(x) 判断对象是否可调用 callable(print) → True
id(x) 获取对象身份标识 id(obj)
hash(x) 获取哈希值 hash("abc")
dir(x) 查看对象的属性和方法 dir("abc")
vars(x) 获取对象的 __dict__ vars(obj)
repr(x) 获取面向开发者的表示形式 repr("a\nb")
ascii(x) 将非 ASCII 字符转义表示 ascii("中文")
format(x, spec) 按指定格式生成字符串 format(3.14, ".1f") → "3.1"
chr(n) Unicode 编码转字符 chr(65) → 'A'
ord(c) 字符转 Unicode 编码 ord("A") → 65

type() 和 isinstance() 的区别尤其重要:

复制代码
class Animal:
    pass

class Dog(Animal):
    pass

dog = Dog()

print(type(dog) == Animal)  # False
print(isinstance(dog, Animal))  # True

当需要判断继承关系时,通常优先考虑 isinstance()。

5. 列表、集合与迭代器操作

函数 用途 示例
len(x) 获取元素数量 len([1, 2, 3]) → 3
sorted(x) 返回排序后的新列表 sorted([3, 1, 2])
reversed(x) 获取反向迭代器 list(reversed([1, 2, 3]))
enumerate(x) 遍历时获取索引和值 list(enumerate(["a", "b"]))
zip(a, b) 将多个可迭代对象配对 list(zip([1, 2], ["a", "b"]))
iter(x) 获取迭代器 it = iter([1, 2])
next(it) 获取下一个元素 next(it)
map(f, x) 将函数应用到每个元素 list(map(str, [1, 2]))
filter(f, x) 筛选符合条件的元素 list(filter(lambda n: n > 2, [1, 3]))
all(x) 判断所有元素是否为真 all([True, True]) → True
any(x) 判断是否存在真值元素 any([False, True]) → True

其中 map() 和 filter() 在数据处理时比较有用:

复制代码
numbers = [1, 2, 3, 4, 5]

# 每个数字乘以 2
result = list(map(lambda x: x * 2, numbers))
# [2, 4, 6, 8, 10]

# 只保留偶数
result = list(filter(lambda x: x % 2 == 0, numbers))
# [2, 4]

在很多场景下,也可以使用列表推导式,代码往往更容易阅读:

复制代码
[x * 2 for x in numbers]
[x for x in numbers if x % 2 == 0]

6. 字符串格式化与进制转换

函数 用途 示例
bin(x) 整数转二进制字符串 bin(10) → '0b1010'
oct(x) 整数转八进制字符串 oct(10) → '0o12'
hex(x) 整数转十六进制字符串 hex(255) → '0xff'
format(x, spec) 格式化值 format(12.345, ".2f") → '12.35'
ascii(x) 生成 ASCII 转义表示 ascii("中")
repr(x) 获取对象表示字符串 repr([1, 2]) → '[1, 2]'

例如,格式化金额、百分比和日期显示时经常会使用 format():

复制代码
price = 12.5

print(format(price, ".2f"))  # 12.50
print(format(0.25, ".0%"))   # 25%

7. 文件与数据读取

函数 用途 示例
open() 打开文件 open("data.txt", "r", encoding="utf-8")

open() 虽然只有一个函数,但有多种模式:

复制代码
# 读取文本
with open("data.txt", "r", encoding="utf-8") as f:
    content = f.read()

# 写入文本,会覆盖原有内容
with open("data.txt", "w", encoding="utf-8") as f:
    f.write("Hello")

常见模式:

  • r:读取。
  • w:写入并覆盖原内容。
  • a:追加内容。
  • x:仅在文件不存在时创建。
  • b:二进制模式,例如 rb 读取 PDF 或其他二进制文件。

读取大文件时,不建议直接调用 f.read() 一次性读取全部内容,可以使用 for line in f 或分块读取。

8. 属性、变量与命名空间操作

这组函数在面向对象编程、框架开发和动态访问属性时很常见。

函数 用途 示例
getattr(obj, name) 获取对象属性 getattr(obj, "name")
setattr(obj, name, value) 设置对象属性 setattr(obj, "name", "张三")
hasattr(obj, name) 检查属性是否存在 hasattr(obj, "name")
delattr(obj, name) 删除对象属性 delattr(obj, "name")
globals() 获取全局命名空间字典 globals()
locals() 获取当前局部命名空间 locals()

例如:

复制代码
class User:
    pass

user = User()

setattr(user, "name", "张三")

print(getattr(user, "name"))       # 张三
print(hasattr(user, "name"))       # True

delattr(user, "name")

print(hasattr(user, "name"))       # False

getattr() 的第三个参数可以设置默认值,避免属性不存在时报错:

复制代码
name = getattr(user, "name", "未知用户")
print(name)  # 未知用户

9. 类、继承与面向对象编程

函数 用途 示例或说明
property() 将方法包装成属性访问接口 property(getter, setter)
classmethod() 将方法声明为类方法的底层构造器 @classmethod
staticmethod() 将方法声明为静态方法的底层构造器 @staticmethod
super() 访问父类的实现 super().__init__()
type() 查看类型,也可动态创建类 type("User", (), {})
object() 创建最基础的对象 obj = object()

你之前问过的 @staticmethod 就属于这一类。实际开发中通常使用装饰器语法:

复制代码
class Calculator:
    @staticmethod
    def add(a, b):
        return a + b

print(Calculator.add(1, 2))  # 3

property() 也可以用于属性封装:

复制代码
class User:
    def __init__(self, name):
        self._name = name

    @property
    def name(self):
        return self._name

user = User("张三")
print(user.name)  # 张三

10. 字符串与代码的动态执行

函数 用途 示例
compile() 将源代码编译为代码对象 compile("1 + 2", "<string>", "eval")
eval() 执行 Python 表达式并返回结果 eval("1 + 2") → 3
exec() 执行 Python 语句 exec("x = 10")
__import__() 底层导入模块的机制 __import__("math")

重要安全提醒:不要对不可信的用户输入使用 eval() 或 exec()。 它们可能执行任意 Python 代码,造成数据泄露、文件被修改或其他安全问题。__import__() 一般也不需要直接调用,常规情况下使用 import 语句即可。

image

Python 3.15.0 documentation

11. 其他常用的内置函数

函数 用途 示例
iter(callable, sentinel) 持续调用函数,直到返回指定终止值 iter(read_chunk, b"")
aiter() 获取异步迭代器 aiter(async_iterable)
anext() 获取异步迭代器的下一个元素 await anext(iterator)
__import__() 执行底层模块导入 __import__("json")
hash() 获取对象哈希值 hash(123)
id() 获取对象身份标识 id(obj)

aiter() 和 anext() 用于异步编程,常见于异步网络请求、异步数据流等场景。

三、容易混淆的几个函数

map()、filter() 和 zip() 有什么区别?

map():转换数据

复制代码
list(map(str, [1, 2, 3]))# ['1', '2', '3']

将函数应用到每个元素。

filter():筛选数据

复制代码
list(filter(lambda x: x > 2, [1, 2, 3, 4]))# [3, 4]

保留符合条件的元素。

zip():组合数据

复制代码
list(zip(["张三", "李四"], [18, 20]))# [('张三', 18), ('李四', 20)]

按对应位置组合多个可迭代对象。

sorted() 和 reversed() 有什么区别?

复制代码
numbers = [3, 1, 2]print(sorted(numbers))                 # [1, 2, 3]print(list(reversed(numbers)))         # [2, 1, 3]print(numbers)                         # [3, 1, 2]
  • sorted():按排序规则重新排列。
  • reversed():反转原有顺序,不负责排序。
  • 两者都不会直接修改上面的原列表。

all() 和 any() 有什么区别?

复制代码
print(all([True, True, False]))  # Falseprint(any([True, True, False]))  # True
  • all():所有元素都为真才返回 True。
  • any():至少一个元素为真就返回 True。

注意,Python 中的 0、None、""、[] 等通常属于假值,而非空字符串 "False" 仍然是真值。

四、进阶内置函数补充

下面补充一些不那么常用、但完整学习时值得认识的函数。

函数 用法与示例 说明
next() next(iter([10, 20])) → 10 获取迭代器下一个值
slice() s = slice(1, 4); [1,2,3,4,5][s] → [2,3,4] 创建切片规则
vars() vars(obj) 查看对象的实例属性字典(如果有)
staticmethod() 通常写作 @staticmethod 声明静态方法
classmethod() 通常写作 @classmethod 声明类方法
property() 通常写作 @property 将方法作为属性访问
super() super().__init__() 调用父类实现
compile() compile("1+2", "", "eval") 编译表达式或代码
memoryview() memoryview(b"abc") 创建零拷贝内存视图(适用于支持缓冲区协议的对象)
bytearray() bytearray(b"abc") 创建可修改的字节序列
frozenset() frozenset([1, 2, 2]) 创建不可变集合
callable() callable(len) → True 检查对象是否可调用
chr() chr(65) → 'A' 编码转字符
ord() ord('A') → 65 字符转编码
hex() hex(255) → '0xff' 转十六进制字符串
oct() oct(8) → '0o10' 转八进制字符串
bin() bin(5) → '0b101' 转二进制字符串
hash() hash(123) 获取哈希值
id() id(obj) 获取对象身份标识
ascii() ascii("你好") 返回带非 ASCII 字符转义的表示
repr() repr("hello") → "'hello'" 获取对象的表示字符串

另外,aiter() 和 anext() 是异步迭代专用函数,适用于异步生成器等对象。eval()、exec() 和 __import__() 属于较高级的动态执行或导入机制,初学时了解即可。

image

Python 3.15.0 documentation

+1

五、如何查看你当前 Python 版本支持的内置函数?

Python 可以直接使用 dir() 和 __builtins__ 查看当前环境。

复制代码
import builtins# 查看所有内置名称print(dir(builtins))# 只筛选可调用的内置对象names = [    name    for name in dir(builtins)    if callable(getattr(builtins, name))]print(names)print("数量:", len(names))

注意,这会同时列出函数、类型和异常类等可调用对象,并不等于纯粹的内置函数数量。

官方参考文档:

六、建议按照什么顺序学习?

考虑到你正在系统学习 Python 语法,我建议按下面的顺序掌握,不必一次记住所有函数。

第一阶段:基础语法

print()、input()、type()、len()、int()、float()、str()、bool()、isinstance()

目标:熟悉输入输出、数据类型与类型转换。

第二阶段:数据处理

list()、dict()、set()、range()、enumerate()、zip()、sorted()、sum()、max()、min()

目标:熟练处理列表、字典、集合和循环。

第三阶段:实际开发

open()、getattr()、hasattr()、map()、filter()、all()、any()、next()、iter()

目标:读写文件、处理数据、理解对象与迭代器。

第四阶段:进阶开发

property()、classmethod()、staticmethod()、super()、globals()、locals()、compile()

目标:掌握面向对象、命名空间与动态机制。

最重要的建议: 不需要背诵所有内置函数。先掌握基础类型转换、容器操作、循环和文件读写;当实际代码遇到陌生函数时,再查官方文档并练习使用。这样比一次记忆全部名称更有效。

相关推荐
美狐美颜SDK开放平台42 分钟前
直播APP集成美颜SDK,如何梳理第三方组件的数据权限?
开发语言·人工智能·深度学习·音视频·第三方美颜sdk
沉下心来学鲁班1 小时前
具身智能进阶:让 MicroDuck 踩着高跷走路
人工智能·python·机器人
comedate1 小时前
【AI】Jev API 接入实战:用 Python 调用 TypeSafe Jev 做结构化判断
人工智能·python·jev·typesafe·快速判断模型
怪我冷i1 小时前
Rust 核心语法与内存安全机制
开发语言·安全·rust
开开心心_Every1 小时前
免费压缩软件WinRAR无弹窗、广告干扰
java·开发语言·前端·spring·智能手机·word·winrar
江沉晚呤时2 小时前
零依赖的代价与自由:我用 C# 自研了一套 Office 读写库
开发语言·c#
cc_瀚海知行2 小时前
工具调用 6|助手什么时候该停下来?
java·服务器·前端·人工智能·python·ai
想做小南娘,发现自己是女生喵2 小时前
QT项目实战第一周(嵌入式)
开发语言·qt
学逆向的2 小时前
C 可变量参数
c语言·开发语言·网络安全