2016-05-06 13 views
5

Hãy nói rằng tôi có:đi qua một số các tham số để một hàm trong python

def foo(my_num, my_string): 
    ... 

Và tôi muốn tự động tạo một hàm (một cái gì đó giống như một lambba) mà đã có my_string, và tôi chỉ phải vượt qua it my_num:

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

Có cách nào để làm điều đó không?

Trả lời

5

Đây là những gì functools.partial sẽ giúp với:

from functools import partial 

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

Demo:

>>> 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') 
+0

Chính xác những gì tôi cần. Cảm ơn! –

0

này nên làm điều đó:

>>> 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 

Rõ ràng, bạn có thể thay đổi định nghĩa của foo để hương vị .

Các vấn đề liên quan