欢迎光临
我们一直在努力

Python 3.12 内置函数全图鉴:71 个“官方外挂”详解


系列文章目录

文章目录

  • 系列文章目录
  • 前言
  • 一、数学与数字运算 (7个)
      • 1. `abs(x)`
      • 2. `divmod(a, b)`
      • 3. `max(iterable)`
      • 4. `min(iterable)`
      • 5. `pow(base, exp, mod=None)`
      • 6. `round(number, ndigits=None)`
      • 7. `sum(iterable, start=0)`
  • 二、数据类型转换与创建 (20个)
      • 8. `bool(x)`
      • 9. `int(x)`
      • 10. `float(x)`
      • 11. `complex(real, imag=0)`
      • 12. `str(object='')`
      • 13. `list(iterable)`
      • 14. `tuple(iterable)`
      • 15. `dict(**kwarg)`
      • 16. `set(iterable)`
      • 17. `frozenset(iterable)`
      • 18. `bytes(source)`
      • 19. `bytearray(source)`
      • 20. `memoryview(obj)`
      • 21. `bin(x)`
      • 22. `oct(x)`
      • 23. `hex(x)`
      • 24. `chr(i)`
      • 25. `ord(c)`
      • 26. `ascii(object)`
      • 27. `repr(object)`
  • 三、逻辑检查与反射 (15个)
      • 28. `all(iterable)`
      • 29. `any(iterable)`
      • 30. `callable(object)`
      • 31. `isinstance(object, classinfo)`
      • 32. `issubclass(class, classinfo)`
      • 33. `type(object)`
      • 34. `len(s)`
      • 35. `id(object)`
      • 36. `hash(object)`
      • 37. `dir(object)`
      • 38. `vars(object)`
      • 39. `hasattr(object, name)`
      • 40. `getattr(object, name)`
      • 41. `setattr(object, name, value)`
      • 42. `delattr(object, name)`
  • 四、迭代与循环 (12个)
      • 43. `range(start, stop, step)`
      • 44. `enumerate(iterable, start=0)`
      • 45. `zip(*iterables)`
      • 46. `filter(function, iterable)`
      • 47. `map(function, iterable)`
      • 48. `sorted(iterable)`
      • 49. `reversed(seq)`
      • 50. `iter(object)`
      • 51. `next(iterator)`
      • 52. `slice(start, stop, step)`
      • 53. `aiter(async_iterable)`
      • 54. `anext(async_iterator)`
  • 五、类、编译与底层 (7个)
      • 55. `property(fget=None, …)`
      • 56. `classmethod(function)`
      • 57. `staticmethod(function)`
      • 58. `super()`
      • 59. `object()`
      • 60. `compile(source, …)`
      • 61. `__import__(name)`
  • 六、输入输出与系统环境 (10个)
      • 62. `input(prompt)`
      • 63. `print(*objects)`
      • 64. `open(file, mode)`
      • 65. `help(object)`
      • 66. `breakpoint()`
      • 67. `globals()`
      • 68. `locals()`
      • 69. `format(value, format_spec)`
      • 70. `eval(expression)`
      • 71. `exec(object)`
  • 总结

前言

Python 的强大之处在于它自带了丰富的工具箱。截至 Python 3.12 版本,官方提供了 71 个内置函数。这些函数无需 import 任何模块即可直接使用。

为了方便查阅和记忆,本文将这 71 个函数按功能分类,并对每一个函数进行了详细拆解:既有严肃的官方定义,也有通俗易懂的“人话”解释,更附带了直接能跑的代码样例。


一、数学与数字运算 (7个)

这组函数负责处理数值,绝对理性,没有感情。

1. abs(x)

  • 📖 官方:返回一个数的绝对值。
  • 🗣️ 人话:去油腻。不管正负,出来全是正能量。
  • 💻 代码:abs(-10) # 10

2. divmod(a, b)

  • 📖 官方:将两个数作为参数,返回一对商和余数。
  • 🗣️ 人话:小学除法。买10个苹果分给3个人,每人几个?剩几个?一次搞定。
  • 💻 代码:divmod(10, 3) # (3, 1)

3. max(iterable)

  • 📖 官方:返回可迭代对象中的最大项,或两个及以上实参中最大的。
  • 🗣️ 人话:卷王。在一堆数里找老大。
  • 💻 代码:max([1, 99, 2]) # 99

4. min(iterable)

  • 📖 官方:返回可迭代对象中的最小项,或两个及以上实参中最小的。
  • 🗣️ 人话:潜水王。在一堆数里找老幺。
  • 💻 代码:min([1, 99, 2]) # 1

5. pow(base, exp, mod=None)

  • 📖 官方:返回 base 的 exp 次幂;如果 mod 存在,则对 mod 取余。
  • 🗣️ 人话:指数爆炸。算次方的。第三个参数常用于加密算法(大数取模)。
  • 💻 代码:pow(2, 3) # 8

6. round(number, ndigits=None)

  • 📖 官方:返回 number 舍入到小数点后 ndigits 位精度的值。
  • 🗣️ 人话:银行家舍入。注意 Python 3 是“奇进偶不进”(四舍六入五取偶)。
  • 💻 代码:round(2.5) # 2

7. sum(iterable, start=0)

  • 📖 官方:从 start 开始自左向右对 iterable 的项求和并返回总计值。
  • 🗣️ 人话:购物车结算。把列表里的数字加起来。
  • 💻 代码:sum([1, 2, 3]) # 6

二、数据类型转换与创建 (20个)

负责把对象从一种形态变成另一种形态,俗称“投胎”。

8. bool(x)

  • 📖 官方:返回一个布尔值,即 True 或 False。
  • 🗣️ 人话:测谎仪。只有 0、None、空容器是 False,其余全是 True。
  • 💻 代码:bool([]) # False

9. int(x)

  • 📖 官方:根据一个数字或字符串返回一个整数对象。
  • 🗣️ 人话:取整。直接砍掉小数部分,不讲四舍五入。
  • 💻 代码:int(3.99) # 3

10. float(x)

  • 📖 官方:返回从数字或字符串生成的浮点数。
  • 🗣️ 人话:变小数。加上小数点,身价立马精确了。
  • 💻 代码:float(3) # 3.0

11. complex(real, imag=0)

  • 📖 官方:返回值为 real + imag*1j 的复数。
  • 🗣️ 人话:变复数。实部+虚部,工科生的噩梦。
  • 💻 代码:complex(1, 2) # (1+2j)

12. str(object='')

  • 📖 官方:返回 object 的字符串版本。
  • 🗣️ 人话:文本化。万物皆可文本化。
  • 💻 代码:str(123) # "123"

13. list(iterable)

  • 📖 官方:实际上 list 是一种可变序列类型。
  • 🗣️ 人话:装袋子。把能遍历的东西都装进一个列表里。
  • 💻 代码:list("Hi") # ['H', 'i']

14. tuple(iterable)

  • 📖 官方:实际上 tuple 是一种不可变序列类型。
  • 🗣️ 人话:塑封袋。装进去就拿不出来、改不了的列表。
  • 💻 代码:tuple([1, 2]) # (1, 2)

15. dict(**kwarg)

  • 📖 官方:创建一个新的字典。
  • 🗣️ 人话:查字典。创建键值对映射。
  • 💻 代码:dict(a=1) # {'a': 1}

16. set(iterable)

  • 📖 官方:返回一个新的 set 对象。
  • 🗣️ 人话:去重机。丢进去一堆重复的,出来只剩独一无二的。
  • 💻 代码:set([1, 2, 2]) # {1, 2}

17. frozenset(iterable)

  • 📖 官方:返回一个新的 frozenset 对象。
  • 🗣️ 人话:冻结集合。不能修改的集合,可以当字典的 key。
  • 💻 代码:frozenset([1, 2])

18. bytes(source)

  • 📖 官方:返回一个新的“bytes”对象, 是一个不可变序列。
  • 🗣️ 人话:机器粮。给计算机看的二进制数据,不可变。
  • 💻 代码:bytes([65]) # b'A'

19. bytearray(source)

  • 📖 官方:返回一个新的 bytes 数组,可变序列。
  • 🗣️ 人话:橡皮泥。可以修改的二进制数据。
  • 💻 代码:bytearray(b"Hi")

20. memoryview(obj)

  • 📖 官方:返回由给定实参创建的“内存视图”对象。
  • 🗣️ 人话:透视眼。不复制数据直接看内存,处理大文件神器。
  • 💻 代码:v = memoryview(b'abc')

21. bin(x)

  • 📖 官方:将一个整数转变为一个前缀为“0b”的二进制字符串。
  • 🗣️ 人话:变二进制。
  • 💻 代码:bin(3) # '0b11'

22. oct(x)

  • 📖 官方:将一个整数转变为一个前缀为“0o”的八进制字符串。
  • 🗣️ 人话:变八进制。
  • 💻 代码:oct(8) # '0o10'

23. hex(x)

  • 📖 官方:将整数转换为以“0x”为前缀的小写十六进制字符串。
  • 🗣️ 人话:变十六进制。
  • 💻 代码:hex(255) # '0xff'

24. chr(i)

  • 📖 官方:返回 Unicode 码位为整数 i 的字符。
  • 🗣️ 人话:数字转字符。查表 97 对应 ‘a’。
  • 💻 代码:chr(97) # 'a'

25. ord(c)

  • 📖 官方:对表示单个 Unicode 字符的字符串,返回其整数码点。
  • 🗣️ 人话:字符转数字。
  • 💻 代码:ord('a') # 97

26. ascii(object)

  • 📖 官方:返回一个对象可打印的字符串,非 ASCII 字符会转义。
  • 🗣️ 人话:去汉字化。中文会变成 \\u 乱码。
  • 💻 代码:ascii('你好') # '\\u4f60\\u597d'

27. repr(object)

  • 📖 官方:返回包含一个对象的可打印表示形式的字符串。
  • 🗣️ 人话:卸妆水。给开发者看的原始字符串,通常带引号。
  • 💻 代码:repr("1") # "'1'"

三、逻辑检查与反射 (15个)

最喜欢打听“你是谁?”“你有什么?”“你行不行?”

28. all(iterable)

  • 📖 官方:如果 iterable 的所有元素为真,返回 True。
  • 🗣️ 人话:全票通过。全是 True 才是 True。
  • 💻 代码:all([True, 1]) # True

29. any(iterable)

  • 📖 官方:如果 iterable 的任一元素为真则返回 True。
  • 🗣️ 人话:滥竽充数。只要有一个是 True,结果就是 True。
  • 💻 代码:any([0, 1]) # True

30. callable(object)

  • 📖 官方:如果参数 object 是可调用的,返回 True。
  • 🗣️ 人话:能喊吗。屁股后面能不能加括号 () 运行它?
  • 💻 代码:callable(print) # True

31. isinstance(object, classinfo)

  • 📖 官方:如果参数 object 是参数 classinfo 的实例,返回 True。
  • 🗣️ 人话:查户口。判断你是不是某种类型。
  • 💻 代码:isinstance(5, int) # True

32. issubclass(class, classinfo)

  • 📖 官方:如果 class 是 classinfo 的子类,返回 True。
  • 🗣️ 人话:查祖宗。判断一个类是不是另一个类的后代。
  • 💻 代码:issubclass(bool, int) # True

33. type(object)

  • 📖 官方:返回 object 的类型。
  • 🗣️ 人话:照妖镜。看你到底是个什么东西。
  • 💻 代码:type([]) # <class 'list'>

34. len(s)

  • 📖 官方:返回对象的长度(元素个数)。
  • 🗣️ 人话:量尺。量量你有多少货。
  • 💻 代码:len("Hi") # 2

35. id(object)

  • 📖 官方:返回对象的“标识值”,通常是内存地址。
  • 🗣️ 人话:身份证号。
  • 💻 代码:id(x)

36. hash(object)

  • 📖 官方:返回该对象的哈希值(如果它有的话)。
  • 🗣️ 人话:数字指纹。用于字典快速查找。
  • 💻 代码:hash("hi")

37. dir(object)

  • 📖 官方:返回该对象的有效属性列表。
  • 🗣️ 人话:扒皮。看看这个对象肚子里都有啥属性和方法。
  • 💻 代码:dir(str)

38. vars(object)

  • 📖 官方:返回对象的 __dict__ 属性。
  • 🗣️ 人话:偷看日记。把对象的属性以字典形式显示出来。
  • 💻 代码:vars(obj)

39. hasattr(object, name)

  • 📖 官方:如果字符串是对象的属性之一的名称,则返回 True。
  • 🗣️ 人话:你有吗。
  • 💻 代码:hasattr(str, 'upper') # True

40. getattr(object, name)

  • 📖 官方:返回对象命名属性的值。
  • 🗣️ 人话:给我拿。动态获取属性值。
  • 💻 代码:getattr(obj, 'x')

41. setattr(object, name, value)

  • 📖 官方:设置属性值。
  • 🗣️ 人话:给你塞。动态给对象增加或修改属性。
  • 💻 代码:setattr(obj, 'x', 10)

42. delattr(object, name)

  • 📖 官方:删除该属性。
  • 🗣️ 人话:给你扔。动态删除属性。
  • 💻 代码:delattr(obj, 'x')

四、迭代与循环 (12个)

让你的 for 循环骚操作满天飞。

43. range(start, stop, step)

  • 📖 官方:实际上是一个不可变的序列类型。
  • 🗣️ 人话:造数机。生成一串数字序列,循环最爱。
  • 💻 代码:list(range(3)) # [0, 1, 2]

44. enumerate(iterable, start=0)

  • 📖 官方:返回一个枚举对象。
  • 🗣️ 人话:带号上岗。遍历时顺便给你标上序号。
  • 💻 代码:list(enumerate(['a'])) # [(0, 'a')]

45. zip(*iterables)

  • 📖 官方:在多个迭代器上并行迭代,返回元组。
  • 🗣️ 人话:拉链。把两个列表对应位置缝在一起。
  • 💻 代码:list(zip([1], ['a'])) # [(1, 'a')]

46. filter(function, iterable)

  • 📖 官方:用函数返回真的那些元素构建迭代器。
  • 🗣️ 人话:筛子。只保留满足条件的。
  • 💻 代码:list(filter(bool, [0, 1])) # [1]

47. map(function, iterable)

  • 📖 官方:将函数应用于每一项并输出其结果。
  • 🗣️ 人话:批量加工厂。给列表里每个元素都来一刀。
  • 💻 代码:list(map(str, [1, 2])) # ['1', '2']

48. sorted(iterable)

  • 📖 官方:根据项返回一个新的已排序列表。
  • 🗣️ 人话:整理狂。返回一个排好序的新列表。
  • 💻 代码:sorted([2, 1]) # [1, 2]

49. reversed(seq)

  • 📖 官方:返回一个反向的迭代器。
  • 🗣️ 人话:倒带。倒着读。
  • 💻 代码:list(reversed([1, 2])) # [2, 1]

50. iter(object)

  • 📖 官方:返回一个迭代器对象。
  • 🗣️ 人话:手动挡。把列表变成迭代器。
  • 💻 代码:it = iter([1, 2])

51. next(iterator)

  • 📖 官方:从迭代器中获取下一项。
  • 🗣️ 人话:挤牙膏。挤一下出一个,没货了报错。
  • 💻 代码:next(it)

52. slice(start, stop, step)

  • 📖 官方:返回一个切片对象。
  • 🗣️ 人话:手术刀。把 [0:5] 这种切片操作存成变量。
  • 💻 代码:s = slice(0, 1)

53. aiter(async_iterable)

  • 📖 官方:返回异步迭代器。
  • 🗣️ 人话:异步手动挡。给 async for 用的底层工具。
  • 💻 代码:aiter(obj)

54. anext(async_iterator)

  • 📖 官方:从异步迭代器返回下一项。
  • 🗣️ 人话:异步挤牙膏。
  • 💻 代码:await anext(it)

五、类、编译与底层 (7个)

进阶玩法的基石,新手慎用。

55. property(fget=None, …)

  • 📖 官方:返回一个 property 属性。
  • 🗣️ 人话:伪装者。把方法伪装成属性,调用时不用加括号。
  • 💻 代码:@property

56. classmethod(function)

  • 📖 官方:把一个方法封装成类方法。
  • 🗣️ 人话:班干部。绑定到类而不是实例。
  • 💻 代码:@classmethod

57. staticmethod(function)

  • 📖 官方:将方法转换为静态方法。
  • 🗣️ 人话:房客。寄宿在类里的普通函数,跟类没啥深层关系。
  • 💻 代码:@staticmethod

58. super()

  • 📖 官方:返回一个代理对象,将调用委托给父类。
  • 🗣️ 人话:找爸爸。调用父类的方法。
  • 💻 代码:super().__init__()

59. object()

  • 📖 官方:返回一个不带特征的新对象,所有类的基类。
  • 🗣️ 人话:亚当。Python 所有对象的祖宗。
  • 💻 代码:o = object()

60. compile(source, …)

  • 📖 官方:将源字符串编译成代码或 AST 对象。
  • 🗣️ 人话:翻译官。把字符串代码编译成字节码。
  • 💻 代码:compile("print(1)", "", "exec")

61. __import__(name)

  • 📖 官方:此函数会由 import 语句发起调用。
  • 🗣️ 人话:底层召唤术。import 背后的真身,一般人用不到。
  • 💻 代码:__import__('os')

六、输入输出与系统环境 (10个)

负责和用户、文件系统、解释器环境聊天。

62. input(prompt)

  • 📖 官方:从输入中读取一行。
  • 🗣️ 人话:要饭。程序暂停,伸手管用户要输入。
  • 💻 代码:name = input("Who?")

63. print(*objects)

  • 📖 官方:将 objects 打印到文本流。
  • 🗣️ 人话:大喇叭。新手唯一的调试工具。
  • 💻 代码:print("Hello")

64. open(file, mode)

  • 📖 官方:打开文件并返回 file object。
  • 🗣️ 人话:开门。操作文件。
  • 💻 代码:f = open('t.txt', 'r')

65. help(object)

  • 📖 官方:启动内置的帮助系统。
  • 🗣️ 人话:救命。弹出官方文档。
  • 💻 代码:help(list)

66. breakpoint()

  • 📖 官方:此函数会在调用点进入调试器。
  • 🗣️ 人话:暂停键。代码跑到这会自动卡住,进入调试模式。
  • 💻 代码:breakpoint()

67. globals()

  • 📖 官方:返回实现当前模块命名空间的字典。
  • 🗣️ 人话:全局大查房。看看全局变量有哪些。
  • 💻 代码:globals()

68. locals()

  • 📖 官方:返回表示当前本地符号表的字典。
  • 🗣️ 人话:局部小查房。看看当前函数里有哪些变量。
  • 💻 代码:locals()

69. format(value, format_spec)

  • 📖 官方:将 value 转换为“格式化后”的表示形式。
  • 🗣️ 人话:美颜相机。保留几位小数?左对齐还是右对齐?
  • 💻 代码:format(3.14, '.1f') # '3.1'

70. eval(expression)

  • 📖 官方:对 expression 参数进行求值。
  • 🗣️ 人话:计算器。把字符串当成一行代码算出来。危险!
  • 💻 代码:eval("1+1") # 2

71. exec(object)

  • 📖 官方:此函数支持动态执行 Python 代码。
  • 🗣️ 人话:执行官。比 eval 更狠,能运行一整段代码。极度危险!
  • 💻 代码:exec("print('Hi')")

总结

以上就是 Python 3.12 的 71 个内置函数 全图鉴。熟练使用这些“官方外挂”,能让你的代码从几十行缩减为一行,既优雅又高效。建议收藏本文,作为日常开发的速查字典! 本章有误,请指正,Thanks♪(・ω・)ノ

赞(0)
未经允许不得转载:171主机测评 » Python 3.12 内置函数全图鉴:71 个“官方外挂”详解
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址