You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python函数调用报错:第5行提示title未定义,已在参数中定义该变量

搞定这个代码报错其实很简单!

嘿,你遇到的title未定义错误,问题出在最后那行document(title+genre)上——这里的title和genre是你定义函数时的局部参数,只有函数内部能访问它们,在全局代码里根本不存在,Python当然找不到啦!

咱们一步步来修正,同时匹配你想要的输出:

先揪出原代码的问题

  • 最后一次调用函数的方式完全错了:你想使用默认参数的话,直接写document()就行,不用去拼什么title+genre,这些参数名只是函数内部的占位符,外面根本用不了。
  • 原代码里print(title+genre)会直接把两个字符串硬拼在一起,没有空格,输出会显得很挤,比如"once upon a timefiction",肯定不是你想要的效果对吧?

修正后的代码(匹配你的期望输出)

def document(title="cool", genre="fiction"):
    # 加个空格让文本更通顺
    print(f"{title} {genre}")

# 第一次调用:指定title,genre用默认值
document(title = "once upon a time ")
# 第二次调用:用位置参数传title,genre默认
document("awesome")
# 第三次调用:啥都不传,用两个默认参数
document()

运行这段代码会输出:

once upon a time  fiction
awesome fiction
cool fiction

如果你想把这些结果用逗号连起来输出(像你描述的格式),可以改成这样:

def document(title="cool", genre="fiction"):
    return f"{title} {genre}"

# 把三次调用的结果存起来
outputs = [
    document(title = "once upon a time "),
    document("awesome"),
    document()
]

# 用逗号加空格连接所有结果
print(", ".join(outputs))

这时候输出就是:

once upon a time  fiction, awesome fiction, cool fiction

划个重点记牢

  • 函数里的参数是局部变量,只有函数内部能访问,外面碰不到。
  • 想用默认参数就直接空着调用,别去引用参数名。
  • 字符串拼接记得加分隔符,不然输出会乱糟糟的!

内容的提问来源于stack exchange,提问作者Brenan Class

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:07:21