MST

星途 面试题库

面试题:Python字符串方法链式调用中的常见错误场景

请列举至少两个Python字符串方法链式调用过程中可能出现的陷阱,并给出简单的代码示例说明。
13.0万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试

陷阱一:方法返回值类型不匹配

在链式调用中,如果前一个方法返回的对象类型与后续方法所期望的对象类型不匹配,就会导致错误。

示例代码:

s = "123"
try:
    result = s.upper().split().join("-")  
    # upper()返回字符串,split()返回列表,列表没有join方法
except AttributeError as e:
    print(f"错误: {e}")

陷阱二:链式调用中的空值问题

如果链式调用中的某个方法返回 None,后续的方法调用就会出错,因为 None 没有对应的方法。

示例代码:

def custom_split(s):
    if s == "":
        return None
    return s.split()

s = ""
try:
    result = custom_split(s).join("-")  
    # custom_split()返回None,None没有join方法
except AttributeError as e:
    print(f"错误: {e}")

陷阱三:方法副作用影响链式调用结果

某些方法可能会有副作用,改变对象的内部状态,这可能会影响链式调用中后续方法的行为。

示例代码:

class CustomString:
    def __init__(self, s):
        self.s = s

    def remove_char(self, char):
        self.s = self.s.replace(char, "")
        return self

    def reverse(self):
        self.s = self.s[::-1]
        return self

cs = CustomString("hello")
try:
    result = cs.remove_char('l').reverse().s
    print(result)  
    # 先移除'l',再反转字符串
except AttributeError as e:
    print(f"错误: {e}")

此例中,如果方法实现有误,可能导致链式调用结果不符合预期。