Python:将带有参数的函数传递给函数

哈里特·维什瓦卡玛

我有两个功能:

  1. 我不能改变的库函数说,lib_func( func, param1)
    lib_func以一个函数func和一些其他参数param1作为参数。

  2. 用户定义的功能user_func

例如:

x = 0
y = 0
def user_func():
    global x
    global y 
    return sqrt(x*y)

现在的问题是我想在传递给时将xuser_func作为参数而不是全局变量传递user_funclib_func

塞弗特

函数只是一个可以调用的对象,因此,使用__call__方法定义类在原则上等同于定义函数。至少在您给出的情况下。

所以:

def user_func(x, y, z):
    return anything_with(x, y, z)

等效于:

class user_class(object):
    @staticmethod # staticmethod so that it can be called on the class
    def __call__(x, y, z):
        return anything_with(x, y, z)

就目前情况而言,这只是迷惑。但是,当您创建具有预定义属性的实例并且仅将变量参数指定为参数时,魔术就发生了call

class user_class(object):
    def __init__(self, x):
        self.x = x

    def __call__(self, y, z): # No x as parameter!
        return do_anything_with(self.x, y, z) # use the predefined x here

但您需要lib_func随后更改通话方式

x = 0
user_class_instance = user_class(0)
result = lib_func(user_class_instance, param1)

因此,它会重复调用不同的实例yz,但x将保持不变


lib_func但是,大多数此类函数都允许传递可变参数(例如将传递给user_func),例如scipy.optimize.curve_fit

curve_fit(user_func, x, y, [initial_guess_param1, param2, ...])

那里user_func将被称为curve_fit内部(你没有做任何事情!),如:

user_func(x, initial_guess_param1, param2, ...)
# Then curve-fit modifies initial_guess_param1, param2, ... and calls it again
user_func(x, initial_guess_param1, param2, ...)
# and again modifies these and calls again
user_func(x, initial_guess_param1, param2, ...)
# ... until it finds a solution

xy定义和调用时没有改变curve_fit,但initial_guess_param1同时寻求最优将被改变curve_fit

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将带有空格的数组传递给Bash函数以充当其参数列表

来自分类Dev

如何在JavaScript中将带有参数的函数传递给函数

来自分类Dev

将带有所有参数的成员函数传递给std :: function

来自分类Dev

如何将带有键的数组传递给函数的参数?(使用多维数组)

来自分类Dev

C-将带有参数的函数传递给包装执行器

来自分类Dev

如何将带有2个参数的函数作为参数传递给函数?

来自分类Dev

将带有两个参数的函数传递给python中的filter()

来自分类Dev

我可以将带有预定义参数的参数列表动态传递给python函数吗?

来自分类Dev

Python:将带有参数的函数传递给函数

来自分类Dev

如何将带有指针的数组传递给函数?

来自分类Dev

将带有绑定成员函数的std :: bind对象传递给函数

来自分类Dev

C ++-错误地插入将带有const参数的函数指针传递给模板类

来自分类Dev

如何将带有参数作为参数的函数传递给Python中的另一个函数?

来自分类Dev

Laravel-我可以将带有apiResource的参数传递给控制器中的索引函数吗?

来自分类Dev

如何或可以将带有参数作为参数的函数传递给lua中的函数?

来自分类Dev

将带有State变量的函数传递给子视图

来自分类Dev

将带有值的参数传递给函数无法正常工作

来自分类Dev

如何将带有非法名称的关键字参数传递给接受** kwargs的函数

来自分类Dev

将带有参数的函数传递给事件处理程序

来自分类Dev

Boost C ++。将带有签名指针的成员函数指针传递给函数

来自分类Dev

Bash:将带有引号的参数传递给函数

来自分类Dev

如何将带有指针的数组传递给函数?

来自分类Dev

将带有一些设置参数的read.csv分配给名称,以便将其传递给函数

来自分类Dev

将带有私有构造函数(工厂模式)的类实例传递给函数

来自分类Dev

将带参数的函数传递给 `addEventListener`

来自分类Dev

将带有 ">=" 的参数传递给 argparse

来自分类Dev

如何将带有字段名称的python dataFrame 作为变量传递给用户定义的函数

来自分类Dev

将带有自动参数的 lambda 传递给另一个函数是否合法

来自分类Dev

当将带有 void * 参数的函数传递给 dict 时,Cython 会抛出错误

Related 相关文章

  1. 1

    将带有空格的数组传递给Bash函数以充当其参数列表

  2. 2

    如何在JavaScript中将带有参数的函数传递给函数

  3. 3

    将带有所有参数的成员函数传递给std :: function

  4. 4

    如何将带有键的数组传递给函数的参数?(使用多维数组)

  5. 5

    C-将带有参数的函数传递给包装执行器

  6. 6

    如何将带有2个参数的函数作为参数传递给函数?

  7. 7

    将带有两个参数的函数传递给python中的filter()

  8. 8

    我可以将带有预定义参数的参数列表动态传递给python函数吗?

  9. 9

    Python:将带有参数的函数传递给函数

  10. 10

    如何将带有指针的数组传递给函数?

  11. 11

    将带有绑定成员函数的std :: bind对象传递给函数

  12. 12

    C ++-错误地插入将带有const参数的函数指针传递给模板类

  13. 13

    如何将带有参数作为参数的函数传递给Python中的另一个函数?

  14. 14

    Laravel-我可以将带有apiResource的参数传递给控制器中的索引函数吗?

  15. 15

    如何或可以将带有参数作为参数的函数传递给lua中的函数?

  16. 16

    将带有State变量的函数传递给子视图

  17. 17

    将带有值的参数传递给函数无法正常工作

  18. 18

    如何将带有非法名称的关键字参数传递给接受** kwargs的函数

  19. 19

    将带有参数的函数传递给事件处理程序

  20. 20

    Boost C ++。将带有签名指针的成员函数指针传递给函数

  21. 21

    Bash:将带有引号的参数传递给函数

  22. 22

    如何将带有指针的数组传递给函数?

  23. 23

    将带有一些设置参数的read.csv分配给名称,以便将其传递给函数

  24. 24

    将带有私有构造函数(工厂模式)的类实例传递给函数

  25. 25

    将带参数的函数传递给 `addEventListener`

  26. 26

    将带有 ">=" 的参数传递给 argparse

  27. 27

    如何将带有字段名称的python dataFrame 作为变量传递给用户定义的函数

  28. 28

    将带有自动参数的 lambda 传递给另一个函数是否合法

  29. 29

    当将带有 void * 参数的函数传递给 dict 时,Cython 会抛出错误

热门标签

归档