MST

星途 面试题库

面试题:Python字符串前缀处理的常规实现与防御性编程差异

在Python中,假设有一个函数接收一个字符串,要求该字符串必须以特定前缀 'prefix_' 开头,否则返回错误。请分别用常规方式和防御性编程思路实现这个函数,并说明防御性编程在这个场景中的优势。
44.7万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试

常规方式

def check_prefix_regular(s):
    if not s.startswith('prefix_'):
        raise ValueError("字符串必须以 'prefix_' 开头")
    return s

防御性编程思路

def check_prefix_defensive(s):
    if not isinstance(s, str):
        raise TypeError("输入必须是字符串类型")
    if not s.startswith('prefix_'):
        raise ValueError("字符串必须以 'prefix_' 开头")
    return s

防御性编程在这个场景中的优势

  1. 健壮性增强:防御性编程不仅检查字符串是否以指定前缀开头,还检查了输入是否为字符串类型。这可以防止因传入错误类型数据(如整数、列表等)而导致的程序崩溃,使程序更加健壮。
  2. 提前发现错误:通过对输入类型进行检查,能在函数执行早期发现潜在问题,避免后续可能出现的难以调试的错误。如果在函数后续处理中假设输入为字符串类型,但实际传入的是其他类型,可能会引发一系列连锁错误,而防御性编程能在入口处就拦截这类错误。