保持简短和简单#

Python具有令人惊叹的功能,使我们能够编写21世纪的代码。例如,我们可以将函数和参数收集在列表中,然后从循环中调用它们。虽然从编程的角度来看这非常酷,但可能不易读懂代码。建议是:保持简短和简单(KISS)

import numpy as np
from skimage.io import imread, imshow
from napari_segment_blobs_and_things_with_membranes import threshold_otsu, gaussian_blur, label

练习#

作为示例,下面有两个代码段。不运行代码 - 你认为它们做的是同样的事情吗?

image = imread("../../data/blobs.tif")

# define a list of functions and a corresponding list of arguments
functions = [gaussian_blur, threshold_otsu, label]
argument_lists = [[.5], [], []]

# go through functions and argument lists pair-wise
for function, argument_list in zip(functions, argument_lists):
    # execute function with given arguments
    image = function(image, *argument_list)

result1 = image
imshow(result1)
image = imread("../../data/blobs.tif")

blurred = gaussian_blur(image, 5)
binary = threshold_otsu(blurred)
labels = label(binary)

result2 = labels

imshow(result2)

如果你不确定,你也可以直接检查结果是否相等:

np.all(result1 == result2)