我正在使用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
Run Code Online (Sandbox Code Playgroud)
这只是一个伪代码,因此不具体,但我得到了编译的代码但我需要知道如何调用该函数Game以及它是否正确定义,因为规则将被切换为Rule1(v)或者Rule2(v).
如何将参数绑定到Python方法以存储一个用于以后调用的nullary仿函数?与C++类似boost::bind.
例如:
def add(x, y):
return x + y
add_5 = magic_function(add, 5)
assert add_5(3) == 8
Run Code Online (Sandbox Code Playgroud) 在并行Python中,它在提交函数中有一些叫做回调(文档)的东西,但它似乎没有解释得太好.我几天前在他们的论坛上发帖,我没有收到回复.有人会解释回调是什么以及它用于什么?
谢谢.
我告诉我第1行和第5行(新的调试/编程,不确定是否有帮助)
def hi():
print 'hi'
def loop(f, n): #f repeats n times
if n<=0:
return
else:
f()
loop(f, n-1)
loop(hi(), 5)
hi
TypeError: 'NoneType' object is not callable
Run Code Online (Sandbox Code Playgroud)
为什么它会给我这个错误?
我的代码:
import threading
def hello(arg, kargs):
print arg
t = threading.Timer(2, hello, "bb")
t.start()
while 1:
pass
Run Code Online (Sandbox Code Playgroud)
打印输出只是:
b
Run Code Online (Sandbox Code Playgroud)
如何将参数传递给回调?kargs是什么意思?
使用一个简单的过滤器,测试0-100范围内的输入.
def foo(foo_input):
if 0 <= foo_input <= 100:
return f_input
Run Code Online (Sandbox Code Playgroud)
如果,则返回none foo_input is > 100.但它真的"不"会返回任何东西吗?或者功能总是必须返回一些东西?
考虑以下:
class objectTest():
def __init__(self,a):
self.value = a
def get_value(self):
return self.value
class execute():
def __init__(self):
a = objectTest(1)
b = objectTest(1)
print(a == b)
print(a.get_value() == b.get_value)
print(a.get_value() == b.get_value())
print(a.get_value == b.get_value)
if __name__ == '__main__':
execute = execute();
Run Code Online (Sandbox Code Playgroud)
此代码返回
>>>
False
False
True
False
Run Code Online (Sandbox Code Playgroud)
鉴于get_value是一个函数,我希望执行停止并返回错误,但事实并非如此.有人可以解释为什么python解释器允许这种语法而不是引发属性错误,这在我的情况下会节省我宝贵的时间.
t1=threading.Thread(target=self.read())
print "something"
t2=threading.Thread(target=self.runChecks(), args=(self))
Run Code Online (Sandbox Code Playgroud)
self.read无限期地运行,所以程序将无法到达该print行.没有打电话t1.start()怎么可能呢?(即使我打电话给它,它会开始运行并继续下一行,不应该吗?)
我经常从我的 Python 代码中得到未捕获的异常(错误),这些异常被描述为TypeErrors. 经过大量的实验和研究,我收集了以下示例(以及细微的变化):
TypeError: func() takes 0 positional arguments but 1 was given
TypeError: func() takes from 1 to 2 positional arguments but 3 were given
TypeError: func() got an unexpected keyword argument 'arg'
TypeError: func() missing 1 required positional argument: 'arg'
TypeError: func() missing 1 required keyword-only argument: 'arg'
TypeError: func() got multiple values for argument 'arg'
TypeError: MyClass() takes no arguments
TypeError: unsupported operand type(s) for +: 'int' and 'str'
TypeError: can only concatenate str …Run Code Online (Sandbox Code Playgroud) Python 2.7.10
我编写了以下代码来测试一个简单的回调函数.
def callback(a, b):
print('Sum = {0}'.format(a+b))
def main(callback=None):
print('Add any two digits.')
if callback != None:
callback
main(callback(1, 2))
Run Code Online (Sandbox Code Playgroud)
我执行它时收到这个:
Sum = 3
Add any two digits.
Run Code Online (Sandbox Code Playgroud)
为什么Add any two digits之后Sum = 3呢?我想这是因为回调函数首先执行.执行完所有其他代码后如何执行回调函数main()?