将一些参数传递给python中的函数

时间:2016-05-06 16:11:43

标签: python

我们说我有:

def foo(my_num, my_string):
    ...

我想动态创建一个已经有my_string的函数(类似于lambba),我只需要传递它my_num:

foo2 = ??(foo)('my_string_example')
foo2(5)
foo2(7)

有办法吗?

2 个答案:

答案 0 :(得分:5)

这是functools.partial可以提供的帮助:

from functools import partial

foo2 = partial(foo, my_string="my_string_example")

演示:

>>> from functools import partial
>>> def foo(my_num, my_string):
...     print(my_num, my_string)
... 
>>> foo2 = partial(foo, my_string="my_string_example")
>>> foo2(10)
(10, 'my_string_example')
>>> foo2(30)
(30, 'my_string_example')

答案 1 :(得分:0)

这应该这样做:

>>> def foo(a, b):
...    return a+b
...
>>> def makefoo2(a):
...    def f(b):
...        return foo(a,b)
...    return f
...
>>> foo2 = makefoo2(3)
>>> foo2(1)
4

显然,您可以改变foo的定义。