【问题标题】:python style: inline function that needs no inlining?python风格:不需要内联的内联函数?
【发布时间】:2010-10-22 18:52:58
【问题描述】:

我正在编写 gtk 代码。我经常有不需要闭包的简短回调,因为它们传递了它们需要的所有参数。例如,我在创建一些 gtk.TreeViewColumns 时有这个循环:

def widthChanged(MAINCOL, SPEC, SUBCOL, expandable):
    if expandable: return
    w = MAINCOL.get_width()
    SUBCOL.set_fixed_width(w)

cl.connect("notify::width", widthChanged, pnlcl, expand)

这可能效率低下,因为函数是在循环的每次迭代中创建的(附带问题:它实际上是,还是优化了?)。但是,我觉得如果我将所有这些单行代码都移到顶层,代码会更加混乱。有意见吗?

【问题讨论】:

  • 这个特殊的例子不能写成 cl.connect("notify::width", lambda maincol, spec, subcol, expandable: subcol.set_fixed_width(maincol.get_width()) if not expandable else无,pnlcl,扩展)......虽然不确定这是否或多或少可读,但至少它少了一个。
  • 是的,但我的观点是:它比拥有顶级函数效率低。也可能比这个版本可读性差,所以这两种方式都更糟=P

标签: python coding-style performance closures


【解决方案1】:

使用最易读的任何样式。除非您的代码分析工具告诉您该区域是热点,否则不要担心速度。

【讨论】:

    猜你喜欢
    • 2018-10-12
    • 2017-01-05
    • 2012-09-23
    • 2020-06-02
    • 2014-05-06
    • 1970-01-01
    • 1970-01-01
    • 2011-12-13
    相关资源
    最近更新 更多