我无法找到答案的简单问题。
采取功能:
下面的看起来很好,即更可读,给定else和两个return语句之间的对齐间距。然而,其他方面完全没有意义,这让它感觉有点脏。
def get_val(self):
if long_var < other_long_var and var < other_var:
return true
else:
return false
注意两个条件和长行,这是为了表示以下内容不适用于此示例:
return true if this else false
然而,下面的内容并不是可读的,只是略微可读。它更优雅,因为省略了无用的其他东西。
def get_val(self):
if x:
return true
return false
这些风格中是否存在Pythonic偏见?
如果没有,这纯粹取决于开发者吗?
编辑:要清楚,这是一个示例函数。我试图表达需要一个具有条件并返回true的函数的函数。 这是一个纯粹的风格问题
答案 0 :(得分:3)
如果你只是试图找出参数的值是True还是False,你可以使用python的内置函数 bool 。
x = ""
bool(x)
>>> False
x = "something"
bool(x)
>>> True
另外,您应该查看官方文档: https://docs.python.org/3.6/library/functions.html
希望它有所帮助。
答案 1 :(得分:2)
在这么短的情况下,我更愿意:
def get_val(self):
return x
其次,在我看来仍然是pythonic(常见于codewars.com):
def get_val(self):
return True if x else False
但我猜,风格指南会推荐:
def get_val(self):
if x:
return True
else:
return False
你的第二个例子可能不是非常pythonic ...
在codewars.com中,我也经常看到:
def get_val(x):
if x == "": return yz
elif x == "B": return xyz
else: return z
但是,可能是Python中的一种切换/案例模仿 我不认为风格指南会支持这个......
答案 2 :(得分:0)
对于你给出的例子(这是最小和完整的,应该是这样),两个选项都清晰易懂。
最简单(也是最pythonic)的方式是:
def get_val(self):
return bool(x)
让我评论一个更一般的案例。引自import this
:
面对模棱两可,拒绝猜测的诱惑。
虽然第二个选项可能看起来更优雅,但它也含糊不清:您是因为False
是x
而返回False
,还是因为之前的return
语句都没有被触发了吗?
考虑到一个稍微复杂的例子,我建议使用最终的return语句给你,例如一些默认选项,警告或ValueError。
def myfunc(x, mode):
if mode == 'square':
return x**2
if mode == 'cube':
return x**3
return x