试图在Python 3中将函数作为整数返回

时间:2018-01-26 03:00:55

标签: python function class arguments

当我尝试将函数作为整数返回,然后在另一个函数中使用该整数时,该参数变为类型'function'

示例:

def makeChoice():
    c = 0
    if input='yes':
        c = 1
    return int(c)

def choiceMade(c)
    if c == 1:
        print('finally this damn thing works')

while True:
    choiceMade(makeChoice)

如果我使用print(c)调试choiceMade(c),我得到“x980342处的函数”而不是整数,if / else语句永远不会为真。

我的印象是python函数可以作为参数调用,所以现在我不确定我做错了什么。

2 个答案:

答案 0 :(得分:4)

您需要致电makeChoice。在Python中,函数是对象,并且将函数(不调用它)传递给程序的各个部分是发送整个函数对象以便稍后调用。在这种情况下,您需要访问返回的对象,即整数:

while True:
   choiceMade(makeChoice())

另请注意,您需要在==中使用=代替makeChoice=用于分配,而==仅用于比较:

makeChoice

def makeChoice():
   c = 0
   if input=='yes':
      return int(c)

此外,函数标题:末尾需要choiceMade

def choiceMade(c):
   if c == 1:
     print('finally this damn thing works')

答案 1 :(得分:0)

另一种方法是延迟执行你的函数,从而修改你的choiceMade。因此,您仍然可以使用相同的方式调用函数choiceMade(makeChoice)

def makeChoice():
    c = 0
    if input == 'yes':
        c = 1
    return int(c)

def choiceMade(c):
    if c() == 1:
        print('finally this damn thing works')

while True:
    choiceMade(makeChoice)