Python布尔值作为函数中的参数

时间:2013-05-29 19:38:26

标签: python

我有一个需要输入为True / False的函数,它将从另一个函数输入。我想知道这样做的最佳做法是什么。这是我正在尝试的例子:

def feedBool(self, x):

    x = a_function_assigns_values_of_x(x = x)
    if x=="val1" or x == "val2" :
      inp = True
    else
      inp = False

    feedingBool(self, inp)
    return

def feedingBool(self, inp) :
    if inp :
      do_something
    else :
      dont_do_something
    return

3 个答案:

答案 0 :(得分:1)

你可以这样做:

def feedBool(self, x):
    x = a_function_assigns_values_of_x(x = x)    
    feedingBool(self, bool(x=="val1" or x == "val2"))

或者,正如评论中所指出的那样:

def feedBool(self, x):
    x = a_function_assigns_values_of_x(x = x)    
    feedingBool(self, x in ("val1","val2"))

答案 1 :(得分:1)

为什么不呢:

inp = x in ("val1", "val2")

因为它可以在调用下一个函数时更直接地压缩,但这将以一些可读性为代价,imho。

答案 2 :(得分:0)

你通常把测试放在一个函数中并说出结果:

def test(x):
    # aka `return x in ("val1", "val2")` but thats another story
    if x=="val1" or x == "val2" :
      res = True
    else
      res = False    
    return res

def dostuff(inp):
    # i guess this function is supposed to do something with inp
    x = a_function_assigns_values_of_x(inp)
    if test(x):
      do_something
    else :
      dont_do_something

dostuff(inp)