我正在使用python解决一个难题,根据我要解决的难题,我必须使用一组特殊的规则。如何在Python中将一个函数传递给另一个函数?
示例
def Game(listA, listB, rules):
if rules == True:
do...
else:
do...
def Rule1(v):
if "variable_name1" in v:
return False
elif "variable_name2" in v:
return False
else:
return True
def Rule2(v):
if "variable_name3" and "variable_name4" in v:
return False
elif "variable_name4" and variable_name1 in v:
return False
else:
return True
这只是一个伪代码,因此不是特定的,但我得到了要编译的代码,但我需要知道如何调用函数Game
,以及它是否被正确定义,因为规则将针对Rule1(v)
或Rule2(v)
进行切换。
发布于 2009-08-28 21:04:04
只需像传递其他参数一样传递它:
def a(x):
return "a(%s)" % (x,)
def b(f,x):
return f(x)
print b(a,10)
发布于 2009-08-28 21:06:29
在你的程序中把函数当作变量,这样你就可以很容易地把它们传递给其他函数:
def test ():
print "test was invoked"
def invoker(func):
func()
invoker(test) # prints test was invoked
发布于 2016-02-18 04:31:58
用于将函数和任何参数传递给该函数:
from typing import Callable
def looper(fn: Callable, n:int, *args, **kwargs):
"""
Call a function `n` times
Parameters
----------
fn: Callable
Function to be called.
n: int
Number of times to call `func`.
*args
Positional arguments to be passed to `func`.
**kwargs
Keyword arguments to be passed to `func`.
Example
-------
>>> def foo(a:Union[float, int], b:Union[float, int]):
... '''The function to pass'''
... print(a+b)
>>> looper(foo, 3, 2, b=4)
6
6
6
"""
for i in range(n):
fn(*args, **kwargs)
根据您正在做的事情,定义一个decorator
或使用functools.partial
可能是有意义的。
https://stackoverflow.com/questions/1349332
复制相似问题