前言

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 文件打开与关闭

  1. with open(‘file’, ‘r’, encoding=‘utf-8’) as f:
    # 打开文件并自动关闭(推荐写法)

  2. 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())  # 0
    f.read(3)        # 读取前3个字符
    print(f.tell())  # 3
    f.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 生态的基础工具


练习

1. 凯撒密码

  • 实现简单的字母位移
  • 用户输入字符串及位移数量
  • 如“abAdef",位移3 => “deDghi”
  • xyz -> abc
msg = input("请输入:")
msg_caesar_cipher = ''
for i in msg:
        if "x" <= i.lower() <= "z":
            msg_caesar_cipher += chr(ord(i) - 23)
        else:
            msg_caesar_cipher += chr(ord(i) + 3)
print(msg_caesar_cipher)

2. 统计单词出现的次数

有一篇小短文:spring.txt, 统计这篇文件中,每个单词出现的次数

  • 读取文件
  • 字符串 -> 单词
with open('spring.txt', 'r', encoding='utf-8') as f:
    lines = f.read().lower()
    for word in lines.split():
        word = word.strip(".,:")
        if mydict.get(word):
            mydict[word] += 1
        else:
            mydict[word] = 1
        line = f.readline()
print(mydict)

3. 统计nginx日志error.log,4xx的错误出现的次数

结果如下:{“401”:1, “404”:10}

with open('error.log', 'r', encoding='utf-8') as f:
    status_code_count = {}
    for line in f:
        status_code = line.split()[-1]
        if status_code.startswith("4"):
            if status_code in status_code_count:
                status_code_count[status_code] += 1
            else:
                status_code_count[status_code] = 1
    print(status_code_count)

4. 统计nginx日志error.log的每分钟请求数量

结果如下:{“2023/10/05 14:25”:1, “2023/10/05 14:25”:10}

with open("error.log","r",encoding="utf-8") as f:
    result = {}
    lines = f.readlines()
    for line in lines:
        line = line[:16:]
        if line in result:
            result[line] += 1
        else:
            result[line] = 1
print(result)
Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐