Python参数和函数

Python参数和函数,python,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 Non

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

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

这就是你想要的:

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

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



print_twice(lol)

我们现在不是传递函数
lol()
,而是传递函数
lol
,然后在
print\u tweep()
中执行两次,您的代码
print\u tweep(lol())
是说执行
lol()
并将其返回值传递到
print\u tweep()
。由于没有为
lol()
指定返回值,因此它返回
None
。因此,lol()在执行时打印一次,并且
print\u()中的
print
语句都打印两次(
print传递的
None
值)

这就是你想要的:

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

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



print_twice(lol)

我们现在不是传递返回值
lol()
,而是传递函数
lol
,然后在
print\u twitter()

中执行两次。您应该注意,打印与返回不同


当您两次调用
print\u(lol())
时,它将首先调用
lol()
,它将打印
-1.0
,并且
我希望这可以工作
并返回
None
,然后它将继续调用
print\u两次(None)
将调用
print None
两次。

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


当您两次调用
print\u(lol())
时,它将首先调用
lol()
,它将打印
-1.0
,并且
我希望这能起作用,并返回
None
,然后它将继续调用
print\u两次(None)
,这将调用
print None
两次。

您如何按预期运行:

def lol():
    print "lol"

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

run_twice(lol)

如何按预期运行:

def lol():
    print "lol"

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

run_twice(lol)

我怎样才能更改它,使它可以打印两次?而不是一个也不返回。这是因为函数在print_中第一次调用两次(lol())后就终止了吗?我如何更改它以使其打印两次?而不是一个也不返回。这是因为函数在print_中第一次调用两次(lol())后就终止了吗?我如何更改它以使其打印两次?而不是一个也不返回。这是因为函数在print_tweep(lol())中第一次调用时终止吗?它将打印两次,尝试执行
print_tweep('foo')
,您只需确保其参数是字符串,在这种情况下,您可以更改
lol
,使其返回一些内容
def lol:返回'foo'
然后将'foo'打印两次(lol())
将打印两次。我如何更改它使其打印两次?而不是一个也不返回。这是因为函数在print_tweep(lol())中第一次调用时终止吗?它将打印两次,尝试执行
print_tweep('foo')
,您只需确保其参数是字符串,在这种情况下,您可以更改
lol
,使其返回一些内容
def lol:返回'foo'
然后
print_两次(lol())
将打印'foo'两次。