1

相对较新的python。现在我遇到了以下问题,我设置了一个字典,这样当我给出某个输入时,它会执行定义的函数,但即使我将输入设置为不执行该函数,它仍然会执行。这基本上是代码的样子。

options = []

def function0(str): print(str,"0")

str = "blahblahblah"

operations = {0:function0(str)}

for i in range(len(options)): operations[options[i]]

此代码仍在打印出 function0 输出。我还得出结论,它在我设置字典“操作”后立即执行该功能。为什么会这样,我怎样才能让它不呢?

4

2 回答 2

5

代码被执行是因为你调用了函数:计算结果为with作为参数function0(str)的返回值。function0str

如果您只想将函数对象放在 dict 中以供进一步使用,请执行

operations = {0: function0}

一些旁注:

  1. 不要str用作变量名。str是一个内置类型,你不应该用你的变量来隐藏这个名字。
  2. 使用 an 循环以int将其用作索引是非pythonic。另请注意,您没有调用代码中的函数。您的循环应如下所示:

    for op_index in operations:
         operations[op_index](mystr)
    

    或者:

    for op in operations.values():
        op(mystr)
    
于 2013-01-15T18:40:55.553 回答
2

这将在您在控制台中键入代码时发生,因为每一行都会立即进行评估。

你可能打算做的是:

operations = {0:function0}
for i in options:
    operations[i](str)

请注意,在运行序列时不需要显式计数器。所以你不需要这个range(len(options))部分。

于 2013-01-15T18:40:52.470 回答