任何人都可以在下面的代码中告诉我什么是错的? (在Python 2.7)Python中的循环函数
def echo(msg):
print msg
def loop(x,y):
a = 0
while (a < x + 1):
a = a + 1
y
loop(5,echo("ok"))
我应该得到“确定”五次,而是我只是得到“确定”一次,无论什么 量我集X是。
任何人都可以在下面的代码中告诉我什么是错的? (在Python 2.7)Python中的循环函数
def echo(msg):
print msg
def loop(x,y):
a = 0
while (a < x + 1):
a = a + 1
y
loop(5,echo("ok"))
我应该得到“确定”五次,而是我只是得到“确定”一次,无论什么 量我集X是。
回声(“OK”)正在将它传递给可能的功能之前评估,这是你真正想要
def loop(x,y, *args):
a = 0
while (a < x + 1):
a = a + 1
y(*args)
def echo(msg):
print msg
loop(5,echo, "ok")
也谢谢你,因为这个工程! :) – user1
这是因为你”当您致电loop
时重新评估echo("ok")
。
你可能想要做的是在每次迭代时调用echo("ok")
。
def echo(msg):
print msg
def call_echo_ok():
echo("ok")
def loop(x,y):
a = 0
while (a < x + 1):
a = a + 1
y()
loop(5, call_echo_ok)
请注意,这可以使用lambda函数更简洁地完成。
def echo(msg):
print msg
def loop(x,y):
a = 0
while (a < x + 1):
a = a + 1
y()
loop(5, lambda: echo('ok'))
非常感谢! – user1
'echo(“ok”)'打印*正确然后*评估为'无'。在'y'上面加上'print a'并在'while'上面加上'print'start''以查看我的意思。如果你想推迟函数或lambda中的评估传递(然后用'()'调用它)。 – 2013-03-29 04:38:15