【问题标题】:what is returning a function?什么是返回函数?
【发布时间】:2022-12-31 01:35:02
【问题描述】:

所以,我的教授教过我们这个,但我不明白。我在 jupyter notebook 中运行代码,但没有任何反应。有人可以告诉我这段代码应该做什么吗?它与返回一个我不太了解的函数有关。

def make_logger(target):
    def logger(data):
        with open(target, 'a') as f:
            f.write(data + '\n')
    return logger

foo_logger = make_logger('foo.txt') #foo.txt will be created if not there already
foo_logger('Hello')
foo_logger('World')

我尝试在 python 中运行它,这给了我一个语法无效错误。

【问题讨论】:

  • 您是否看到在工作目录中创建了一个 foo.txt 文件?
  • 另外,请分享您在 Python shell 中遇到的语法错误。

标签: python


【解决方案1】:

make logger 返回一个函数 (logger),该函数接受一个参数并将其写入 make_logger 的参数提供的文件中。以下调用foo_logger 的行将数据传递给它,并让它将该数据写入日志文件。

【讨论】:

    【解决方案2】:

    在 Python 中,一切皆对象。就像您定义的任何变量一样,函数也是一个对象。

    我强烈建议通读这篇详细描述 [this][1] 的精彩文章

    在您粘贴的上述程序中,让我们分析以下行

    foo_logger = make_logger('foo.txt')
    

    结果返回记录器函数。

    现在记录器函数本身可以将任何参数作为数据并将其写入文件, 所以当你打电话给

    foo_logger('Hello')
    foo_logger('World')
    

    然后它将继续并将其附加到名为 foo.txt 的文件中,您将获得文件内容 你好 世界

    您可以通过执行 cat foo.txt 来检查 而且功能准确,不会产生任何语法错误。 [1]:https://dbader.org/blog/python-first-class-functions

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多