【问题标题】:Generating Functions with Functions用函数生成函数
【发布时间】:2013-12-29 15:06:04
【问题描述】:

是的,我想使用函数生成函数。

在如何干净利落地让函数 1 将参数传递给函数 2(在函数 1 中定义)我遇到了困难。

def function1(*args):
    def function2(*args):
        print "I will do some stuff or whatever"

    return function2

new_function = function1()

new_function()
------->I will do some stuff or whatever

无论如何,我不知道如何将新参数传递给 function2,然后使用 function1 传递 new_function。

简而言之,我希望能够做到这一点:

new_function = function1(arg1, arg2, arg3)

并且将 arg1、arg2 和 arg3 传递到 new_function 但我无法正确获取结构。

【问题讨论】:

  • 你写的是装饰器,试试这个:Python decorators in 12 easy steps
  • @BurhanKhalid 这样的函数可以用作装饰器(实际上这是制作装饰器的最简单方法),但 OP 对应用装饰器语法没有表现出任何兴趣。也就是说,本教程在这里仍然适用和有用。 :) (特别是,装饰涉及将函数作为参数传递给外部 function1,这是 OP 可能会遇到的另一个概念级别。)

标签: python function arguments argument-passing


【解决方案1】:

function1的参数不同的名字,然后在function2定义中使用它们:

def division_factory(quotient):
    def divide(divisor):
        return divmod(quotient, divisor)
    return divide

divide_81_by = division_factory(81)
divide_81_by(3) # (27, 0)

【讨论】:

  • divmod 是错字吗?您正在退回它,但它似乎尚未定义。
  • divmod 是 Python 内置的。出于演示目的,我或多或少随意地选择了它。
猜你喜欢
  • 1970-01-01
  • 2021-11-22
  • 2021-10-06
  • 2012-04-07
  • 2021-09-17
  • 2018-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多