【问题标题】:Call a regular function through lambda [closed]通过 lambda 调用常规函数 [关闭]
【发布时间】:2021-09-04 18:54:44
【问题描述】:
def guru(funct, *args):
    funct(*args)


def printer_one(arg):
    return print(arg)


def printer_two(arg):
    print(arg)

guru(lambda: printer_one('printer 1 LAMBDA CALL'))
guru(lambda: printer_two('printer 2 LAMBDA CALL'))

谁能解释一下为什么函数调用的 lambda 后面没有逗号和冒号。

【问题讨论】:

  • 有什么问题?
  • 有什么问题?
  • guru(lambda a=printer_two: [a,printer_one('printer 1 LAMBDA CALL')])?

标签: python python-3.x function lambda


【解决方案1】:
def main():
    def guru(funct, *args):
        funct()

    def printer_one(arg):
        return print(arg)

    def printer_two(arg):
        print(arg)

    # CALL A REGULAR FUNCTION THRU A LAMBDA
    guru(lambda: printer_one('printer 1 LAMBDA CALL'))
    guru(lambda: printer_two('printer 2 LAMBDA CALL'))


if __name__ == '__main__':
    main()

当你使用 lambda 时,你定义一个函数并将其作为参数发送 所以 guru 中的 *args 是空的 funct = lambda 函数,所以你必须在 guru 中运行函数

【讨论】:

  • 我想知道为什么大师会原谅我们没有提供第二个论点。
  • 在 python 中,当您使用 *args 时,它会为您提供您在调用函数时输入的参数元组,如果您不传递任何参数,它只会返回空元组,这完全没问题。如果你喜欢 def func(a, b) 并且不提供任何参数,你就有问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-04
  • 2015-07-04
  • 2018-02-03
  • 2022-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多