Python:Pep8 E128压痕错误......这怎么样?

Jos*_*eph 18 python formatting coding-style pep8

我将此声明作为几行:

    return render_to_response('foo/page.html',
        {
            'situations': situations,
            'active': active_req,
        },
        context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)

按照现在的情况,使用PEP8脚本,它在第二行给出了一个"E128:延迟线下缩进视觉缩进"错误.

我尝试了一大堆不同的格式化方法,而且我能让PEP8停止抱怨的唯一方法是:

    return render_to_response('foo/page.html', {
        'situations': situations,
        'active': active_req,
    },
        context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)

但这看起来像垃圾.

建议?E124,E126和E128似乎是一个巨大的痛苦!

我不介意具有{第一行(或它自己)的解决方案,但我希望有一个解决方案,其中},context_instance...处于相同的缩进级别.

aba*_*ert 21

问题是所有参数都应该缩进到同一级别.这包括初始函数调用行上的任何参数.

所以,虽然你可以像这样解决它:

return render_to_response('foo/page.html',
                          {
                              'situations': situations,
                              'active': active_req,
                          },
                          context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)

......通常只会让你违反80栏规则,即使pep8不抱怨也一定会使你的代码变得更加丑陋.你可能想要的是这个:

return render_to_response(
    'foo/page.html',
    {
        'situations': situations,
        'active': active_req,
    },
    context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)

或者,当然,你可以打破你的巨大表达:

d = {
    'situations': situations,
    'active': active_req,
}
context = RequestContext(request)
return render_to_response('foo/page.html', d, context_instance=context)
Run Code Online (Sandbox Code Playgroud)