2013-04-29 108 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()返回无