基于PEP8标准和python换行技术来分解字符串格式的代码行的最佳方法是什么?

时间:2019-05-15 18:41:43

标签: python syntax pep8

我们的新CTO希望我们使用PEP8标准来格式化所有代码。这包括行数不超过80且最多100个字符的Python代码。我有这段扩展的代码。关于如何将这一行分解为2-3条清晰易读的行的任何提示。

    # Identify if Authenticated 
    identify = ''
    if is_authenticated:
        fullname = request.user.full_name if 'full_name' in request.user else ''
        identify = 'mixpanel.identify("{} ");\nmixpanel.people.set({{"$email": {email}, "$name": {name}}})'.format(email=request.user.email, name=fullname)

我已经尝试过诸如:

    # Identify if Authenticated 
    identify = ''
    if is_authenticated:
        fullname = request.user.full_name if 'full_name' in request.user else ''
        identify = 'mixpanel.identify("{} ");\n'
        'mixpanel.people.set({{"$email": {email}, "$name": {name}}})'.format(email=request.user.email, name=fullname)

...但是当我引用另一篇SO帖子说这没问题时,linting却返回了无法识别的格式错误(红色弯曲)。

我还考虑过将所有内容以.format开头。

有什么提示吗?

2 个答案:

答案 0 :(得分:3)

我会利用括号:

    identify = ''
    if is_authenticated:
        fullname = request.user.full_name if 'full_name' in request.user else ''
        form = (
            'mixpanel.identify("{} ");\n'
            'mixpanel.people.set({{"$email": {email}, "$name": {name}}})'
        )
        identify = form.format(email=request.user.email, name=fullname)

答案 1 :(得分:0)

最后我将传递给textwrap.dedent的三引号和结果的调用格式。 textwrap.dedent("""\所需的行数""").format(...)。三元组的开头中的行连续是为了压制空白的第一行。我也喜欢在文档字符串中使用它。