我刚刚开始学习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()两次?
答案 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.0
和I 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)