Python基础 | 内置函数

为什么学内置函数?你的「代码冷兵器时代」该升级了

想象你是奶茶店老板:

  • 手动数库存:珍珠剩15杯,椰果剩20杯(重复写len(珍珠))
  • 计算利润:18-6.5=11.5(重复写减法)
  • 给订单编号:第1单、第2单...(重复写i+1)

内置函数的本质:Python 官方预制的「万能工具」,无需定义直接用,解决 80% 的重复需求。就像奶茶店的「果糖定量机」,按一下就出标准量,比手动加糖快 10 倍。    


数据统计三剑客:len ()/sum ()/max ()

👉 场景:奶茶店日营业分析

# 原料库存(单位:杯)
小料库存 = ["珍珠", "椰果", "青稞", "脆啵啵"]
珍珠剩余 = [15, 22, 18, 20]  # 4天的珍珠剩余量

# 用内置函数一键统计
print(f"小料种类:{len(小料库存)}种(len()数数量)")  
print(f"本周珍珠总消耗:{sum(珍珠剩余)}杯(sum()求和)")  
print(f"珍珠最大日消耗:{max(珍珠剩余)}杯(max()找最大值)")

运行结果:

小料种类:4种  
本周珍珠总消耗:75杯  
珍珠最大日消耗:22杯  
(老板:比手动加计算器快10倍!)

新手必知:

  • len() 适用所有可迭代对象(列表、字符串、字典)
  • sum() 只能用于数字,sum(["珍珠", "椰果"]) 会报错

类型转换三件套:int ()/float ()/str ()

👉 场景:处理订单中的「文字→数字」转换

# 从Excel复制的订单(文字格式)
杯数 = "12"  # 字符串
单价 = "18.5"  # 字符串

# 转换后计算
总销售额 = int(杯数) * float(单价)  # int()转整数,float()转浮点数
print(f"订单总额:{总销售额}元(原价12×18.5=222元)")

# 反向操作:数字转文字(打印标签)
标签 = str(杯数) + "杯" + str(单价) + "元奶茶"
print(f"标签内容:{标签}")

避坑现场:

  • int("18.5") 会报错(无法转整数),需先float()再int()
  • str(123) 转文字,repr(123) 保留类型(调试更友好)

流程控制神器:range ()/enumerate ()

👉 场景:给 100 杯奶茶贴编号标签

# 普通循环(易出错)
for i in range(100):  # range(100)=0-99
    print(f"标签{i+1}:芋泥波波")  # 手动+1,易错

# 用enumerate()自动编号(推荐)
for 序号, 奶茶名 in enumerate(["芋泥波波"]*100, start=1):
    print(f"标签{序号}:{奶茶名}")  # 自动从1开始,无需+1

奶茶店实战:

  • enumerate(库存列表, start=1) 给原料标序号(盘点更清晰)
  • range(3, 10, 2) 生成 3,5,7,9(每隔 2 个取一次,用于跳号盘点)

字符串处理:strip ()/split ()/join ()

👉 场景:清洗订单中的「脏数据」

# 从POS机导出的原始数据(带空格和逗号)
原始订单 = "  珍珠奶茶, 热, 七分糖  "

# 清洗步骤
订单 = 原始订单.strip()  # 去掉首尾空格 → "珍珠奶茶, 热, 七分糖"
详情 = 订单.split(", ")  # 按逗号拆分 → ["珍珠奶茶", "热", "七分糖"]
奶茶名, 温度, 甜度 = 详情  # 拆包赋值

print(f"处理后:{奶茶名}({温度},{甜度})")

新手必学:

  • strip() 去空格,lstrip() 去左,rstrip() 去右
  • ",".join(["珍珠", "椰果"]) 合并列表为字符串 → “珍珠,椰果”

万能转换:type ()/isinstance ()

👉 场景:避免「珍珠数量 × 单价」的类型错误

珍珠数量 = "15"  # 从Excel复制的字符串
单价 = 18.5      # 正确的浮点数

if isinstance(珍珠数量, str):  # 检查是否是字符串
    珍珠数量 = int(珍珠数量)  # 转整数后计算
总价格 = 珍珠数量 * 单价

print(f"类型检查通过,总价格:{总价格}元")

避坑指南:

  • type(珍珠数量) is str 也可判断类型,但isinstance() 支持继承(更推荐)
  • 搭配try-except 处理无法转换的情况(如 “十五杯” 转 int 会报错)

实战:用内置函数做「奶茶店利润看板」

# 原始数据(杯数,成本,售价)
订单 = [
    (12, 6.5, 18),
    (8, 5.2, 16),
    (20, 7.8, 22)
]

# 用内置函数一键分析
总杯数 = sum(杯数 for 杯数, _, _ in 订单)
总成本 = sum(成本 * 杯数 for 杯数, 成本, _ in 订单)
总利润 = sum((售价 - 成本) * 杯数 for _, 成本, 售价 in 订单)

print(f"今日战绩:")
print(f"总销量:{总杯数}杯(sum()聚合)")
print(f"每杯最高利润:{max(售价 - 成本 for _, 成本, 售价 in 订单):.1f}元(max()找峰值)")

运行结果:

总销量:40杯  
每杯最高利润:14.2元(来自第三单)  
(老板:比雇会计便宜!)

内置函数的「3 大误区」

滥用 len () 计算数字
len(123)  # ❌ 报错!len()只能用于容器(列表、字符串)
str(123).__len__()  # ✅ 正确,但直接用len(str(123))更简单
忽略 start 参数
for i in range(5):  # 0-4,共5次  
for i in range(1, 6):  # 1-5,共5次(适合编号从1开始)
混淆 split () 和 join ()
"a,b,c".split(",")  # 拆分 → ['a', 'b', 'c']  
",".join(['a', 'b', 'c'])  # 合并 → "a,b,c"

避坑口诀:类型转换先检查,range 编号看 start,split 拆分 join 合    


写给程序员的「内置函数哲学」

  • 优先用内置:遇到需求先想「Python 有没有自带函数?」(如sum()比手动循环快 20 倍)
  • 少写重复代码:len(列表) 代替for i in 列表: count+=1
  • 文档是朋友:忘记参数时,help(len) 查看官方说明(终端直接敲)

总结:你已掌握的「瑞士军刀」

✅ 统计:len()(数量)、sum()(求和)、max()(最大值)
✅ 转换:int()/float()/str()(类型转换)
✅ 流程:range()(生成数列)、enumerate()(带编号循环)
✅ 字符串:strip()(去空格)、split()/join()(拆分合并)
✅ 检查:type()/isinstance()(类型判断)

挑战:用内置函数优化你的「外卖订单分析」!
任务:统计订单中「销量最高的菜品」和「总消费金额」,用max()+sum()实现    


终极心法:内置函数是「代码的方言」

熟练使用内置函数的代码,就像本地人说方言一样自然:

  • 新手写法:count = 0; for x in list: count +=1
  • 高手写法:count = len(list)

报错急救箱:
遇到TypeError: object of type 'int' has no len() → 检查是否对数字用了len()
遇到ValueError: invalid literal for int() → 检查int(文字)是否包含非数字字符

← 返回资讯