python - 是否可以在 Python 中创建带状态的嵌套函数?

标签 python

<分区>

如果自上次报告以来已经超过一秒,我正在尝试进行更新回调。看起来像这样

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 语句。

第三种(也是更原始的)替代方法是将状态设置为函数对象的属性:

def main_func()
    ...
    def callback():
        current_time = time.time()
        if current_time - callback.start_time > 1.0:
            print 'working'
            callback.start_time = time.time()
    callback.start_time = time.time()
    work_function(args, callback)

关于python - 是否可以在 Python 中创建带状态的嵌套函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24559770/

相关文章:

python - Pandas :以编程方式选择多列

python - Pytorch 简单模型没有改进

python - Django 管理员在 POST 上返回 404,在 GET 上返回 200

python - 识别 NumPy 数组中的连续值组

python - App Engine 异步语法 - "raise"在此示例中有何作用?

python - 在python中没有负值的情况下进行插值

Python opencv 在图像上找到五边形轮廓

python - 我怎样才能找到平均水平最好的州

python - 有没有办法在 PyQt 应用程序结束之前调用函数?

Python 包含 Lion 上的文件?