Python函数间传递列表作为参数触发NameError报错问题咨询
问题诊断与调整方向
你遇到的NameError本质是变量作用域和返回值接收的问题,还有几处逻辑疏漏需要调整,调整方向如下:
- 你在
user_inputs()内部定义的entities_list、views_list属于函数局部变量,仅在函数内部生效。你当前直接调用了user_inputs()但没有用变量接收它的返回值,函数外部自然找不到这两个变量名。只需要在调用时写entities_list, views_list = user_inputs(),就能把返回的两个列表赋值给全局的同名变量,后续传入url_constructor就不会报错了。 - 你当前
user_inputs()的错误处理逻辑有问题:except分支里的return会直接终止函数,既不会让用户重新输入,还会出现「变量未定义就返回」的新错误,同时return之后的continue完全不会执行。你需要去掉except分支里的return语句,仅保留错误提示,让循环继续直到用户输入正确。 url_constructor函数有两处疏漏:一是url_list没有提前初始化就调用append方法,会触发新的报错,你可以选择在函数内部初始化url_list = [],遍历完成后将其作为返回值返回;二是变量名拼写错误,你生成的变量是url,append时写的是ur,需要修正拼写。
内容的提问来源于stack exchange,提问作者William
相关产品推荐
相关产品推荐

