Python-内置函数
Python-内置函数
- 前言
- 一、数据类型转换
- 1.1 隐式类型转换(自动转换)
- 1.2 显式类型转换(强制转换)
- 1.2.1 数值类型转换
- 1.2.2 序列类型转换
- 1.2.3 字符串与字节转换
- 1.2.4 特殊字符转换
- 1.2.5 其他类型转换
- 二、数学运算
- 2.1 运算符
- 2.1.1 算术运算符
- 2.1.2 赋值运算符
- 2.1.3 比较运算符
- 2.1.4 位运算符
- 2.1.5 逻辑运算符
- 2.2 内置数学函数
- 三、序列操作
- 3.1 通用序列操作
- 3.1.1 索引访问
- 3.1.2 切片操作
- 3.1.3 序列运算
- 3.1.4 长度、最值与计算
- 3.2 可变序列操作
- 3.2.1 元素修改
- 3.2.2 列表特别方法
- 3.3 不可变序列操作
- 3.3.1 字符串特有方法
- 3.3.2 元组特有操作
- 3.4 序列转换与生成
- 四、文件与输入输出
- 4.1 文件操作
- 4.1.1 文件打开与关闭
- 4.1.2 文件读取写入方法
- 4.1.3 文件指针操作
- 4.1.4 异常处理
- 4.2.标准输入输出
- 4.2.1 标准输出(打印)
- 4.2.2 标准输入(读取用户输入)
- 五、类型检查与帮助
- 总结
前言
Python 的内置函数是直接可用的工具,无需导入任何模块。它们覆盖了基础数据类型转换、数学运算、文件操作、迭代器处理等核心功能
一、数据类型转换
1.1 隐式类型转换(自动转换)
Python 会自动转换某些类型,无需手动干预
# 整数 + 浮点数 → 浮点数
result = 5 + 3.2 # 8.2(整数 5 被自动转为浮点数)# 布尔值 + 整数 → 整数
result = True + 10 # 11(True 被转为 1)
1.2 显式类型转换(强制转换)
1.2.1 数值类型转换
函数 | 功能 | 示例 |
---|---|---|
int(x) | 将 x 转换为整数 | int(3.14) → 3 int(“123”) → 123 int(“0b101”, 2) → 5(二进制转十进制) |
float(x) | 将 x 转换为浮点数 | float(5) → 5.0 float(“3.14”) → 3.14 |
complex(real[, imag]) | 创建复数 | complex(3, 2) → (3+2j) |
bin(i) | 整数 → 二进制字符串 | bin(5) → ‘0b101’ |
oct(i) | 整数 → 八进制字符串 | oct(8) → ‘0o10’ |
hex(i) | 整数 → 十六进制字符串 | hex(255) → ‘0xff’ |
int(s, base) | 字符串 → 指定进制的整数 | int(“101”, 2) → 5(二进制 int(“FF”, 16) → 255(十六进制) |
1.2.2 序列类型转换
函数 | 功能 | 示例 |
---|---|---|
list(x) | 将 x 转换为列表 | list(“abc”) → [‘a’, ‘b’, ‘c’] list((1, 2)) → [1, 2] |
tuple(x) | 将 x 转换为元组 | tuple([1, 2]) → (1, 2) tuple(“abc”) → (‘a’, ‘b’, ‘c’) |
set(x) | 将 x 转换为集合 | set([1, 1, 2]) → {1, 2}(去重) set(“hello”) → {‘h’, ‘e’, ‘l’, ‘o’} |
frozenset(x) | 将 x 转换为不可变集合 | frozenset([1, 2]) → frozenset({1, 2}) |
1.2.3 字符串与字节转换
函数 | 功能 | 示例 |
---|---|---|
str(x) | 将 x 转换为字符串 | str(123) → “123” str([1, 2]) → “[1, 2]” |
bytes(x[, encoding[, errors]]) | 将 x 转换为字节对象 | bytes(“hello”, “utf-8”) → b’hello’ bytes([65, 66]) → b’AB’ |
bytearray(x[, encoding[, errors]]) | 将 x 转换为可变字节数组 | bytearray(b"abc") → bytearray(b’abc’) |
1.2.4 特殊字符转换
函数 | 功能 | 示例 |
---|---|---|
ord(c) | 字符 → Unicode 码点(整数) | ord(‘A’) → 65 ord(‘中’) → 20013 |
chr(i) | Unicode 码点 → 字符 | chr(65) → ‘A’ chr(20013) → ‘中’ |
ascii(object) | 返回对象的 ASCII 表示(非 ASCII 字符会被转义) | ascii(“你好”) → “‘\u4f60\u597d’” |
1.2.5 其他类型转换
函数 | 功能 | 示例 |
---|---|---|
bool(x) | 将 x 转换为布尔值 | bool(0) → False bool(“”) → False bool([]) → False bool(None) → False bool(1) → True |
dict(x) | 将 x 转换为字典 | dict([(‘a’, 1)]) → {‘a’: 1} dict(a=1, b=2) → {‘a’: 1, ‘b’: 2} |
二、数学运算
2.1 运算符
2.1.1 算术运算符
算术运算符 | 功能 | 示例 |
---|---|---|
+ | 加法 | 5 + 3 → 8 |
- | 减法 | 5 - 3 → 2 |
* | 乘法 | 5 * 3 → 15 |
/ | 除法(返回浮点数) | 5 / 2 → 2.5 |
// | 整除(向下取整) | 5 // 2 → 2 -5 // 2 → -3 |
% | 取余 | 5 % 2 → 1 |
** | 幂运算 | 2 ** 3 → 8 |
2.1.2 赋值运算符
用于将值赋给变量,或在赋值的同时进行运算
- =
- += a += b => a = a + b
- -=
- *=
- /=
- %=
2.1.3 比较运算符
用于比较两个值的关系,返回布尔值(True 或 False)
通常出现在if表达式,while表达式
- ==
- !=
- >
- <
- <=
- >=
2.1.4 位运算符
运算符 | 名称 | 功能 | 示例(以 a=60(二进制 0011 1100)和 b=13(二进制 0000 1101)为例) |
---|---|---|---|
& | 按位与 | 对应位都为 1 时,结果位为 1,否则为 0 | a & b = 0000 1100(十进制 12) |
| | 按位或 | 对应位只要有一个为 1,结果位为 1,否则为 0 | a | b = 0011 1101(十进制 61) |
^ | 按位异或 | 对应位不同时为 1,相同时为 0 | a ^ b = 0011 0001(十进制 49) |
~ | 按位取反 | 对二进制位取反(0 变 1,1 变 0),结果为补码表示的整数(需注意符号位) | ~a = -61(二进制补码为 1100 0011,十进制 -61) |
<< | 左移 | 左移 n 位,低位补 0,高位丢弃。相当于乘以 (2n)。 | a << 2 = 240(二进制 1111 0000,相当于 60 × 22) |
>> | 右移 | 右移 n 位,高位补符号位(保持正负号不变),低位丢弃。相当于除以 (2n) 取整 | a >> 2 = 15(二进制 0000 1115,相当于 60 ÷ 4 = 15) |
2.1.5 逻辑运算符
- and(逻辑与)
- or(逻辑或)
- not(逻辑非)
and, or从左往右运算
and 仅当两个条件为真,结果为真
# 如果第一个表达式为假,返回该表达式的值 =>False
# 如果第一个表达式为真,继续向后运算
# 返回最后计算的表达式的值
print(4 and 3) # 3
print(0.0 and 3) # 0.0
print(4 and 0.0 and 5) # 0.0
or 任意一个表达式为真,结果为真
# 如果第一个表达式为真,返回表达式的值 =>True
# 如果第一个表达式为假,继续往后运算
print(4 or 3) # 4
print(0.0 or 3) # 3
print(None or 0.0 or 5 or 6) # 5
not 取反,返回值只有两种状态 True/False
print(not 4) # False
print(not 0.0) # True
2.2 内置数学函数
函数 | 功能 | 示例 |
---|---|---|
abs(x) | 返回 x 的绝对值 | abs(-5) → 5 |
round(x[, n]) | 四舍五入到 n 位小数(默认 0) | round(3.1415, 2) → 3.14 round(2.5) → 2(Python 3 中,偶数优先) |
max(iterable) | 返回可迭代对象中的最大值 | max([1, 3, 2]) → 3 |
min(iterable) | 返回可迭代对象中的最小值 | min([1, 3, 2]) → 1 |
sum(iterable[, start]) | 计算可迭代对象的总和(可选起始值) | sum([1, 2, 3]) → 6 sum([1, 2], 10) → 13 |
pow(x, y[, z]) | 返回 x 的 y 次幂(模 z 可选) | pow(2, 3) → 8 pow(2, 3, 3) → 2(等价于 2**3 % 3) |
divmod(a, b) | 返回商和余数的元组 | divmod(10, 3) → (3, 1) |
三、序列操作
- 可变序列:列表 、字节数组
- 不可变序列:字符串 、元组 、字节
3.1 通用序列操作
3.1.1 索引访问
# s[i] 获取索引 i 处的元素(索引从 0 开始)
print("hello"[0]) # h
#s[-i] 获取倒数第 i 个元素
print("hello"[-1]) # o
3.1.2 切片操作
# s[start:end] 获取从 start 到 end-1 的子序列
print("hello"[1:3]) # el
# s[start:end:step] 带步长的切片(步长可为负,默认为1)
print("hello"[::2]) # hlo
# s[::-1] 反转序列
print("hello"[::-1]) # olleh
3.1.3 序列运算
# s + t 连接两个序列
print([1, 2] + [3]) # [1, 2, 3]
# s * n 重复序列 n 次
print([1] * 3) # [1, 1, 1]
# x in s 判断元素 x 是否在序列 s 中
print('a' in "abc") # True
# x not in s 判断元素 x 是否不在序列 s 中
print('x' not in "abc") # True
3.1.4 长度、最值与计算
print(len("hello")) # 5
print(min([3, 1, 2])) # 1
print(max([3, 1, 2])) # 3
print("hello".count('l')) # 2
print("hello".index('l')) # 2
3.2 可变序列操作
可变序列支持修改、删除元素
3.2.1 元素修改
lst = [1, 2, 3];
# s[i] = x 修改索引 i 处的元素
lst[0] = 10
print(lst) # [10, 2, 3]# s[i:j] = t 替换切片 [i:j] 为序列 t
lst[1:2] = [4, 5]
print(lst) # [10, 4, 5, 3]# del s[i] 删除索引 i 处的元素
del lst[0]
print(lst) # [4, 5, 3]# del s[i:j] 删除切片 [i:j]
del lst[1:2]
print(lst) # [4, 3]
3.2.2 列表特别方法
方法 | 功能 | 示例 |
---|---|---|
s.append(x) | 在末尾添加元素 x | lst.append(4) → [4, 3, 4] |
s.extend(t) | 扩展列表(添加序列 t 的所有元素) | lst.extend([5, 6]) → [4, 3, 4, 5, 6] |
s.insert(i, x) | 在索引 i 处插入元素 x | lst.insert(0, 0) → [0, 4, 3, 4, 5, 6] |
s.remove(x) | 删除第一个值为 x 的元素 | lst.remove(4) → [0, 3, 4, 5, 6] |
s.pop([i]) | 删除并返回索引 i 处的元素(默认最后一个) | lst.pop() → 6 |
s.reverse() | 反转列表(原地修改) | lst.reverse() → [5, 4, 3, 0] |
s.sort(key=None, reverse=False) | 排序(原地修改) | lst.sort() → [0, 3, 4, 5] |
s.clear() | 清空列表 | lst.clear() → [] |
3.3 不可变序列操作
不可变序列不支持修改元素,但支持查询和切片
3.3.1 字符串特有方法
# s.split(sep=None) 按分隔符分割字符串
print("a,b,c".split(",")) # ['a', 'b', 'c']#s.join(iterable) 用字符串连接序列中的元素
print(",".join(["a", "b"])) # a,b# s.strip([chars]) 移除字符串两端的指定字符(默认空格)
print(" hello ".strip()) # hello# s.replace(old, new[, count]) 替换字符串中的子串
print("hello".replace("l", "L", 1)) # heLlo# s.startswith(prefix) 判断字符串是否以 prefix 开头
print("hello".startswith("he")) # True# s.endswith(suffix) 判断字符串是否以 suffix 结尾
print("hello".endswith("lo")) # True
更多方法见:Python-字符串常用方法
3.3.2 元组特有操作
# 元组通常用于不可变数据集合,如函数返回多值:
a, b = (1, 2) # 元组解包
x, y = y, x # 交换变量(本质是元组操作)
3.4 序列转换与生成
# list(s),tuple(s),str(x)
print(list("abc")) # ['a', 'b', 'c']
print(tuple([1, 2])) # (1, 2)
print(str([1, 2])) # "[1, 2]"# range(start, stop[, step]) 生成整数序列
list(range(0, 5, 2)) # [0, 2, 4]
四、文件与输入输出
文件操作和输入输出(I/O)是处理外部数据的基础功能
4.1 文件操作
4.1.1 文件打开与关闭
-
with open(‘file’, ‘r’, encoding=‘utf-8’) as f:
# 打开文件并自动关闭(推荐写法) -
open(‘file’, mode=‘r’, encoding=‘utf-8’)
f.close() # 需手动关闭
- file:文件路径(绝对或相对)
- 绝对路径:从根目录开始的完整路径(如 C:\Users\file.txt 或 /home/user/file.txt)。
- 相对路径:相对于当前工作目录的路径(如 ./data/file.txt)
- mode:打开模式(默认 ‘r’,即只读)
- 常用模式
‘r’ 只读(默认)
‘w’ 写入(覆盖原文件)
‘a’ 追加(在文件末尾添加)
‘x’ 创建新文件,若已存在则报错
‘b’ 二进制模式
‘+’ 读写模式
- 常用模式
- encoding:编码格式(默认系统编码,推荐显式指定如 ‘utf-8’)
4.1.2 文件读取写入方法
# 打开文件
with open('spring.txt', 'r', encoding='utf-8') as f:# 读取文件内容
# read 读取整个文件内容(返回字符串或字节)
data = f.read()
print(data)# readline 读取一行数据,返回一个字符串
line = f.readline()
print(line)# readlines 一次性读取所有内容到列表中,一行就是一个元素,返回一个列表
lines = f.readlines()
print(lines)# for 读取
for line in f:print(line)# write(string) 写入字符串(返回写入的字符数)
f.write("xxxx")# writelines(list) 写入字符串列表(不自动添加换行符)
lines = ['Line 1\n', 'Line 2\n', 'Line 3\n']
f.writelines(lines)
4.1.3 文件指针操作
tell() 返回当前文件指针位置
seek(offset[, whence]) 移动文件指针
- offset:偏移量(字节数)
- whence:参考点 0 -> 开头, 1->当前位置,2 -> 结尾,默认0
with open('example.txt', 'r') as f:print(f.tell()) # 0f.read(3) # 读取前3个字符print(f.tell()) # 3f.seek(0) # 回到开头
4.1.4 异常处理
常见异常:
FileNotFoundError:文件不存在
PermissionError:权限不足
IsADirectoryError:目标是目录而非文件
try:with open('nonexistent.txt', 'r') as f:content = f.read()
except FileNotFoundError:print("文件不存在!")
except PermissionError:print("没有权限访问!")
except Exception as e:print(f"发生错误:{e}")
4.2.标准输入输出
4.2.1 标准输出(打印)
函数:print(*objects, sep=’ ‘, end=’\n’, file=sys.stdout)
- objects:要打印的对象(可多个)
- sep:分隔符(默认空格)
- end:结束符(默认换行 ‘\n’)
- file:输出目标(默认标准输出 sys.stdout)
print('Hello', 'World', sep=',', end='!\n') # 输出:Hello,World!# 格式化输出
name = 'Jack'
age = 18
# 输出:My name is Jack, age is 18.
print(f'My name is {name}, age is {age}.') # f-string
print('My name is {}, age is {}.'.format(name, age)) # format()
print('My name is %s, age is %d.' % (name, age)) # % 格式化
# 输出:My name is Jack, age is 18.
print('My name is %5s, age is %10d.' % (name, age))
4.2.2 标准输入(读取用户输入)
函数:input([prompt])
- prompt:提示信息(可选)
- 返回值:用户输入的字符串(按回车结束)
name = input('请输入您的姓名:') # 输入:Jack
print(f'欢迎,{name}!') # 输出:欢迎,Jack!# 转换输入为其他类型
age = int(input('请输入您的年龄:')) # 输入:18
print(f'您明年 {age + 1} 岁') # 输出:您明年19岁
五、类型检查与帮助
函数 | 功能 | 示例 |
---|---|---|
type(object) | 返回对象的类型 | type([1, 2]) → list |
isinstance(object, classinfo) | 判断对象是否为指定类型 | isinstance(1, int) → True |
help([object]) | 显示对象的帮助文档 | help(list) |
dir([object]) | 返回对象的所有属性和方法 | dir(list) → [‘add’, ‘class’, …] |
id(object) | 返回对象的唯一标识符(内存地址) | id([1, 2]) → 140288803717744 |
总结
掌握内置函数能显著提升 Python 编程效率,它们是 Python 生态的基础工具。