在yum源中使用无用的if语句

Wil*_*arp 5 python yum

我很好奇某些东西是如何工作的yum所以我正在查看它的一些得分代码,我在erasePkgs函数中发现了这一行cli.py.

if False: pass
elif basecmd in ('erase-n', 'remove-n'):
   rms = self.remove(name=arg)
.
.
.
Run Code Online (Sandbox Code Playgroud)

if False: pass不执行任何操作是否正确?它永远不会进入那个分支它总是只是跳到下一个不是吗?

以下是源代码的链接:https://github.com/rpm-software-management/yum/blob/master/cli.py.它在1268号线上.

mjh*_*jhm 5

这似乎是开发人员对广义switch语句的习语.

        if False: pass
        elif basecmd in ('erase-n', 'remove-n'):
            rms = self.remove(name=arg)
        elif basecmd in ('erase-na', 'remove-na'):
            ...
        elif basecmd in ('erase-nevra', 'remove-nevra'):
            ...
        else:
            ...
Run Code Online (Sandbox Code Playgroud)

这比可读性略高一些

        if basecmd in ('erase-n', 'remove-n'):
            rms = self.remove(name=arg)
        elif basecmd in ('erase-na', 'remove-na'):
            ...
        elif basecmd in ('erase-nevra', 'remove-nevra'):
            ...
        else:
            ...
Run Code Online (Sandbox Code Playgroud)

  • 我认为它"稍微更具可读性"只是因为所有条件具有相同的`elif`前缀,类似于其他语言中的`switch/case`具有一致的`case`前缀的方式.但是,除了熟悉自己风格的原作者之外,第一行增加的混淆可能会否定任何好处. (2认同)