【问题标题】:Save function in tuple without executing在元组中保存函数而不执行
【发布时间】:2011-11-24 17:12:41
【问题描述】:

我有一个像下面这样的元组:

self.tagnames = (('string', self.do_anything()),)

如果一个字符串与另一个匹配,它应该执行一个特定的函数。 但是,当我初始化self.tagnames时,它似乎已经执行了该函数。

如何在启动时不执行该功能来解决我的问题?

【问题讨论】:

    标签: python string function tuples


    【解决方案1】:
    self.tagnames = (('string', self.do_anything),)
    

    () 是一个函数调用。如果您想将调用推迟到以后,并且只包含函数引用而没有像这样的括号。

    【讨论】:

    • 只返回一个函数引用有一点魔力(问题是self 参数将包含在self.do_anything 返回的内容中)。
    【解决方案2】:
    self.tagnames = (('string', self.do_anything),)
    

    您通过使用带有参数列表的括号来调用函数:

    len 是一个函数,len(s) 在参数s 上调用该函数。只需使用函数的名称即可获得该函数。去掉带括号的参数列表,您将不再调用该函数。

    【讨论】:

      【解决方案3】:

      你应该去掉括号:

      self.tagnames = (('string', self.do_anything),)
      

      显然self.do_anything() 立即调用该方法,而不是self.do_anything 返回在 Python 中称为“绑定方法”的内容,即它是一个可调用对象,您可以只向其传递参数(如果有),这将导致在特定实例上调用方法。

      【讨论】:

      • 我不这么认为。看起来有人通过并否决了问题和所有答案,没有任何解释。
      猜你喜欢
      • 1970-01-01
      • 2016-04-11
      • 1970-01-01
      • 2023-04-10
      • 2021-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-22
      相关资源
      最近更新 更多