Python 函数命名的具体示例

一、基础通用函数(最常用场景)

核心规则:全小写 + 下划线(snake_case) + 见名知意,名称要直接体现函数的“动作+对象”。

函数用途 错误命名(反面示例) 正确命名(正面示例) 代码示例
计算列表平均值 avg(lst)f1(l) calculate_list_average() ```python
def calculate_list_average(num_list):
"""计算数字列表的平均值"""
if not num_list:
    return 0
return sum(num_list) / len(num_list)
| 验证手机号格式          | `checkphone(p)`、`v(p)`    | `validate_phone_number()`  | ```python
def validate_phone_number(phone):
    """验证手机号是否符合11位数字格式"""
    return len(phone) == 11 and phone.isdigit()
``` |
| 读取文本文件            | `readfile(f)`、`rf(path)`  | `read_text_file()`         | ```python
def read_text_file(file_path, encoding="utf-8"):
    """读取文本文件内容并返回字符串"""
    with open(file_path, "r", encoding=encoding) as f:
        return f.read()
``` |
| 生成随机验证码          | `create_code(n)`、`gc()`   | `generate_verify_code()`   | ```python
import random
import string

def generate_verify_code(length=6):
    """生成指定长度的数字+字母随机验证码"""
    chars = string.digits + string.ascii_letters
    return "".join(random.choice(chars) for _ in range(length))
``` |

### 二、业务场景函数(贴近实际开发)
命名要结合业务逻辑,让非技术人员也能快速理解函数用途,避免抽象化。

```python
# 学生管理系统相关函数
def get_student_info_by_id(student_id):
    """根据学生ID查询学生信息"""
    # 模拟数据库查询逻辑
    students = {"001": {"name": "张三", "age": 20}, "002": {"name": "李四", "age": 19}}
    return students.get(student_id, None)

def update_student_score(student_id, subject, new_score):
    """更新指定学生的某科目成绩"""
    # 模拟更新逻辑
    print(f"更新学生{student_id}的{subject}成绩为{new_score}")
    return True

# 电商订单相关函数
def calculate_order_total_price(order_items):
    """计算订单商品总价(含单价*数量)"""
    total = 0
    for item in order_items:
        total += item["price"] * item["quantity"]
    return total

def cancel_order_by_order_id(order_id, reason="用户主动取消"):
    """根据订单ID取消订单,并记录取消原因"""
    print(f"订单{order_id}已取消,原因:{reason}")
    return True

三、私有函数(仅内部使用)

核心规则:单下划线开头 + 蛇形命名,提示外部代码不要直接调用。

# 工具类示例:私有函数用于内部辅助逻辑
class FileHandler:
    def __init__(self, file_path):
        self.file_path = file_path

    # 私有函数:清理文件中的空行(仅内部调用)
    def _remove_blank_lines(self, content):
        """【内部函数】清理文本内容中的空行"""
        lines = [line.strip() for line in content.split("\n") if line.strip()]
        return "\n".join(lines)

    # 公开函数:读取并格式化文件内容
    def read_and_format_file(self):
        """读取文件并清理空行后返回"""
        content = self.read_text_file(self.file_path)
        return self._remove_blank_lines(content)

    # 复用之前的基础函数(作为类方法)
    def read_text_file(self, file_path, encoding="utf-8"):
        with open(file_path, "r", encoding=encoding) as f:
            return f.read()

四、特殊场景:简短但清晰的函数名

如果函数逻辑极简单、上下文明确,可适当简化命名(但仍要避免无意义字符):

# 场景:简单的数值处理(上下文明确时)
def add(a, b):
    """两数相加(简单逻辑可简化命名)"""
    return a + b

def is_empty(obj):
    """判断对象是否为空(如列表、字符串)"""
    return not obj

# ❌ 反面示例:即使简单也不能用无意义命名
def f(a, b):  # 无法判断是相加/相减/相乘
    return a + b

五、绝对要避免的命名坑

  1. 使用关键字/保留字def def(): pass(报错)、def class(): pass(报错);
  2. 大小写混用(非类名)def CalculateListAverage(): pass(违反snake_case);
  3. 用中文/特殊字符def 计算平均值(): pass(虽能运行,但不符合规范)、def cal-avg(): pass(含减号,直接报错);
  4. 过度缩写def clc_avg(): pass(clc=calculate,缩写不直观)。

总结

  1. Python函数命名核心是snake_case(小写+下划线),私有函数加单下划线开头;
  2. 命名要体现“动作+对象”,做到见名知意,避免无意义字符/过度缩写;
  3. 业务函数结合场景命名,让代码可读性最大化,新手优先参考“基础通用函数”的命名范式。
posted @ 2026-01-19 15:48  后端砖家  阅读(0)  评论(0)    收藏  举报