我告诉我第1行和第5行(对调试/编程不熟悉,不确定是否有帮助)
def hi():
print 'hi'
def loop(f, n): #f repeats n times
if n<=0:
return
else:
f()
loop(f, n-1)
loop(hi(), 5)
hi
TypeError: 'NoneType' object is not callable
为什么它会给我这个错误?
答案 0 :(得分:50)
您希望将函数 object hi
传递给loop()
函数,而不是将调用的结果传递给hi()
(None
hi()
,因为>>> loop(hi, 5)
hi
hi
hi
hi
hi
不会返回任何内容。
所以试试这个:
>>> print hi()
hi
None
>>> print hi
<function hi at 0x0000000002422648>
也许这会帮助你更好地理解:
{{1}}
答案 1 :(得分:3)
为什么它会给我这个错误?
因为您传递给loop
函数的第一个参数是None,但您的函数期望一个可调用对象,而None对象不是。
因此,你必须传递callable-object,在你的情况下是hi
函数对象。
def hi():
print 'hi'
def loop(f, n): #f repeats n times
if n<=0:
return
else:
f()
loop(f, n-1)
loop(hi, 5)
答案 2 :(得分:2)
你不应该将调用函数hi()传递给loop()函数,这将给出结果。
constructor(public db: AngularFireDatabase) {
let currentUser = firebase.auth().currentUser;
this.uid = currentUser.uid;
this.getUser().subscribe(u=>{
console.log('[constructor]user: ', u);
});//subscribe to the observable.
}
答案 3 :(得分:0)
我遇到错误“ TypeError:'NoneType'对象不可调用”,但是出现了另一个问题。 基于上述线索,我能够进行调试并正确完成! 我面临的问题是: 我已经写了custome Library,尽管我已经提到它,但我的文件无法识别
example:
Library ../../../libraries/customlibraries/ExtendedWaitKeywords.py
the keywords from my custom library were recognized and that error was resolved only after specifying the complete path, as it was not getting the callable function.