2013-04-29 136 views
2

我的問題是針對下面的代碼,爲什麼None沒有獲得打印來代替函數輸出,以及爲什麼函數輸出在其位置之前。在Python中的打印函數中打印函數

def print_spam(): 
    print('spam') 


def do_twice(r,ps): 
    g = ps() 
    print(r,'is a',g) 
    print(r,'is a',ps()) 

do_twice('xyz',print_spam) 

輸出是

spam 
xyz is a None 
spam 
xyz is a None 

回答

11

功能print_spam()return什麼。它只是print的一個聲明。

將其更改爲:

def print_spam(): 
    print('spam') 
    return 'spam' 

因爲你的函數不返回任何內容,則默認爲None。現在將函數輸出分配給g時,它將包含函數的返回字符串(spam)。

1

考慮與

g = ps 
print r,'is a', 
g() 

更換

g = ps() 
print(r,'is a',g) 

無論如何,正如一些其他的答案中指出,print_spam()返回無