2013-08-18 215 views
1

我的代碼可以在這裏找到:https://github.com/thekarangoel/HackerNewsAPI/blob/master/hn.py爲什麼我的代碼打印'無'?

測試用例是這樣的:

from hn import HN 

hn = HN() 

for story in hn.get_top_stories()[:10]: 
    print story.print_story() 
    print '*' * 50 
    print '' 

這將打印像這樣我的輸出:

..... 
..... 
..... 
************************************************** 

Rank: 3 
Story ID: 6231993 
Title: Pipe Dream? 3D-Printed Model of Hyperloop Created 
Link: http://news.yahoo.com/pipe-dream-3d-printed-model-hyperloop-created-192033757.html 
Domain: yahoo.com 
Points: 1 
Submitted by: evo_9 
Number of comments: 0 
Link to comments: http://news.ycombinator.com/item?id=6231993 
None 
************************************************** 

Rank: 4 
Story ID: 6231992 
Title: What colour are your bits? 
Link: http://ansuz.sooke.bc.ca/entry/23 
Domain: bc.ca 
Points: 1 
Submitted by: grey-area 
Number of comments: 0 
Link to comments: http://news.ycombinator.com/item?id=6231992 
None 
..... 
..... 

通知的None在每次打印結束?爲什麼在那裏?代碼有什麼問題?

回答

3

似乎喜歡story.print_story()不會返回任何東西。

如果函數沒有返回,則返回None

>>> def a(): 
...  print 1 
... 
>>> print a() 
1 
None 

print story.print_story()刪除print

0

看起來你的print_story不會返回任何東西。只需將print story.print_story()替換爲story.print_story()即可。

這裏是正在發生的事情的一個例子:在你的代碼

​​
0

所有的函數調用該函數的返回值被替換。所有函數默認都返回None。如果你的函數中有return語句,那麼return語句中指定的值將被返回而不是None。

在這一行:

print story.print_story() 

函數調用:

story.print_story() 

由print_story的返回值()取代。 print_story()方法沒有return語句,所以默認返回None,給你這個:

print None