Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在为函数构建字典时,我的代码会自动执行该函数。我怎样才能阻止这一切?_Python_Dictionary_Python 3.x - Fatal编程技术网

Python 在为函数构建字典时,我的代码会自动执行该函数。我怎样才能阻止这一切?

Python 在为函数构建字典时,我的代码会自动执行该函数。我怎样才能阻止这一切?,python,dictionary,python-3.x,Python,Dictionary,Python 3.x,对python来说相对较新。现在我遇到了以下问题,我已经设置了一个字典,这样当我给出一个特定的输入时,它会执行定义的函数,但即使我设置输入不执行函数,它仍然会执行。下面是代码的基本情况 options = [] def function0(str): print(str,"0") str = "blahblahblah" operations = {0:function0(str)} for i in range(len(options)): operations[options[i]]

对python来说相对较新。现在我遇到了以下问题,我已经设置了一个字典,这样当我给出一个特定的输入时,它会执行定义的函数,但即使我设置输入不执行函数,它仍然会执行。下面是代码的基本情况

options = []

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

str = "blahblahblah"

operations = {0:function0(str)}

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

此代码仍在打印function0输出。我还得出结论,在我设置字典“操作”之后,它正在执行函数。为什么会这样?我怎样才能不这样做?

当您在控制台中键入代码时,会发生这种情况,因为每一行都会立即计算

您可能打算这样做:

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

请注意,在运行序列时,不需要显式计数器。因此,您不需要
范围(len(options))
部分。

在控制台中键入代码时会发生这种情况,因为每一行都会立即计算

您可能打算这样做:

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

请注意,在运行序列时,不需要显式计数器。因此,您不需要
范围(len(options))
部分。

执行代码是因为您调用函数:
function0(str)
str
作为参数计算
function0
的返回值

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

operations = {0: function0}

以下是一些旁注:

  • 不要将
    str
    用作变量名
    str
    是一种内置类型,您不应该用变量来隐藏此名称
  • 使用
    int
    循环将其用作索引是非音速的。还要注意,您没有在代码中调用函数。您的循环应该如下所示:

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


  • 执行代码是因为调用函数:
    function0(str)
    的计算结果为
    function0
    的返回值,参数为
    str

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

    operations = {0: function0}
    

    以下是一些旁注:

  • 不要将
    str
    用作变量名
    str
    是一种内置类型,您不应该用变量来隐藏此名称
  • 使用
    int
    循环将其用作索引是非音速的。还要注意,您没有在代码中调用函数。您的循环应该如下所示:

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


  • 我没有str作为变量,name,我只是用它作为填充来解释我的代码,但非常感谢。这很有帮助。我没有把str作为变量,name,我只是用它作为填充来解释我的代码,但非常感谢。那很有帮助。