Python中的starred表达函数无效

时间:2016-11-08 03:06:41

标签: python list

当我在Python 3.5上运行此代码时,我得到了

未定义NameError名称“md”。

我已经为md使用了一个星号表达式,所以它会抓住所有 中间价值观。由于它不起作用,我尝试使用已加星标 在函数(drop_first_last)上面的代码中表达式,并且该星号表达式工作正常。

t = [3, 5, 6,8, 2, 9]
first, *middle, last = t
avgg = np.mean(middle)
print('middle is:', middle)
print('avg  is:', avgg)
def drop_first_last(t):
    frst, *md, lst = t
    return  np.mean(md)

drop_first_last(t)
print("avg",md)

1 个答案:

答案 0 :(得分:1)

md的范围仅限于drop_first_last函数内的命名空间,除非您考虑全球化,否则无法在后者之外访问。除此之外,我似乎并不认为print列表md本身。我认为你要做的是打印列表元素的平均值。所以,而不是:

drop_first_last(t)
print("avg is: ",md)

做的:

print("avg is: ",drop_first_last(t))

但如果真的md函数中定义的drop_first_last变量之后,那么您可以按如下方式重新定义函数:

def drop_first_last(t):
  global md
  frst, *md, lst = t
  return  np.mean(md)

通过这种方式定义函数,您现在可以访问md变量(list)。

t = [3, 5, 6, 8, 2, 9]
print(drop_first_last(t))
print(md)

的产率:

#5.25
#[5, 6, 8, 2]

我希望这会有所帮助。