gpt4 book ai didi

python - 从 def() 内部获取值

转载 作者:行者123 更新时间:2023-12-01 04:09:09 25 4
gpt4 key购买 nike

我定义了一个函数来绘制直方图。在这个函数中,我正在对通过两次点击该图获得的数据进行一些分析。

我的代码如下:

def hist_maker():
heights,edges = np.histogram(data, 1000)
edges = edges[:-1]+(edges[1]-edges[0])

fig, ax = plt.subplots()
ax.plot(edges,heights) # plot histogram
plt.yscale('log', nonposy='clip')
ax.set(title=titl, xlabel='ADC Value(DN/40)', ylabel='Frequency')

point1, point2 = fig.ginput(2) # get input from 2 clicks on figure

ax.axvspan(point1[0], point2[0], color='red', alpha=0.5) # paint selected area in red

mask = (edges>point1[0]) & (edges<point2[0])

# calculate which values are selected and display mean
fig.text(0.2,0.84,'Mean: ' + str((sum(edges[mask]*heights[mask])/sum(heights[mask]))))

mean = sum(edges[mask]*heights[mask])/sum(heights[mask])

mean_noise = edges[heights.argmax() # Find the x value corresponding to the max y value

fig.text(0.2,0.8,'Std: ' + str(g))

函数内部实际发生的事情一切正常。但是,例如,从代码中,如果我想在代码稍后的某个时刻使用计算出的 mean_noise ,我会收到一条错误,指出未定义平均噪声(这是正确的,因为它不是未在函数外部定义)

所以我的问题是如何提取定义 hist_maker 时自动计算的mean_noise 值,以便稍后使用它?

解决这个问题的一种方法是摆脱函数 hist_maker 并为我正在绘制的每个直方图重复内部代码,我确信它会起作用。但当我绘制多个直方图时,我认为定义一个函数然后继续为每个直方图调用该函数会更容易。

最佳答案

最简单的解决方案 - 函数的第一行应该是:

global mean_noise

如果您随后运行(在函数外部):

hist_maker()
print(mean_noise)

打印应该可以。如果颠倒这两行的顺序,您将收到 NameError

但请注意,这通常不被认为是好的编程。通常认为更好的解决方案是在函数末尾返回mean_noise

关于python - 从 def() 内部获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35182743/

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