0

在 python 中显示操作失败的正确方法是什么。在这段代码中,返回值应该是什么?

def compare(y,x):
     if y ==  x:
         return 'true'
     return 'false'
4

3 回答 3

5

Python 有文字值TrueFalse你可以使用它。但是,很少需要显式使用它们,因为在大多数情况下,比较操作将返回一个或另一个值。例如,您可以将您的功能重做为:

def compare(y, x):
    return y == x

还值得注意的是,如果需要,非布尔值可以被认为是“真”或“假”。“假”值是None,0和所有空容器(例如空字符串''、空列表[]、空元组()、空字典{}等)。默认情况下,其他所有内容都是“真实的”,包括大多数对象的所有实例。

自定义类可以通过实现神奇的方法__nonzero____bool__在 Python 3 中重命名为)来定义布尔转换。如果不存在,Python 将检查__len__,如果不存在则放弃并假设所有实例都为真。

于 2012-11-12T23:12:20.990 回答
3
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

于 2012-11-12T23:03:33.763 回答
3

您的compare()示例对这个问题有问题,原因有两个:

  • 在 Python 中,您通常只使用一个 bare==来获得布尔比较结果,而不是调用一个函数。
  • 这里的结果都不是“成功”或“失败”,因此它们并没有真正解决标题问题。

在 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)
于 2012-11-12T23:40:35.320 回答