如何使用多个 if 和 else 语句编写更短的 Python 代码?

use*_*380 0 python

如何优化以下代码并减少编写量?

  class CleanItem():

     def process_item(self, item, spider):

        PSCV = str(item['page_source_canonical']).split("'")[1]

        if PSCV != "":
            if PSCV != item['page_source']:
                item['page_source_canonical_is_itself'] = False
            else:
                item['page_source_canonical_is_itself'] = True
        else:
                item['page_source_canonical_is_itself'] = True

    
        return item
Run Code Online (Sandbox Code Playgroud)

首先它检查它是否为空。如果为空,则为 true。如果它不为空,则应检查它,如果相同则再次为真。否则就是假的。

J_H*_*J_H 5

你写了

        if PSCV != "":
            if PSCV != item['page_source']:
                item['page_source_canonical_is_itself'] = False
            else:
                item['page_source_canonical_is_itself'] = True
        else:
                item['page_source_canonical_is_itself'] = True
Run Code Online (Sandbox Code Playgroud)

你要

        item['page_source_canonical_is_itself'] =  PSCV in (
            '', item['page_source'])
Run Code Online (Sandbox Code Playgroud)

这就是DRY,并且非常清楚地阐明了作者的意图,即我们将在匹配任一值时分配 True,否则分配 False。


风格 nit:PEP 8要求您拼写pscv小写。


考虑删除未使用的spider参数。