为什么我的代码打印'无'?

时间:2013-08-18 07:43:36

标签: python class python-2.7 printing nonetype

我的代码可以在这里找到: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 个答案:

答案 0 :(得分:3)

似乎喜欢story.print_story()不返回任何内容。

如果函数未返回,则返回None

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

print删除print story.print_story()

答案 1 :(得分:0)

看起来你的print_story没有返回任何内容。只需将print story.print_story()替换为story.print_story()

以下是正在发生的事情的一个例子:

>>> def print_story():
...     print "story"
... 
>>> print print_story()
story
None
>>> print_story()
story

答案 2 :(得分:0)

代码中的所有函数调用都被函数的返回值替换。所有函数默认返回None。如果函数中有return语句,则返回return语句中指定的值而不是None。

在这一行:

print story.print_story()

函数调用:

story.print_story()

由print_story()的返回值替换。 print_story()方法中没有return语句,因此默认情况下它返回None,为您提供:

print None