Python中的内置函数

1 阅读8分钟

Python中的内置函数

内置函数

Python 之所以强大,很大程度上归功于其“自带电池”的理念。内置函数就是这些电池中最核心的一部分,它们无需导入任何模块即可直接使用,覆盖了从基础运算、数据处理到系统交互的方方面面。

Built-in Functions
abs()delattr()hash()memoryview()set()
all()dict()help()min()setattr()
any()dir()hex()next()slice()
ascii()divmod()id()object()sorted()
bin()enumerate()input()oct()staticmethod()
bool()eval()int()open()str()
breakpoint()exec()isinstance()ord()sum()
bytearray()filter()issubclass()pow()super()
bytes()float()iter()print()tuple()
callable()format()len()property()type()
chr()frozenset()list()range()vars()
classmethod()getattr()locals()repr()zip()
compile()globals()map()reversed()__import__()
complex()hasattr()max()round()

数学与运算类

这一类函数主要用于处理数值计算,是科学计算和逻辑判断的基础。

  • abs(x) :返回数字的绝对值。
  • divmod(a, b) :同时返回商和余数,相当于 (a // b, a % b)
  • pow(x, y[, z]) :返回 x 的 y 次方;如果有 z,则返回 (x**y) % z
  • round(number[, ndigits]) :对浮点数进行四舍五入。
  • sum(iterable[, start]) :对序列求和,start参数可以指定起始值。
  • max(iterable) / min(iterable) :获取最大值或最小值,支持传入 key 函数进行自定义比较。
类型转换与构造类

Python 是动态类型语言,类型转换非常频繁。这些函数既是转换工具,也是对象的构造器。

  • int(x, base=10) :将字符串或数字转为整数,支持进制转换(如二进制转十进制)。
  • float(x) :转为浮点数。
  • str(obj) :将对象转为字符串。
  • bool(x) :转为布尔值(0、空序列为 False)。
  • list(), tuple(), set(), dict() :分别用于创建列表、元组、集合和字典。
  • chr(i) / ord(c) :ASCII 码与字符的互转。chr(65) 返回 'A',ord('A') 返回 65。
  • bin(), hex(), oct() :将整数分别转换为二进制、十六进制和八进制字符串。
迭代器与序列处理

处理数据集合时,这些函数能帮你遍历和操作数据。

  • len(s) :获取容器长度。
  • range(start, stop, step) :生成不可变的整数序列。
  • enumerate(iterable) :在循环中同时获取索引和元素值。
  • zip(*iterables) :将多个列表对应位置的元素打包成元组,常用于并行遍历。
  • map(function, iterable) :将函数应用于序列的每个元素。
  • filter(function, iterable) :根据函数返回的 True/False 过滤序列元素。
  • reversed(seq) :返回反向迭代器,不修改原数据。
  • sorted(iterable) :返回排序后的新列表,原数据不变。
  • all(iterable) / any(iterable) :判断序列中是否“全为真”或“有一个为真”。
对象操作与反射

当你需要动态地检查或修改对象属性时,这些函数非常有用。

  • type(obj) :查看对象类型,也可以用来动态创建类。
  • id(obj) :返回对象的内存地址。
  • isinstance(obj, classinfo) :判断对象是否是某个类的实例,比 type() 更推荐,因为它支持继承判断。
  • callable(obj) :判断对象是否可被调用(即是否是函数)。
  • getattr(obj, name) :获取对象的属性值。
  • setattr(obj, name, value) :设置对象的属性值。
  • hasattr(obj, name) :判断对象是否有某个属性。
  • delattr(obj, name) :删除对象的属性。
  • hash(obj) :获取对象的哈希值,用于集合和字典的键。
  • dir(obj) :列出对象的所有属性和方法。
输入输出与系统交互

负责程序与外部环境(用户、文件、系统)的沟通。

  • print(*objects) :打印输出,支持 sep(分隔符)和 end(结尾符)参数。
  • input(prompt) :暂停程序,等待用户输入,始终返回字符串。
  • open(file, mode) :打开文件,返回文件对象,是文件操作的第一步。
  • help(object) :调出内置的帮助文档,相当于查阅说明书。
  • breakpoint() :Python 3.7+ 新增,直接在代码中设置断点进入调试器。
  • globals() / locals() :分别返回当前全局和局部作用域的变量字典。
  • eval(expression) :将字符串当作 Python 表达式执行(注意安全风险)。
  • exec(object) :动态执行 Python 代码块(注意安全风险)。
其他重要函数
  • property() :用于定义属性,可以将方法伪装成属性调用。
  • staticmethod() / classmethod() :定义静态方法和类方法。
  • super() :调用父类的方法,常用于继承场景。
  • object() :所有类的基类。
  • slice() :创建切片对象,用于复杂的切片操作。

关键字

在 Python 的编程世界里,我们每天都在和变量、函数、类打交道。但你是否注意过那些“不能用作变量名”的特殊单词?比如 ifforclassdef

这些就是 Python 关键字(Keywords) ,也被称为保留字。它们是 Python 语言的“基石”,拥有特殊的语法含义,是解释器理解你代码意图的关键。


什么是关键字?

简单来说,关键字就是 Python 内部已经“预定”好的单词。你不能把它们用作变量名、函数名或类名,否则会引发 SyntaxError(语法错误)。

Python 是严格区分大小写的语言,所以 True 是关键字,但 true 就不是;if 是关键字,但 If 就可以作为变量名(虽然不推荐)。

你可以随时通过以下代码查看当前 Python 版本的所有关键字:

import keyword
​
# 打印所有关键字列表
print(keyword.kwlist)
​
# 判断某个字符串是否是关键字
print(keyword.iskeyword("if"))  # 输出: True

Python关键字全景图

截至 Python 3.12,共有 35 个核心关键字。为了让你不再死记硬背,我将它们按功能分成了六类。

类别关键字
逻辑与布尔True, False, None, and, or, not, is, in
流程控制if, elif, else, for, while, break, continue, pass
函数与类def, class, return, yield, lambda, global, nonlocal
异常处理try, except, finally, raise, assert
模块与上下文import, from, as, with, del
异步编程async, await

核心关键字详解

逻辑与布尔

这些关键字用于处理真假值和逻辑关系,是所有条件判断的基础。

  • True / False:代表真和假。注意首字母必须大写。
  • None:代表“空”或“无”,类似于其他语言中的 null
  • and / or / not:逻辑与、或、非。例如 if x > 0 and x < 10:
  • is:用于判断两个变量是否指向同一个内存地址(身份比较),不同于 ==(值比较)。
  • in:用于判断元素是否存在于序列(如列表、字符串)中。

流程控制

没有这些关键字,代码只能从上到下顺序执行,它们赋予了代码“思考”和“循环”的能力。

  • if / elif / else:条件判断的三剑客。Python 没有 switch-case(3.10 之前),全靠它们。
  • for / while:循环结构。for 用于遍历序列,while 用于满足条件时循环。
  • break / continuebreak 用于彻底跳出循环,continue 用于跳过本次循环的剩余代码,直接进入下一次循环。
  • pass:这是一个“占位符”。当你写了一个 if 语句或函数定义,但暂时不想写具体代码时,用 pass 来防止报错。

函数与类

这是 Python 面向对象和函数式编程的核心。

  • def:定义函数的开始。
  • class:定义类的开始。
  • return:从函数中返回值。
  • lambda:用于定义匿名函数(一行函数),常用于 mapfilter 中。
  • yield:用于生成器函数。它会让函数“暂停”并返回一个值,下次调用时从暂停处继续,极大地节省内存。
  • global / nonlocal:用于修改变量的作用域。global 用于修改全局变量, nonlocal 用于修改嵌套函数中的外层变量。

异常处理

程序难免会出错,这些关键字能防止程序直接崩溃。

  • try / except:尝试执行可能出错的代码,如果出错则捕获并处理。
  • finally:无论是否出错,这段代码都会执行(常用于关闭文件、释放资源)。
  • raise:主动引发一个异常。
  • assert:断言。如果条件为 False,则程序立即报错并停止。常用于调试。

模块与上下文:资源管理大师

  • import / from / as:用于导入模块。as可以给模块起别名,比如 import numpy as np
  • with:上下文管理器。最常用于文件操作,它能自动帮你关闭文件,无需手动close()
  • del:删除对象的引用,相当于告诉 Python “我不需要这个变量了”,触发垃圾回收。

异步编程:现代高并发利器

  • async / await:用于编写并发代码。async 定义一个协程,await 用于等待一个异步操作完成,让程序在等待时可以去处理其他任务。

软关键字与特殊标识符

除了上述 35 个硬性规定的关键字,Python 3.10 引入了结构化模式匹配,带来了几个“软关键字”:matchcase_(通配符)。

它们被称为“软”关键字,是因为它们只在特定的语法结构(match 语句)中才具有特殊含义,在其他地方你仍然可以将它们用作变量名(虽然极度不推荐这样做,以免混淆)。

此外,还有一些特殊的标识符命名规则,虽然不是关键字,但也需要留意:

  • _var:以单下划线开头的变量,约定俗成地表示“私有”或“内部使用”。
  • __var__ :以双下划线开头和结尾的变量(如__init__),由系统定义,切勿随意命名。

总结

Python 的内置函数是其简洁与强大的基石,在使用它们时,了解其背后的行为模式和潜在风险,能帮助你写出更健壮、更高效的代码。

关键字是 Python 语法的“骨架”。初学者不需要一次性背下所有关键字,但需要知道它们的存在和分类。特别需要注意的是:永远不要用关键字做变量名

而且该部分介绍较为详细全面,我们实际编程中可能有很多关键字或者内置函数是不常见甚至使用不到,需要开发过程中灵活掌握使用上述内容。