Python函数调用中声明变量是否可行?生物信息学代码疑问
嘿,我来帮你搞懂这段代码里的这个写法~
为什么要把函数返回值赋值给变量?
先把你给出的完整代码片段贴出来方便参考:
def sobelFilter(pixmap): matrix = array([[-1, 0, 1], [-2, 0, 2], [-1, 0, 1]]) grey = pixmap.mean(axis=2) # <--- 你关注的这一行 edgeX = convolveMatrix2D(grey, matrix) edgeY = convolveMatrix2D(grey, matrix.T) pixmap2 = sqrt(edgeX**2 + edgeY**2) # 后续处理代码...
这种把函数返回值赋值给变量的写法,主要有这几个关键原因:
- 避免重复计算,提升效率:
pixmap.mean(axis=2)的作用是把3通道的彩色图像转换成单通道灰度图,这个计算是需要消耗资源的。如果不把结果存到grey变量里,而是直接在两次convolveMatrix2D调用里都写pixmap.mean(axis=2),程序会重复执行两次灰度转换操作,平白浪费计算时间,尤其是处理大尺寸图像时,差异会很明显。 - 让代码更易读:变量名
grey直接点明了这个值的含义——灰度图。相比每次都看一长串函数调用,用变量代替后,其他开发者(甚至几周后的你自己)扫一眼代码就能立刻明白这里在处理什么,理解成本低很多。 - 方便调试和扩展:如果之后你想对灰度图做额外处理(比如加个阈值过滤、调整亮度),直接在
grey = ...这一行后面加代码就行,不用去修改两处convolveMatrix2D的参数,既省事又能减少出错的概率。
其实这种写法在Python(以及绝大多数编程语言)里是非常常规且推荐的做法,只要函数返回值需要被多次使用,或者需要明确标注其含义时,都应该这么做。
内容的提问来源于stack exchange,提问作者Aaron
相关产品推荐
相关产品推荐

