任何人都可以在下面的代碼中告訴我什麼是錯的? (在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