有没有python语法检查器可以在locals()存在时忽略'assigned to but never used'?

2024-03-29 09:40:26 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有密码

def foo():
    bar = 1
    wibble = 3
    return locals()

我当前的语法检查器(flake8 withsyntastic.vim公司)将在两个变量上引发“assigned to but never used”错误。然而,locals()意味着它们实际上正在被使用,如果不是显式的话。在

^{pr2}$

是否有任何python检查器或自定义设置可以识别locals()并具有灵活性?在

编辑:

这是vim/syntastic/flake8的一个快速而肮脏的解决方案,它将抑制.vimrc中的警告

"Ignore unused variable warnings whenever locals() is being used in a file                                                              
function! LocalsWarningSuppress()                                              
    if ( search("locals()",'nw') > 0)                                          
        let g:syntastic_python_checker='flake8 --ignore=W806'                  
    else                                                                       
        let g:syntastic_python_checker='flake8'                                
    endif                                                                      
endfunction 

au BufWritePre **/(filter_pattern)*py call LocalsWarningSuppress()                 

Tags: 密码returnfooflake8def语法checkerbar
1条回答
网友
1楼 · 发布于 2024-03-29 09:40:26

不,即使是我所知道的最强大、最挑剔的Python linter,^{}也不够聪明,无法检测到这种情况。但如果是这样,它可能会抱怨您首先使用的是locals()。:)

另一方面,与pyflakes不同,pylint支持magic comments来忽略特定问题。但是我必须警告你,pylint是一个非常挑剔(因此速度很慢)的开箱即用的方法,所以你需要花上几分钟的时间把它的list of checks削减到你真正关心的事情上。在

在字符串格式化的特定情况下,有一个ticket closed as wontfix来改进这种行为。看来pylint开发人员不想把它作为一个特性来实现。在

相关问题 更多 >