我是一个图像处理工程师,我使用Python作为原型语言。
大多数时候,当我得到数以千计的图像时,名为“imagen.jpg”,n是增量。
所以我的程序的主要结构可能被视为:
def main_IP(imgRoot, stop_ncrement):
name = update_the_increment(imgRoot, stop_increment)
img = load_the_image(name)
out_img = process_image(img)
displays_images(img, out_img)
return out_img
正如您所看到的,从一个应用程序到另一个应用程序,唯一的变化是process_image函数。 有没有办法让process_image作为输入插入?
我会得到一个通用函数,原型为: main_IP(imgRoot,stop_increment,process_image)
谢谢! 于连
答案 0 :(得分:8)
函数可以在python中传递,就像字符串或任何其他对象一样。
def processImage(...):
pass
def main_IP(imgRoot, stop_ncrement, process_image):
name = update_the_increment(imgRoot, stop_increment)
img = load_the_image(name)
out_img = process_image(img)
displays_images(img, out_img)
return out_img
main_IP('./', 100, processImage)
答案 1 :(得分:2)
是的,在python函数中是第一类对象,因此您可以将它们作为参数传递,就像任何其他数据类型一样。
答案 2 :(得分:1)
以下是一些代码,用于演示传递要调用的函数的名称,以及将引用传递给要调用的函数:
def A():
return "A!"
def B():
return "B!"
def CallByName(funcName):
return globals()[funcName]()
def CallByReference(func):
return func()
print CallByName("A")
functionB = B
print CallByReference(functionB)