在函数中重用代码块的 Pythonic 方法

Pythonic way to reuse code blocks in functions

是否有一种干净的方法来重用 python classes 中的代码块以避免必须重新键入相同的代码?例如,假设在 2 个不同函数的开头,设置函数所需的代码行相同(希望将设置变量保留在函数中)。

def func1(path, x, y):
    img = load_img('path')
    img.normalize()
    foo = Foo(x)
    bar = Bar(y)

    **rest of the function (using img, foo and bar)

def func2(path, x, y):
    img = load_img('path')
    img.normalize()
    foo = Foo(x)
    bar = Bar(y)

    **different code here to func 1

是否有标准的最佳实践来设置局部变量以避免代码重复?就像可以设置局部变量的函数(可能使用非局部变量)?我知道我可以在技术上在一个函数中完成整个设置,但是如果有很多输入和输出变量,它可能会变得有点混乱。我只是想看看是否有更优雅的方法来解决这个问题,因为理想情况下我只能调用一些任意函数来设置整个本地 space.

*还注意到,我知道我可以将所有代码包装在 class 中,将函数转换为方法并具有共享属性,但是我认为这不是正确的解决方案情况。

将通用代码放在 returns 值的另一个函数中。

def common(path, x, y):
    img = load_img(path)
    img.normalize
    return img, Foo(x), Bar(y)

def func1(path, x, y):
    img, foo, bar = common(path, x, y)

    # different code

def func2(path, x, y):
    img, foo, bar = common(path, x, y)

    # different code

您也可以考虑使用装饰器。