2

我的问题是下面的代码为什么 None 代替函数输出打印以及为什么函数输出在其位置之前得到。

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
4

2 回答 2

11

该功能print_spam()没有return任何作用。这只是print一个声明。

将其更改为:

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

因为您的函数不返回任何内容,所以它默认为None. 现在,当将函数输出分配给 时g,它将包含函数 ( spam) 的返回字符串。

于 2013-04-29T06:20:42.430 回答
1

考虑更换

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

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

无论如何,正如其他一些答案所指出的那样, print_spam() 返回 None

于 2013-04-29T06:29:26.157 回答