我正在尝试进行一次回调,如果距离上次报告已超过一秒钟,则会进行更新。看起来像这样
def main_func()
...
start_time = time.time()
def callback():
current_time = time.time()
if current_time - start_time > 1.0:
print 'working'
start_time = time.time()
work_function(args, callback)
由于start_time
是本地的,global
关键字在callback
内不起作用。有没有Python范例可以处理向本地函数添加状态的问题?你知道吗
有点,但这是被迫的。你知道吗
正如其他人所指出的,最好只使用一个对象(在这个解决方案中,列表毕竟是对象)
如前所述,最好使用类并将状态保存为成员。你知道吗
同样如前所述,您可以使用全局变量或
nonlocal
语句。你知道吗第三种(也是更原始的)替代方法是将状态设置为函数对象的属性:
您可以做到这一点,但具体细节将取决于您使用的Python版本。你知道吗
在python3中,可以使用
nonlocal
语句来允许callback
函数为外部函数作用域中的start_time
变量赋值。你知道吗在Python2中,
nonlocal
不可用,但您可以将值包装在可变容器(如list
)中并修改值,而无需重新分配变量:相关问题 更多 >
编程相关推荐