2012-03-19 36 views

Trả lời

36

Bạn muốn vượt qua các chức năng đối tượnghi-loop() chức năng của bạn, không phải là kết quả của một cuộc gọi để hi() (đó là None từ hi() không trả lại bất cứ điều gì).

Vì vậy, cố gắng này:

>>> loop(hi, 5) 
hi 
hi 
hi 
hi 
hi 

lẽ điều này sẽ giúp bạn hiểu rõ hơn:

>>> print hi() 
hi 
None 
>>> print hi 
<function hi at 0x0000000002422648> 
+1

Ohh Tôi hiểu, cảm ơn rất nhiều – Foxic

+2

Bạn được chào đón. Ngoài ra, bạn có thể muốn gọi hàm 'recurse' hoặc một cái gì đó tương tự vì nó không thực sự lặp lại ... –

+1

@ 30trix: nhớ chấp nhận câu trả lời nếu nó giải quyết được vấn đề của bạn. Chào mừng bạn đến với Stackoverflow. :) – Mizipzor

2

Tại sao nó lại cho tôi lỗi đó?

Bởi vì tham số đầu tiên của bạn, bạn vượt qua các loop chức năng là None nhưng chức năng của bạn đang chờ đợi một đối tượng có thể được gọi, mà None đối tượng không phải là.

Vì vậy, bạn phải chuyển đối tượng có thể gọi trong trường hợp của bạn là đối tượng hàm 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) 
0

Bạn không được chuyển hàm gọi hàm hi() vào hàm loop(), Điều này sẽ cho kết quả.

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)   # Do not use hi() function inside loop() function 
Các vấn đề liên quan