谁能告诉我以下代码有什么问题?(在 Python 2.7 中)
def echo(msg):
print msg
def loop(x,y):
a = 0
while (a < x + 1):
a = a + 1
y
loop(5,echo("ok"))
我应该得到“ok”五次,但我只会得到“ok”一次,不管我设置 x 是多少。
echo("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")
echo("ok")
这是因为您在调用时正在评估loop
。
您可能想要做的是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'))
你可以试试这个:
def loop(times,message):
for i in range(times):
print message
loop(5,"Ok")