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
您的代码布局确实让人不清楚发生了什么。
至少,我倾向于在二元运算符 and
和 or
之后根据 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()
下一行是我的代码的一部分。我可能是错的,但它对我来说似乎足够 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
您的代码布局确实让人不清楚发生了什么。
至少,我倾向于在二元运算符 and
和 or
之后根据 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()