3、Python基础语法速成:变量、数据类型、列表、字典、元组、集合、条件判断、循环、函数定义与调用

财务数据处理的核心工作——无论是从Excel读取销售明细、清洗缺失值、计算月度汇总,还是生成经营分析报表——本质上都是对数据的存储、筛选、迭代和计算。Python之所以能成为财务自动化的首选语言,正是因为它用极简的语法提供了强大的数据结构(列表、字典、元组、集合)和流程控制能力。本章将围绕财务场景,快速建立Python核心语法基础,确保你能够读懂并编写基本的财务数据处理脚本。

Python财务数据处理核心语法关系图 数据容器 列表 list:有序、可修改 字典 dict:键值对、快速查找 元组 tuple:有序、不可变 集合 set:去重、集合运算 流程控制 条件判断 if / elif / else for 循环:遍历序列 while 循环:条件迭代 break / continue / pass 函数封装 def 函数名(参数): return 返回值 默认参数 / 关键字参数 lambda 匿名函数 财务数据处理应用 读取Excel → 数据清洗(去重/缺失值处理) → 分组汇总 → 生成报表 核心:用列表存储明细,用字典映射科目,用循环批量计算,用函数复用逻辑

3.1 变量与基本数据类型:财务数据的“存储单元”

核心原理

变量是内存中用于存储数据的命名位置。在Python中,变量不需要声明类型,赋值即创建。财务场景中,我们常用变量暂存金额、税率、客户名称、日期等。基本数据类型包括:整数(int)、浮点数(float)、字符串(str)、布尔值(bool)。理解类型是后续进行数值计算和条件判断的前提。

判断方法或操作流程

  • 命名规范:使用小写字母和下划线,如 total_amount、tax_rate,避免使用Python保留字(如 if、for)。
  • 动态类型:Python会根据赋值自动推断类型,但需注意不同类型间不能直接运算(如字符串与整数相加会报错)。
  • 类型转换:使用 int()、float()、str() 进行显式转换,这在从Excel读取数字字符串时尤为重要。

案例拆解:处理含税金额

假设从报表中读取到“含税金额”为字符串 "1130",需要计算不含税金额(税率13%)。

amount_str = "1130"
tax_rate = 0.13
amount_float = float(amount_str)  # 转换为浮点数
amount_excl = amount_float / (1 + tax_rate)
print(f"不含税金额: {amount_excl:.2f}")  # 输出: 不含税金额: 1000.00

常见误区与总结

风险提示:财务数据中金额通常用浮点数表示,但浮点数存在精度误差(如 0.1+0.2 != 0.3)。对于精确计算(如税额、利息),建议使用 Decimal 模块或先将金额转换为“分”为单位的整数。
数据类型财务应用示例注意事项
int凭证号、数量、年份大整数运算安全
float单价、税率、比率避免直接比较相等
str客户名、科目编码、日期字符串注意编码(UTF-8)
bool是否已审核、是否超预算用于条件判断

3.2 核心数据结构:列表、字典、元组、集合

核心原理

数据结构决定了数据如何组织和访问。列表(list)是有序的可变序列,适合存储流水明细;字典(dict)以键值对存储,适合科目编码与名称的映射;元组(tuple)不可变,适合存储固定不变的记录(如坐标、常量配置);集合(set)自动去重,适合提取不重复的客户列表或科目列表。

操作流程与选择标准

  1. 列表:用方括号 [] 定义,支持追加(append)、索引、切片。财务中常用于存储多行费用明细。
  2. 字典:用花括号 {} 定义,通过键快速取值。例如 subject_map = {"1001": "库存现金", "1002": "银行存款"}。
  3. 元组:用圆括号 () 定义,不可修改。适合存储如 ("2024-01-31", "期末余额") 这类固定结构。
  4. 集合:用 set() 或花括号(无冒号)定义,自动去重。例如提取所有出现过的客户编号。

案例拆解:月度费用汇总

某财务人员需要汇总1月份各部门的差旅费总额。数据源为Excel导出的列表,每行包含部门、费用类型、金额。

# 原始数据:列表嵌套字典
expenses = [
    {"dept": "销售部", "type": "差旅费", "amount": 3500},
    {"dept": "市场部", "type": "差旅费", "amount": 2800},
    {"dept": "销售部", "type": "办公费", "amount": 1200},
    {"dept": "市场部", "type": "差旅费", "amount": 1900},
]
# 用字典汇总差旅费
travel_total = {}
for item in expenses:
    if item["type"] == "差旅费":
        dept = item["dept"]
        # 如果部门不在字典中,初始化为0
        travel_total[dept] = travel_total.get(dept, 0) + item["amount"]
print(travel_total)  # 输出: {'销售部': 3500, '市场部': 4700}

常见误区与总结

经验提醒:字典的 get(key, default) 方法比直接 dict[key] 更安全,避免键不存在时抛出 KeyError。在财务数据处理中,经常需要先判断键是否存在,get 方法可以简化代码。
结构可变性顺序去重典型财务用途
列表可变有序否流水明细、待处理清单
字典可变有序(Python3.7+)键唯一科目映射、汇总统计
元组不可变有序否固定配置、函数多返回值
集合可变无序是去重、交集/差集运算

3.3 条件判断与循环:控制财务逻辑

核心原理

条件判断(if)让程序根据数据值执行不同分支,例如判断是否超预算、是否属于特定科目。循环(for、while)用于批量处理数据,例如遍历所有凭证、逐行计算折旧。两者结合是财务自动化脚本的核心引擎。

判断方法或操作流程

  • if 语句:if 条件: ... elif 条件: ... else: ...。注意缩进(通常4个空格)表示代码块。
  • for 循环:for 变量 in 可迭代对象:,适合遍历列表、字典的键、字符串等。
  • while 循环:while 条件:,适合不确定次数的迭代,但需小心死循环。
  • break / continue:break 跳出整个循环,continue 跳过本次循环进入下一次。

案例拆解:坏账计提判断

企业按账龄计提坏账准备:账龄超过90天计提20%,超过180天计提50%。现有应收账款列表,需要计算应计提金额。

receivables = [
    {"customer": "A公司", "days": 120, "amount": 50000},
    {"customer": "B公司", "days": 200, "amount": 30000},
    {"customer": "C公司", "days": 60, "amount": 80000},
]
total_provision = 0
for r in receivables:
    if r["days"] > 180:
        rate = 0.5
    elif r["days"] > 90:
        rate = 0.2
    else:
        rate = 0
    provision = r["amount"] * rate
    total_provision += provision
    print(f"{r['customer']} 计提: {provision:.2f}")
print(f"坏账准备总额: {total_provision:.2f}")

常见误区与总结

风险提示:在循环中修改正在遍历的列表(如删除元素)会导致意外跳过。建议先复制列表或使用列表推导式创建新列表。另外,while 循环务必确保条件最终会变为 False,否则会造成死循环导致程序卡死。

3.4 函数定义与调用:模块化财务计算

核心原理

函数是组织好的、可重复使用的代码块。在财务中,将“计算增值税”“计算折旧”“格式化金额”等操作封装为函数,可以避免重复代码,提高可读性和可维护性。函数通过 def 关键字定义,使用 return 返回结果。

操作流程

  1. 定义函数:def 函数名(参数1, 参数2=默认值):,函数体缩进。
  2. 调用函数:函数名(实际参数),参数传递方式有位置参数、关键字参数。
  3. 返回值:使用 return 返回一个或多个值(多个值以元组形式返回)。
  4. lambda 函数:匿名函数,适用于简单操作,如 lambda x: x * 1.13。

案例拆解:封装金额格式化函数

财务报表中经常需要将数字格式化为千分位字符串,并保留两位小数。我们封装一个通用函数。

def format_amount(value, currency="¥"):
    """将数值格式化为财务金额字符串"""
    if not isinstance(value, (int, float)):
        raise ValueError("金额必须是数字")
    return f"{currency}{value:,.2f}"

# 调用示例
print(format_amount(1234567.891))  # 输出: ¥1,234,567.89
print(format_amount(99999, currency="$"))  # 输出: $99,999.00

常见误区与总结

经验提醒:函数内部修改全局变量需使用 global 关键字,但财务脚本中应尽量避免依赖全局变量,而是通过参数传递和返回值交换数据,这样更易于测试和调试。另外,定义函数时设置默认参数可以增强灵活性,但默认参数必须是不可变类型(如 None、数字、字符串),避免使用列表或字典作为默认值。
函数特性财务应用价值示例
参数默认值税率、币种等常用参数可省略def calc_tax(amount, rate=0.13)
多返回值同时返回本金和利息return principal, interest
lambda排序、筛选时快速定义规则sorted(data, key=lambda x: x['amount'])
本章核心要点:变量是数据的容器,四种数据结构(列表、字典、元组、集合)各有适用场景;条件判断和循环是处理批量财务数据的核心逻辑;函数将常用计算封装为可复用模块。掌握这些基础语法后,即可开始编写简单的财务数据处理脚本,为后续的Pandas数据分析与报表自动化打下坚实基础。