存储值并继续 运行 函数

store values and continue running function

我正在使用 astropy 来检测图像中的来源。我正在尝试编写一个函数来检测我的源,可以选择将它们的坐标存储在一个数组中,另一个选项可以绘制源。这是我的代码:

def SourceDetect(file, SIG, FWHM, THRESH, store = False, PlotStars = False):
    image = pf.open(file)
    im = image[0].data
    mean, median, std = sigma_clipped_stats(im, sigma=SIG)
    daofind = DAOStarFinder(fwhm = FWHM, threshold = THRESH * std) 
    sources = daofind(im - median)
    positions = np.transpose((sources['xcentroid'], sources['ycentroid']))
    if(store):
        return positions
    if(PlotStars):
        apertures = CircularAperture(positions, r = 6.) 
        norm = ImageNormalize(stretch = SqrtStretch())
        plt.imshow(im, cmap = 'Greys', origin = 'lower', norm = norm, 
        interpolation = 'nearest')
        apertures.plot(color = 'blue', lw = 1.5, alpha = 1)
        for i in range(0, len(sources)):
            plt.text(sources[i]['xcentroid'], sources[i]['ycentroid'], i, color='black');

然而,当我 运行 将存储和绘图都设置为 True 的代码时,只有函数 运行s 的存储部分,除非我将存储设置为 False,否则我无法绘制它.有没有办法编写此代码,以便我能够存储和绘制我的坐标?

简单更改顺序 - 第一个 PlotStars,下一个 store

    if PlotStars:
        # ... code ...
    if store:
        return positions

这将首先显示绘图,然后它会退出带有值的函数。

但是如果你想先获取值然后再绘制那么你应该 运行 两次 - 首先只用 store=True 然后只用 PlotStars=True