当我尝试将函数作为整数返回,然后在另一个函数中使用该整数时,该参数变为类型'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函数可以作为参数调用,所以现在我不确定我做错了什么。
答案 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)