在 python 中显示操作失败的正确方法是什么。在这段代码中,返回值应该是什么?
def compare(y,x):
if y == x:
return 'true'
return 'false'
在 python 中显示操作失败的正确方法是什么。在这段代码中,返回值应该是什么?
def compare(y,x):
if y == x:
return 'true'
return 'false'
Python 有文字值True
,False
你可以使用它。但是,很少需要显式使用它们,因为在大多数情况下,比较操作将返回一个或另一个值。例如,您可以将您的功能重做为:
def compare(y, x):
return y == x
还值得注意的是,如果需要,非布尔值可以被认为是“真”或“假”。“假”值是None
,0
和所有空容器(例如空字符串''
、空列表[]
、空元组()
、空字典{}
等)。默认情况下,其他所有内容都是“真实的”,包括大多数对象的所有实例。
自定义类可以通过实现神奇的方法__nonzero__
(__bool__
在 Python 3 中重命名为)来定义布尔转换。如果不存在,Python 将检查__len__
,如果不存在则放弃并假设所有实例都为真。
def compare(y,x):
if y == x:
return True
return False
或隐含的:
def compare(y,x):
return x == y
这里是python布尔类型的更详细介绍:http: //docs.python.org/release/2.3.5/whatsnew/section-bool.html
您的compare()
示例对这个问题有问题,原因有两个:
==
来获得布尔比较结果,而不是调用一个函数。在 Python 中,函数通常不是通过返回值来指示成功或失败,而是通过假设它们成功,除非它们引发异常。出于三个原因,例外情况比返回指示更可取:
这是一个更 Pythonic 的示例:
def doThing(x,low,high):
"""
Do a thing if x is between the low and high values, inclusive.
If x is out of bounds, the thing fails.
"""
if x < low or x > high:
raise ValueError( "x is out of bounds" )
return (x-low)/(high-low)