Python参数和函数

时间:2013-01-15 02:38:46

标签: python

我刚刚开始学习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()两次?

3 个答案:

答案 0 :(得分:7)

您的代码print_twice(lol())表示执行lol()并将其返回值传递给print_twice()。由于您没有为lol()指定返回值,因此返回None。因此,lol()在执行时会打印一次,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(),而不是传递lol返回值,然后我们在{{}中执行两次1}}。

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

如何按预期运行:

def lol():
    print "lol"

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

run_twice(lol)