Python里的内置函数
在 Python 中,内置函数(Built-in Functions) 指的是 Python 解释器自带的、无需额外导入任何任何模块就能直接使用的函数。绝大多数内置函数由 C 语言实现,执行速度远快于用 Python 代码手动编写的同等功能(例如 sum() 比自己写循环求和快很多)。
一、常见内置函数
- 输入输出(
print()、input()) - 类型转换(
int()、str()、list()) - 序列操作(
len()、max()、sorted()) - 迭代处理(
map()、filter()、enumerate()) - 数学计算(
abs()、sum()、round())等
二、如何区分内置函数与其他函数?
- 内置函数:直接调用,如
print()、input()、len()。 - 标准库函数:需要
import对应模块,如import math后使用math.floor()。 - 第三方库函数:需要先安装库(如
pip install requests),再导入使用,如requests.get()。 - 自定义函数:自己用
def定义的函数,如def add(a,b): return a+b。
三、查看所有内置函数:
可以通过 Python 的 builtins 模块查看所有内置函数
import builtins# 打印所有内置函数和变量的名称(返回一个列表)
print(dir(builtins))
# 输出:['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BaseExceptionGroup', 'BlockingIOError', 'BrokenPipeError', 'BufferError', 'BytesWarning', 'ChildProcessError', 'ConnectionAbortedError', 'ConnectionError', 'ConnectionRefusedError', 'ConnectionResetError', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EncodingWarning', 'EnvironmentError', 'Exception', 'ExceptionGroup', 'False', 'FileExistsError', 'FileNotFoundError', 'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning', 'IndentationError', 'IndexError', 'InterruptedError', 'IsADirectoryError', 'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'ModuleNotFoundError', 'NameError', 'None', 'NotADirectoryError', 'NotImplemented', 'NotImplementedError', 'OSError', 'OverflowError', 'PendingDeprecationWarning', 'PermissionError', 'ProcessLookupError', 'PythonFinalizationError', 'RecursionError', 'ReferenceError', 'ResourceWarning', 'RuntimeError', 'RuntimeWarning', 'StopAsyncIteration', 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'TimeoutError', 'True', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning', 'WindowsError', 'ZeroDivisionError', '_IncompleteInputError', '__build_class__', '__debug__', '__doc__', '__import__', '__loader__', '__name__', '__package__', '__spec__', 'abs', 'aiter', 'all', 'anext', 'any', 'ascii', 'bin', 'bool', 'breakpoint', 'bytearray', 'bytes', 'callable', 'chr', 'classmethod', 'compile', 'complex', 'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'exec', 'exit', 'filter', 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'license', 'list', 'locals', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'quit', 'range', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'vars', 'zip']
内置函数详解:
一、数学运算函数
abs sum max min divmod round pow
1. abs(x):返回一个数的绝对值
参数:x - 数值(整数、浮点数) 返回值:x的绝对值
num = -5
print(abs(num)) # 输出5print(abs(3.14)) # 输出3.14
print(abs(-3.14)) # 输出3.142. sum(iterable, start=0):对可迭代对象中的元素求和
参数:
- iterable:可迭代对象(如列表、元组、集合)
- start:求和的起始值(默认为0)
nums = [1, 2, 3, 4]
print(sum(nums)) # 输出10print(sum([1, 2, 3], 10)) # 输出16(10 + 1 + 2 + 3)3. max() 和 min()
功能:分别返回可迭代对象中的最大值和最小值
语法:
- max(iterable, [, key, default]) 或 max(arg1, arg2, args[, key])
min(iterable, *[, key])
参数:
- iterable:可迭代对象
- key:可选,指定一个函数用于比较元素
nums = [1, 2, 3, 4]
print(max(nums)) # 输出4
print(min(nums)) # 输出1# 使用key参数自定义比较规则
words = ["apple", "banana", "cherry"]
print(max(words, key=len)) # 输出"banana"(长度最长)
print(min(words, key=len)) # 输出"apple"(长度最短)max([1, 3, 2]) # 返回 3
max(1, 3, 2) # 返回 3
max([], default=0) # 返回 0,如果可迭代对象为空,返回default4. divmod(a, b)
返回一个包含商和余数的元组
(a // b, a % b)。
divmod(10, 3) # 返回 (3, 1)5.round() - 四舍五入: round(number[, ndigits])
返回四舍五入到小数点后 ndigits 位的数字。如果省略 ndigits,则返回最接近的整数。
print(round(3.14159)) # 输出: 3
print(round(3.14159, 2)) # 输出: 3.14
print(round(3.5)) # 输出: 4
print(round(2.5)) # 输出: 2 (银行家舍入法)6. pow() - 幂运算
pow(base, exp[, mod])
返回 base 的 exp 次幂;如果 mod 存在,则返回 base 的 exp 次幂对 mod 取余。
pow(2, 3) # 8
pow(2, 3, 3) # 2 (因为 8 % 3 = 2)二、数据类型转换函数
1. int(x[, base])
功能:将字符串或数字转换为整数
语法:int(x[, base]) 参数:
- x:字符串或数字
- base:进制(默认10,可选2、8、16等)
print(int("10")) # 输出10
print(int("101", 2)) # 输出5(二进制转十进制)
print(int("0xFF", 16)) # 输出255(十六进制转十进制)
print(int(3.14)) # 输出3(浮点数转整数,截断小数部分)2. float(x)
功能:将字符串或数字转换为浮点数
语法:float(x) 参数:x - 字符串或数字
print(float("10.5")) # 输出10.5
print(float(10)) # 输出10.03. str(object)
功能:将对象转换为字符串
语法:str(object) 参数:object - 任意对象
num = 10
print(str(num)) # 输出"10"print(str(10.5)) # 输出"10.5"
print(str(True)) # 输出"True"
print(str([1, 2, 3])) # 输出"[1, 2, 3]"4. bin(x), hex(x), oct(x)
功能:将整数转换为二进制、十六进制、八进制字符串
语法:
bin(x):返回二进制字符串(前缀0b)hex(x):返回十六进制字符串(前缀0x)oct(x):返回八进制字符串(前缀0o)
print(bin(10)) # 输出'0b1010'
print(hex(10)) # 输出'0xa'
print(oct(10)) # 输出'0o12'5. chr(i), ord(c)
功能:
chr(i):将Unicode码点转换为字符ord(c):将字符转换为Unicode码点
print(chr(65)) # 输出'A'
print(ord('A')) # 输出65print(chr(128512)) # 输出一个表情符号(😊)6.list() - 转换为列表
print(list("hello")) # 输出: ['h', 'e', 'l', 'l', 'o']
print(list((1, 2, 3))) # 输出: [1, 2, 3]
print(list({1, 2, 3})) # 输出: [1, 2, 3]
print(list({"a": 1, "b": 2})) # 输出: ['a', 'b']7. tuple() - 转换为元组
print(tuple([1, 2, 3])) # 输出: (1, 2, 3)
print(tuple("hello")) # 输出: ('h', 'e', 'l', 'l', 'o')8. dict() - 创建字典
print(dict(a=1, b=2)) # 输出: {'a': 1, 'b': 2}
print(dict([('a', 1), ('b', 2)])) # 输出: {'a': 1, 'b': 2}
print(dict(zip(['a', 'b'], [1, 2]))) # 输出: {'a': 1, 'b': 2}9. set() - 创建集合
print(set([1, 2, 2, 3, 3])) # 输出: {1, 2, 3}
print(set("hello")) # 输出: {'h', 'e', 'l', 'o'}10.bool() - 转换为布尔值
# 假值: False, 0, "", None, [], {}, ()
print(bool(0)) # 输出: False
print(bool(1)) # 输出: True
print(bool("")) # 输出: False
print(bool("hello")) # 输出: True
print(bool([])) # 输出: False
print(bool([1, 2])) # 输出: True三、序列操作函数
1. len(s)
功能:返回序列(字符串、列表、元组等)的长度
语法:len(s) 参数:s - 序列对象
s = "hello"
print(len(s)) # 输出5my_list = [1, 2, 3, 4, 5]
print(len(my_list)) # 输出5my_dict = {'a': 1, 'b': 2}
print(len(my_dict)) # 输出2(键值对的数量)2. range(stop) / range(start, stop[, step])
功能:生成一个整数序列,常用于循环
语法:
range(stop):从0开始到stop-1range(start, stop):从start开始到stop-1range(start, stop, step):指定步长
# 生成0-4的序列
for i in range(5):print(i) # 输出0 1 2 3 4# 生成2-5的序列
for i in range(2, 6):print(i) # 输出2 3 4 5# 生成0-8的偶数
for i in range(0, 9, 2):print(i) # 输出0 2 4 6 83. enumerate(iterable, start=0)
功能:将可迭代对象组合为索引序列,同时列出数据和下标
语法:enumerate(iterable, start=0)
fruits = ["apple", "banana", "cherry"]
for i, fruit in enumerate(fruits):print(i, fruit)# 输出:
# 0 apple
# 1 banana
# 2 cherry# 自定义起始索引
for i, fruit in enumerate(fruits, start=1):print(i, fruit)# 输出:
# 1 apple
# 2 banana
# 3 cherry4. sorted(iterable, *, key=None, reverse=False)
功能:对可迭代对象进行排序,返回一个新的已排序列表
语法:sorted(iterable, *, key=None, reverse=False)
nums = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
print(sorted(nums)) # 输出[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]# 降序排列
print(sorted(nums, reverse=True)) # 输出[9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]# 自定义排序规则
class Student:def __init__(self, name, age):self.name = nameself.age = agedef __repr__(self):return f"Student({self.name}, {self.age})"students = [Student("Alice", 20),Student("Bob", 18),Student("Charlie", 22)
]# 按年龄排序
sorted_students = sorted(students, key=lambda x: x.age)
print(sorted_students)
# 输出:[Student(Bob, 18), Student(Alice, 20), Student(Charlie, 22)]四、映射与过滤函数
1. map(function, iterable)
功能:将函数应用到可迭代对象的每个元素上
语法:map(function, iterable)
# 使用普通函数
def square(x):return x * xnums = [1, 2, 3, 4]
squared_nums = list(map(square, nums))
print(squared_nums) # 输出[1, 4, 9, 16]# 使用lambda表达式
squared_nums = list(map(lambda x: x * x, nums))
print(squared_nums) # 输出[1, 4, 9, 16]# 多个列表参数
def add(x, y):return x + yresult = list(map(add, [1, 2, 3], [3, 2, 1]))
print(result) # 输出[4, 4, 4]2. filter(function, iterable)
功能:过滤掉使函数返回False的元素
语法:filter(function, iterable)
# 筛选偶数
def is_even(x):return x % 2 == 0nums = [1, 2, 3, 4, 5, 6]
even_nums = list(filter(is_even, nums))
print(even_nums) # 输出[2, 4, 6]# 使用lambda表达式
even_nums = list(filter(lambda x: x % 2 == 0, nums))
print(even_nums) # 输出[2, 4, 6]# 筛选非空字符串
words = ["apple", "", "banana", "cherry", ""]
non_empty_words = list(filter(None, words))
print(non_empty_words) # 输出['apple', 'banana', 'cherry']五、对象与反射函数
1. type(object)
功能:返回对象的类型
语法:type(object)
print(type(10)) # 输出<class 'int'>
print(type("hello")) # 输出<class 'str'>
print(type([1, 2, 3])) # 输出<class 'list'>2. isinstance(object, classinfo)
功能:检查对象是否是某个类的实例
语法:isinstance(object, classinfo)
print(isinstance(10, int)) # 输出True
print(isinstance("hello", str)) # 输出True
print(isinstance([1, 2, 3], list)) # 输出True# 检查多个类
print(isinstance(10, (int, float))) # 输出True3. dir([object])
功能:返回对象的属性列表
语法:dir([object])
# 查看内置函数列表
print(dir(__builtins__))# 查看字符串对象的属性
print(dir("hello"))# 查看自定义对象的属性
class MyClass:def __init__(self):self.a = 1self.b = 2obj = MyClass()
print(dir(obj))4. getattr(object, name[, default])
功能:获取对象的属性值
语法:getattr(object, name[, default])
class Person:def __init__(self, name, age):self.name = nameself.age = ageperson = Person("Alice", 30)
print(getattr(person, "name")) # 输出"Alice"
print(getattr(person, "age")) # 输出30# 获取不存在的属性,提供默认值
print(getattr(person, "gender", "Unknown")) # 输出"Unknown"5. hasattr(object, name)
功能:检查对象是否包含指定的属性
语法:hasattr(object, name)
class Person:def __init__(self, name, age):self.name = nameself.age = ageperson = Person("Alice", 30)print(hasattr(person, "name")) # 输出True
print(hasattr(person, "gender")) # 输出False六、输入输出函数
1. print(*objects, sep=' ', end='\n')
功能:将指定对象输出到标准输出设备(通常是控制台)
语法:print(*objects, sep=' ', end='\n')
# 基本用法
print("Hello, World!") # 输出:Hello, World!# 多个对象
print("Name:", "Alice", "Age:", 30) # 输出:Name: Alice Age: 30# 自定义分隔符
print("First", "Second", "Third", sep=" | ") # 输出:First | Second | Third# 自定义行尾结束符
print("First line", end=" | ")
print("Second line") # 输出:First line | Second line2. input([prompt])
功能:从标准输入(通常是键盘)读取一行文本
语法:input([prompt])
name = input("请输入您的名字: ")
age = input("请输入您的年龄: ")print(f"您好, {name}! 您输入的年龄是: {age}")
print(f"名字的数据类型: {type(name)}") # 输出: <class 'str'>
print(f"年龄的数据类型: {type(age)}") # 输出: <class 'str'># 如果需要数字,需要后续转换
age_int = int(age)
print(f"转换后的年龄类型: {type(age_int)}") # 输出: <class 'int'>七、其他常用函数
1. all(iterable)
功能:判断所有元素是否都为True
语法:all(iterable)
print(all([True, True, True])) # 输出True
print(all([True, False, True])) # 输出False
print(all([1, 2, 3, 4])) # 输出True(非零值视为True)
print(all(['a', 'b', 'c'])) # 输出True
print(all(['', [], {}])) # 输出False(空值视为False)
print(all([])) # 输出True(空列表视为所有元素都为True)2. any(iterable)
功能:判断是否存在至少一个元素为True
语法:any(iterable)
print(any([True, False, True])) # 输出True
print(any([False, False, False])) # 输出False
print(any([0, 1, 2])) # 输出True(1和2视为True)
print(any(['', 'text', ''])) # 输出True
print(any([])) # 输出False(空列表没有元素为True)3. zip(*iterables)
功能:将多个迭代器压缩为元组序列
语法:zip(*iterables)
names = ["Alice", "Bob", "Charlie"]
ages = [30, 25, 35]
genders = ["F", "M", "M"]combined = list(zip(names, ages, genders))
print(combined)
# 输出:[('Alice', 30, 'F'), ('Bob', 25, 'M'), ('Charlie', 35, 'M')]# 可以用于字典创建
d = dict(zip(names, ages))
print(d) # 输出:{'Alice': 30, 'Bob': 25, 'Charlie': 35}