在函数中重用代码块的 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
您也可以考虑使用装饰器。
是否有一种干净的方法来重用 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
您也可以考虑使用装饰器。