gpt4 book ai didi

python - 将变量传递给Python函数

转载 作者:行者123 更新时间:2023-12-01 01:56:53 27 4
gpt4 key购买 nike

我遇到以下情况:我有一个 master_function,我希望将 sub_function 传递到其中。我希望传递给此更改的函数(例如 1 和 2)。每个函数的参数的数量和类型也有所不同。

def sub_function_1( x, y, z):
return x + y + z

def sub_function_2( x, y ):
return x + y

def master_function( x, y, z, F ):
return x*y + F()

快速修复

解决此问题的简单方法是使用所有可能的参数编写函数回调,无论是否使用它们:

   def master_function( x, y, z, F ): 
return x*y + F(x,y,z)

然后我们可以根据需要调用 master_function( x, y, z, sub_function_1)master_function( x, y, z, sub_function_2)

不幸的是,我有很多函数希望传递给主函数;所以这个方法不适合!

有没有办法在master_function中编写F而不引用所需的参数?我该如何概括这一点?

最佳答案

最好的方法是让调用保持不变

def sub_function_1( x, y, z):
return x + y + z

def sub_function_2( x, y, z ):
return x + y

def master_function( x, y, z, F ):
return x * y + F(x,y,z)

但是如果您愿意,您可以让它更加动态:

def sub_function_1( x, y, z, **kwargs):
return x + y + z

def sub_function_2( x, y, **kwargs ):
return x + y

def master_function( x, y, z, F ):
return x * y + F(**locals())

这在 Python 3 中效果更好,因为:

def sub_function_1(*args):
return args[0] + args[1] + args[2]

def sub_function_2(*args):
return args[0] + args[1]

def master_function(*args, F):
return args[0] * args[1] + F(*args)
.
.
.
>>> master_function(1,2,3,F=sub_function_1)
8
>>> master_function(1,2,3,F=sub_function_2)
5
>>> master_function(1,2,F=sub_function_2)
5
>>> master_function(1,2,F=sub_function_1)
IndexError: tuple index out of range

关于python - 将变量传递给Python函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50066468/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com