【问题标题】:Parameter not defined when function is ran in Python在 Python 中运行函数时未定义参数
【发布时间】:2021-04-15 22:21:53
【问题描述】:

enter image description here

代码如下:

def sortByAveScore (bList):
  for x in range(len(aNameLst)):
    avgsorted=sorted(average)
    sortlist=list(zip(aNameLst,avgsorted))
    sortname=sorted(sortlist,key=lambda x: x[1])
  return(sortname)
sortByAveScore (bList)

我得到参数未定义的错误,但如果我取消参数,它工作正常。我做错了什么或者我对此不理解什么?我是编程新手,所以有点困惑。

def sortByAveScore ():
  for x in range(len(aNameLst)):
    avgsorted=sorted(average)
    sortlist=list(zip(aNameLst,avgsorted))
    sortname=sorted(sortlist,key=lambda x: x[1])
  print(sortname)
sortByAveScore ()

enter image description here

【问题讨论】:

  • 为什么要把bListsortByAveScore?它从未在函数中使用过。你的意思是在函数内部写bList而不是aNameLst,然后写sortByAveScore(aNameLst)
  • 请显示minimal reproducible example。如果它说bList 没有定义——所以它没有定义,你不能和解释器争论。在第一个 sn-p 中,无论如何您都不会使用 bList 参数。在这两个片段中,您都使用全局 aNameListaverage

标签: python function parameters


【解决方案1】:

您似乎正在使用本地 (avgsorted, sortlist, ...) 和全局 (aNameLst, average) 变量。 bList 作为参数传递给函数,因此当您尝试执行 sortByAveScore(bList) 时,bList 在函数之外不存在。 这就是为什么如果你执行sortByAveScore()(不带参数)它不会显示错误,因为没有未创建的东西被传递给函数。

您可能想要创建与bList 相同类型的对象,然后将其传递给函数(看来您可以将aNameLst 更改为bList,否则您不会在任何地方使用bList )。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-14
    • 1970-01-01
    • 1970-01-01
    • 2015-07-06
    • 1970-01-01
    • 2021-09-22
    • 2016-01-13
    • 2021-05-22
    相关资源
    最近更新 更多