Python 中条件运算符的推荐编码风格是什么?

What is recommended coding style for conditional operator in Python?

下一行是我的代码的一部分。我可能是错的,但它对我来说似乎足够 pythonic。然而,乍一看,这到底是什么意思并不清楚。有没有更好的代码布局可以使它更清晰? _idName 是函数或 DataFrame.

while  id1!="cancel" and ((id1 not in _idName.id.values) 
        if isinstance(_idName,_pd.DataFrame) else (_idName(id1) is None)):
    do something with the variables evaluated in the condition

您的代码布局确实让人不清楚发生了什么。

至少,我倾向于在二元运算符 andor 之后根据 the style guide 换行,而不是在单个条件的中间换行。

如果可能的话,我也会尝试将三进制保留在一行中;在这种情况下,最终会很长,所以可能不是一个选择。我认为三元中的布尔运算符在它们行的开头更有意义,尽管我找不到这方面的参考(超出 )。

一个更易读的例子:

while (id1 != "cancel" and 
       ((id1 not in _idName.id.values) if isinstance(_idName, _pd.DataFrame) 
        else (_idName(id1) is None))):

或者也许:

while (id1 != "cancel" and 
       ((id1 not in _idName.id.values)
        if isinstance(_idName,_pd.DataFrame)
        else (_idName(id1) is None)):

创建一个小函数来为您进行检查,然后在 while 语句中使用它。

def check_whatever(id1, _idName):
    if id1 == 'cancel':
        return False

    if isinstance(_idName,_pd.DataFrame):
        return id1 not in _idName.id.values:
    else:
        return _idName(id1) is None


while check_whatever(id1, _idName):
    do_stuff()