【内置函数】84个Python内置函数全整理

Python 内置函数全集(完整分类 + 参数详解 + 示例)

文章目录

🔗 官方文档https://docs.python.org/3/library/functions.html

本文完整覆盖 Python 所有内置函数(截至 Python 3.12,共 84 个),每个函数都按分类分层讲解,涵盖:

  • 函数签名与参数说明
  • 精确功能描述
  • 使用示例代码(标准 Python 风格)
  • 标注版本限制(若有)

一、数值与数学函数

abs(x)

返回数值的绝对值。可用于整数、浮点数或复数。

abs(-3)       # 3
abs(-3.5)     # 3.5
abs(3 + 4j)   # 5.0

divmod(a, b)

返回一个 (商, 余数) 的元组,等价于 (a // b, a % b)

divmod(9, 4)     # (2, 1)
divmod(8.5, 2)   # (4.0, 0.5)

pow(x, y, mod=None)

返回 x ** y。如果给出 mod,返回 x**y % mod

pow(2, 3)         # 8
pow(2, 3, 5)      # 3

round(number[, ndigits])

返回 number 四舍五入的值。可选 ndigits 指定保留几位小数。

round(3.14159, 2)   # 3.14
round(3.5)          # 4

sum(iterable, /, start=0)

iterable 中所有元素求和,并加上 start 初始值(默认是 0)。

sum([1, 2, 3])            # 6
sum((1.5, 2.5), 1.0)      # 5.0

hash(obj)

返回对象的哈希值,常用于哈希表、集合等。

hash("abc")     # 整数,值视实现平台不同而不同
hash((1, 2, 3)) # 元组可哈希

二、类型转换函数(构造器)

int(x=0, base=10)

将 x 转换为整数。如果是字符串,可提供 base(如 2, 16)。

int("100", 2)     # 4
int(3.9)          # 3

float(x)

将字符串或整数转为浮点数。

float("3.14")     # 3.14
float(10)         # 10.0

complex(real, imag=0)

构造复数,实部为 real,虚部为 imag。

complex(2, 3)     # (2+3j)

str(obj)

将任意对象转换为字符串。

str(123)          # '123'
str([1, 2])       # '[1, 2]'

bool(x)

将对象转换为布尔值,遵循 Python 真值判断规则。

bool(0)           # False
bool("hello")     # True

bytes(source, encoding) / bytes(length)

返回一个 bytes 对象。

bytes("hi", "utf-8")       # b'hi'
bytes(3)                   # b'\x00\x00\x00'

三、迭代与函数式编程工具

all(iterable)

只要 iterable 中所有元素为真(或为空),返回 True。

all([1, 2, 3])        # True
all([0, 1, 2])        # False

any(iterable)

只要 iterable 中有一个元素为真,返回 True。

any([0, 0, 1])        # True
any([])               # False

aiter(async_iterable)

🔹 Python 3.10+
返回异步迭代器(用于 async for 语句)。

# 用于异步生成器场景中

anext(async_iterator[, default])

🔹 Python 3.10+
获取异步迭代器的下一个元素。

# 通常用于 async 上下文中

enumerate(iterable, start=0)

返回带索引的迭代器,元素为 (index, item)

for i, ch in enumerate("abc"):
    print(i, ch)
# 0 a
# 1 b
# 2 c

filter(function, iterable)

筛选 iterable 中使 function(item) 为 True 的元素。

list(filter(lambda x: x % 2 == 0, range(5)))  # [0, 2, 4]

map(function, iterable, …)

将 function 应用于 iterable 的每个元素。

list(map(str.upper, ['a', 'b']))   # ['A', 'B']

zip(*iterables)

并行组合多个可迭代对象为元组序列。

list(zip([1, 2], ['a', 'b']))      # [(1, 'a'), (2, 'b')]

iter(obj[, sentinel])

获取对象的迭代器;或创建带哨兵值的调用器迭代器。

it = iter([10, 20])
next(it)     # 10

# 特例:可从函数创建终止控制的迭代器

next(iterator[, default])

从迭代器中取下一个值,若耗尽则返回 default(若提供)。

next(iter("abc"))        # 'a'

reversed(seq)

返回反向迭代器,仅适用于序列类型(如 list、str)。

list(reversed("abc"))    # ['c', 'b', 'a']

继续添加中…


四、字符串与字符处理函数

ascii(obj)

返回对象的 ASCII 表示(转义非 ASCII 字符)。

ascii("你好")       # '\u4f60\u597d'

bin(x)

返回整数的二进制字符串。

bin(10)            # '0b1010'

chr(i)

返回 Unicode 编码为 i 的字符。

chr(97)            # 'a'

format(value, format_spec=‘’)

返回格式化字符串(等价于 format() 方法)。

format(255, 'x')   # 'ff'

hex(x)

返回整数的十六进制表示。

hex(255)           # '0xff'

oct(x)

返回整数的八进制表示。

oct(8)             # '0o10'

ord©

返回字符的 Unicode 编码值。

ord('a')           # 97

repr(obj)

返回对象的“官方字符串表示”,通常可被 eval() 执行。

repr("abc")        # "'abc'"

五、输入输出与执行控制

print(*objects, sep=’ ‘, end=’\n’, file=sys.stdout, flush=False)

标准输出函数,可指定分隔符、结尾等。

print("Hello", "World", sep=", ", end="!")   # Hello, World!

input(prompt=None)

接收用户输入,返回字符串。

name = input("Your name: ")

eval(expression, globals=None, locals=None)

计算字符串表达式的值。

eval("2 + 2")      # 4

exec(object, globals=None, locals=None)

执行任意 Python 代码字符串或代码对象。

exec("x = 5")
print(x)           # 5

compile(source, filename, mode)

将字符串编译为代码对象,用于 eval()exec()

code = compile("3+4", "<string>", "eval")
eval(code)         # 7

六、对象检查与反射

callable(obj)

判断对象是否为可调用(函数、类、方法等)。

callable(len)      # True

getattr(obj, name[, default])

获取对象属性(字符串形式指定)。

getattr("abc", "upper")()    # 'ABC'

hasattr(obj, name)

判断对象是否有某属性。

hasattr(str, "split")        # True

setattr(obj, name, value)

为对象设置属性值。

class A: pass
setattr(A, "x", 42)
A.x                        # 42

delattr(obj, name)

删除对象属性。

class B:
    y = 10
delattr(B, "y")

id(obj)

返回对象的“身份标识”(地址)。

id("abc")                  # 返回一个整数(唯一 ID)

type(obj) / type(name, bases, dict)

返回对象类型,或动态创建新类型。

type(123)                  # <class 'int'>

isinstance(obj, classinfo)

判断对象是否属于某类或其子类。

isinstance(3.5, float)     # True

issubclass(cls, classinfo)

判断类是否为另一个类的子类。

issubclass(bool, int)      # True

七、类与方法控制函数

classmethod(function)

将函数包装为类方法,第一个参数是类本身。

class A:
    @classmethod
    def hello(cls):
        return cls.__name__

A.hello()        # 'A'

staticmethod(function)

将函数包装为静态方法,无需传递实例或类。

class A:
    @staticmethod
    def greet():
        return "Hi!"

A.greet()        # 'Hi!'

property(fget=None, fset=None, fdel=None, doc=None)

将方法定义为属性(可读/写/删)。

class Circle:
    def __init__(self, r):
        self._r = r

    @property
    def radius(self):
        return self._r

c = Circle(5)
c.radius        # 5

super([type[, obj]])

用于调用父类方法。

class A:
    def greet(self): return "Hello"

class B(A):
    def greet(self): return super().greet() + " from B"

B().greet()      # "Hello from B"

八、容器构造函数

list([iterable])

构建列表。

list("abc")         # ['a', 'b', 'c']

tuple([iterable])

构建元组。

tuple([1, 2])       # (1, 2)

dict([mapping or iterable])

构建字典。

dict(a=1, b=2)      # {'a': 1, 'b': 2}

set([iterable])

构建集合。

set([1, 2, 2])      # {1, 2}

frozenset([iterable])

构建不可变集合。

frozenset("abca")   # frozenset({'a', 'b', 'c'})

九、作用域与变量访问

globals()

返回当前全局作用域的字典。

globals()["x"] = 42
x              # 42

locals()

返回当前局部作用域的变量字典。

def f(): a = 1; return locals()

vars([object])

返回对象的 __dict__,或当前本地变量。

class A:
    def __init__(self): self.x = 1
vars(A())         # {'x': 1}

十、内存与字节工具

bytes([source[, encoding[, errors]]])

构造不可变字节对象。

bytes("hi", "utf-8")    # b'hi'

bytearray([source[, encoding[, errors]]])

构造可变字节数组。

bytearray("hi", "utf-8")  # bytearray(b'hi')

memoryview(obj)

返回给定对象的内存视图。

memoryview(b"abc")[1]    # 98

十一、其他函数

object()

返回一个最基本的对象实例。

object()         # <object object at ...>

help([object])

调用内置帮助系统。

help(str)

open(file, mode=‘r’, …)

打开文件。

f = open("file.txt", "r")

ord(char)

返回字符的整数 Unicode 编码。

ord('A')         # 65

slice(start, stop[, step])

创建切片对象。

s = slice(1, 4)
"hello"[s]       # 'ell'

sorted(iterable, *, key=None, reverse=False)

返回排序后的新列表。

sorted([3, 1, 2])        # [1, 2, 3]

len(s)

返回容器长度。

len("hello")             # 5

breakpoint()

🔹 Python 3.7+
触发调试器(默认调用 pdb.set_trace())。

breakpoint()

import(name, globals=None, locals=None, fromlist=(), level=0)

底层的 import 实现函数。

math = __import__("math")
math.sqrt(16)            # 4.0

总结与建议

  • 内置函数是 Python 最精华的“基础工具库”,不容忽视!
  • 掌握它们,不仅能减少代码量、提升效率,还能避免命名错误和轮子重造。
  • 配合 help() 和实际练习理解其行为细节。
<think>我们正在讨论Python3.12的文件列表及调试文件用途。根据用户需求,需要了解Python3.12安装后的文件结构,特别是与调试相关的文件。首先,Python3.12安装后的目录结构通常包括:-可执行文件(如python,pip)-标准库目录(Lib)-包含头文件的目录(include)-共享库文件(在libs或DLLs目录)-调试文件(如.pdb文件用于Windows,或.dSYM目录用于macOS)在Windows上,调试文件通常以.pdb(程序数据库)文件形式存在,用于存储调试信息。在macOS和Linux上,调试信息可能包含在可执行文件中(通过编译选项)或分离的.dSYM(macOS)或.debug(Linux)文件。在Python3.12中,为了支持更好的性能分析,引入了perf性能分析器支持。这需要调试信息来映射机器码回Python代码。引用[1]中提到Python3.12中perf的原生支持,因此我们需要了解调试文件如何与perf配合使用。具体到文件列表,我们可以通过以下方式查看:1.在Python安装目录下,列出所有文件。2.特别关注调试文件。由于不同操作系统下文件结构不同,我们分别说明:###Windows系统在Windows上,Python安装目录下通常有:-`python.pdb`:主解释器的调试符号文件。-`python312.dll`和`python312.pdb`:核心动态链接库及其调试符号。-其他扩展模块的.pdb文件(如`_ctypes.pdb`等)。###macOS系统在macOS上,调试信息通常包含在.dSYM目录中,例如:-`Python.framework`中包含的Python可执行文件,同时会有对应的.dSYM文件(可能在安装时可选安装)。###Linux系统在Linux上,调试信息可能以.debug文件形式存在(如果使用分离调试信息),或者包含在可执行文件中(如果编译时带有调试信息)。例如,在Ubuntu等系统中,可能需要安装`python3.12-dbg`包来获取调试符号。###调试文件的用途1.**故障诊断**:当程序崩溃时,调试文件可以帮助生成有意义的堆栈跟踪,包括源代码行号。2.**性能分析**:如perf工具,它需要调试信息来将采样事件映射回Python函数。引用[1]中提到的Python3.12对perf的原生支持,使得perf能够直接显示Python函数名(而不仅仅是C函数)。3.**内存分析**:调试信息可以帮助内存分析工具定位内存泄漏的位置。###如何获取调试文件?-在Windows上,官方安装包可能不包含.pdb文件,需要下载独立的调试符号包(如果提供)。-在Linux上,通常通过包管理器安装调试符号包(如`python3.12-dbg`)。-在macOS上,可能需要从官方网站下载专门的调试符号包。###示例:使用调试信息进行性能分析引用[1]中提到了perf支持,我们可以这样使用:```bash#在Linux上perfrecord-g--pythonmy_script.pyperfreport-g```在Python3.12中,由于内置支持,perf报告会显示Python函数名,这需要调试信息的存在。###查看Python安装目录下的文件在Python中,我们可以通过以下代码获取安装路径:```pythonimportsysprint(sys.prefix)```然后可以到该目录下查看文件列表。###总结Python3.12的调试文件对于开发和调试至关重要,特别是在进行性能分析和故障排除时。用户应根据操作系统获取相应的调试符号文件。§§相关问题§§1.如何在Windows上获取Python3.12的调试符号文件?2.在Linux上如何安装Python3.12的调试符号包?3.如何使用Python3.12的perf支持进行性能分析?</think>### Python 3.12 文件列表及调试文件用途详解 #### 一、核心文件结构 Python 3.12 安装目录主要包含以下核心文件(以 Windows 为例,路径类似 `C:\Python312`): 1. **可执行文件**: - `python.exe`:主解释器 - `pythonw.exe`:无控制台窗口的 GUI 版本 - `pip.exe`:包管理工具 2. **标准库目录**: - `Lib\`:包含所有标准库模块(如 `os.py`, `json.py`) - `Lib\site-packages\`:第三方库安装位置 3. **动态链接库**: - `DLLs\`:C 扩展模块(如 `_ctypes.pyd`, `_ssl.pyd`) - `python312.dll`:核心运行时库 4. **配置文件**: - `pyvenv.cfg`:虚拟环境配置 - `python._pth`:路径配置文件 #### 二、调试相关文件 1. **调试符号文件(.pdb)**: - `python.pdb`:主解释器调试符号 - `python312.pdb`:核心 DLL 调试符号 - 各扩展模块的 `.pdb` 文件(如 `_ctypes.pdb`) *用途*:配合调试器(如 WinDbg, VS Debugger)定位崩溃点,解析堆栈跟踪中的内存地址为可读代码位置[^1]。 2. **性能分析文件**: - 通过 `-X perf` 启用的性能数据(Linux/macOS) *用途*:生成 `perf.data` 文件供 `perf` 工具分析函数调用热点和性能瓶颈[^1]。 示例启动命令: ```bash python -X perf -m my_script.py ``` 3. **日志与跟踪文件**: - 使用 `faulthandler` 模块生成的崩溃报告 - `tracemalloc` 模块的内存分配跟踪 *用途*:诊断内存泄漏和异常崩溃。 #### 三、调试文件使用场景 1. **崩溃分析**: ```python # 启用崩溃堆栈捕获 import faulthandler faulthandler.enable() ``` 当程序崩溃时自动输出堆栈信息到 `stderr` 或指定文件。 2. **性能优化**: ```bash # Linux 性能分析流程 perf record -g -F 99 -o perf.data python -X perf app.py perf report -g -i perf.data ``` 可定位到具体 Python 函数调用耗时[^1]。 3. **内存调试**: ```python # 内存分配跟踪 import tracemalloc tracemalloc.start() # ...运行代码... snapshot = tracemalloc.take_snapshot() top_stats = snapshot.statistics('lineno') for stat in top_stats[:10]: print(stat) ``` #### 四、关键调试工具 1. **内置模块**: - `pdb`:交互式调试器 - `cProfile`:性能分析器 - `sys.monitoring`(Python 3.12 新增):低粒度事件监控 2. **外部工具**: - **GDB(Linux)**:配合 `python-gdb.py` 扩展调试 Python - **WinDbg(Windows)**:加载 `.pdb` 文件分析崩溃 Dump - **py-spy**:跨平台采样分析器 > 提示:调试符号文件(.pdb)通常需要从 [Python 官方下载页](https://www.python.org/downloads/) 单独下载符号包。
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值