1

我刚开始学习 Python,我一直在搞乱输入不同的代码来练习学习,我编写了以下代码:

import math
def lol():
    print (math.cos(math.pi))
    print ("I hope this works")

def print_twice(bruce):
    print bruce
    print bruce



print_twice(lol())    

当我运行它时,我的输出是:

-1.0
I hope this works
None
None

为什么它不打印函数 lol() 两次?

4

3 回答 3

7

您的代码print_twice(lol())说要执行lol()并将其返回值传递给print_twice(). 由于您没有为 指定返回值lol(),因此它返回None。因此,lol() 在执行时会打印一次,并且 print 中的两个print语句都print_twice()传递了None.

这就是你想要的:

def lol():
    print (math.cos(math.pi))
    print ("I hope this works")

def print_twice(bruce):
    bruce()
    bruce()



print_twice(lol)

我们现在不是传递 的返回值,而是传递函数,然后我们在 中执行两次。lol() lolprint_twice()

于 2013-01-15T02:41:49.053 回答
2

您应该注意,打印不同于返回。

当您调用print_twice(lol())它时,它将首先调用lol()将打印-1.0I hope this works返回None,然后它将继续调用print_twice(None)将调用print None两次。

于 2013-01-15T02:42:09.253 回答
0

您如何按预期运行:

def lol():
    print "lol"

def run_twice(func):
    func()
    func()

run_twice(lol)
于 2013-01-15T02:44:36.950 回答