gpt4 book ai didi

函数内的 Python 星号表达式不起作用

转载 作者:太空宇宙 更新时间:2023-11-03 15:59:30 26 4
gpt4 key购买 nike

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

名称错误名称“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)

最佳答案

md 的范围仅限于 drop_first_last 函数内部的命名空间,并且无法在后者之外访问,除非您考虑将其全局化 。除此之外,在我看来,您并不希望 print 列表 md 本身。我认为您想要做的是打印列表元素的平均值。所以,而不是:

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

做:

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

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

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

通过以这种方式定义的函数,您现在可以访问 md 变量(这是一个列表)。

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

产量:

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

我希望这会有所帮助。

关于函数内的 Python 星号表达式不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40478289/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com