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
相关产品推荐
相关产品推荐

