【问题标题】:Using PyFlakes and the del operator使用 PyFlakes 和 del 运算符
【发布时间】:2010-09-02 13:32:41
【问题描述】:

在 Python 函数中使用 del 时,我从 PyFlakes 得到误报,告诉我变量未定义。

def foo(bar):
    # what if it's ham? eww
    if bar == 'ham':
        del bar
        return
    # otherwise yummy!
    print bar

上述函数会返回如下错误:

C:\temp\test.py:7: undefined name 'bar'

即使该功能将起作用。 有谁知道调整 ast 树解析以改变其处理方式的补丁?如果这是其他人遇到的问题?

【问题讨论】:

    标签: python del pyflakes


    【解决方案1】:

    那么你的问题是什么?删除参数名称根本没有任何意义,所以无论如何这都不是真正的问题......

    【讨论】:

    • 我给出的函数在语法上是正确的,因为无论出于何种原因,您都可以使用 del 运算符来删除一个对象。然而,PyFlakes 处理这个问题的方式是在一个范围内维护一个变量字典,如果在你的代码中使用了 del 运算符,它会依次执行: del self.scope[variable] 在我列出的示例中在 OP 中,del 调用后立即返回,这意味着即使变量被删除,它也可以在 bar != 'ham' 的情况下使用,从而产生完美运行的代码。我希望有人对此有经验
    猜你喜欢
    • 2013-12-09
    • 1970-01-01
    • 2021-06-12
    • 2011-03-09
    • 1970-01-01
    • 1970-01-01
    • 2011-07-09
    • 1970-01-01
    • 2014-01-17
    相关资源
    最近更新 更多