繁体   English   中英

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

[英]Why is my code printing 'None'?

我的代码可以在这里找到: 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 为什么会这样? 代码有什么问题?

看起来像story.print_story()不会返回任何内容。

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

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

print story.print_story()删除print

看起来你的print_story没有返回任何东西。 只需用print story.print_story()替换print story.print_story() story.print_story()

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

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

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

在这一行:

print story.print_story()

函数调用:

story.print_story()

由print_story()的返回值替换。 print_story()方法中没有return语句,因此默认情况下它返回None,这样就可以了:

print None

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM