python - 将变量传递给函数 Python
问题描述
我有以下情况:我有一个单曲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)
根据需要。
不幸的是,我有许多希望传递给主函数的函数;所以这种方法不适合!
F
有没有办法在 master_function
不参考所需参数的情况下进行写入?我如何概括这一点?
解决方案
最好的方法是让调用保持不变
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
推荐阅读
- javascript - 如何通过构建 div 的子项来导航 JSON 层次结构
- r - 为什么图形在 R 中不合适?
- python - 扩展mnist数据库
- firebase-authentication - Firebase JavaScript 身份验证中的“未捕获的 ReferenceError:未定义 cosole”
- regex - 使用 Matcher 和 Pattern 进行正则表达式匹配
- javascript - node.js:是否可以用透明替换图像中的某种颜色?
- python - Odoo _check_concurrency 从未触发?
- r - 在 R 中使用质心的条形图
- sql - 从系统日期减去 14 天
- arrays - 在“UIPickerView”功能设置上接收错误