Python设置可选参数后调用函数返回None的问题排查
问题排查与修复
你代码里存在两个核心错误,直接导致输出不符合预期:
return语句缩进错误:当前return full_name.title()仅包含在else代码块中,只有未传入中间名时才会正常返回结果;如果进入if middle_name分支,函数执行完赋值操作后没有显式返回值,Python会默认返回None。你需要将return语句调整到if/else分支同级位置,覆盖所有执行路径。- 第二次函数调用未传入中间名:你预期输出
John Lee Hooker,但调用get_formatted_name('john', 'hooker', )时没有传入中间名参数lee,自然无法生成带中间名的结果。 - 额外优化点:你写的f字符串开头多了一个冗余空格,会导致返回的姓名开头多出一个空白字符,建议删除。
修正后可运行代码
def get_formatted_name(first_name, last_name, middle_name=''): """Return a full name, neatly formatted.""" if middle_name: full_name = f"{first_name} {middle_name} {last_name}" else: full_name = f"{first_name} {last_name}" return full_name.title() musician = get_formatted_name('jimi', 'hendrix') print(musician) musician = get_formatted_name('john', 'hooker', 'lee') print(musician)
运行输出
Jimi Hendrix John Lee Hooker
内容的提问来源于stack exchange,提问作者getgutts
相关产品推荐
相关产品推荐

