我可以使用一个返回布尔值的方法作为Python中if语句的条件吗?

时间:2012-05-25 22:36:56

标签: python if-statement boolean

class my_class
    def is_same(self, arg1, arg2):
        return arg1 == arg2

    def a_function(self):
        if is_same('a', 'b'):
            print "They're the same"

Eclipse告诉我is_same是一个未定义的变量。我想你可以用Java做到这一点。

3 个答案:

答案 0 :(得分:1)

is_mode不在发布的代码中的任何位置,但是,还有另一个问题,即语法错误。

而不是原来的

print 'They're the same'

使用:

print "They're the same"

您可以使用“”或“'来包含字符串,这里您使用的是其中3个字符串。没有必要逃避'if you use“”来包围你的字符串。

更新:拥有

没有错
return arg1 == arg2

在你的函数中,它将返回一个你期望的布尔值。

答案 1 :(得分:1)

我需要说self.is_same(),因为这些函数都在一个类中。来自Java,你不需要说this.method(),我很困惑。

答案 2 :(得分:0)

很可能pydev(我想你正在使用)再次成为一个鸡巴。它有时不会立即重新读取所有内容,然后继续显示已完成源的警告或显示警告,因为它还不知道某人已被定义。保存文件通常会有所帮助。至少如果它没有忙于“重建”项目。

除了引用错误,您的代码完全正常并按预期工作。

>>> def is_same(arg1, arg2):
...     return arg1 == arg2
...
>>> def a_function():
...     if is_same('a', 'b'):
...         print "They're the same"
...
>>> a_function()
>>>

但是,如果你真的需要一个函数is_same,你就不会这样写,而是导入它:

from operator import eq as is_same