【问题标题】:Running function object in python在python中运行函数对象
【发布时间】:2023-03-28 23:05:01
【问题描述】:

我知道 python 函数也是对象,在定义它们之后,我将它们存储在字典中,但问题是如何在字典中运行这些存储的函数?我可以将这些函数保存在一个泡菜文件中,然后在我的代码中使用主题吗?是否可以?存储这些函数的一个例子但是运行主题的方式...我不知道!

>>> def a():
    print('hello')
>>> b={'a':a}
>>> b['a']
<function a at 0x00000000033AE620>
>>> b['a'].run()

我需要一些类似run的方法来实现这个功能,或者至少查看功能代码!

【问题讨论】:

    标签: python function object python-3.x


    【解决方案1】:

    就像调用普通函数一样调用它:

    >>> def a():
    ...     print('hello')
    ...
    >>> b={'a':a}
    >>> b['a']
    <function a at 0x02192468>
    >>> b['a']()
    hello
    >>>
    

    b['a'] 返回函数对象,因此将(...) 放在它之后会像任何其他函数对象一样调用它。

    【讨论】:

    • 谢谢,但我可以将这些函数存储在 pickle 文件中吗?
    • 是的;它们有一个资源指针,只要进程存在,它就永远是同一个实例。
    • @HamidFzM 选择函数是一个棘手的话题。 Pickle 将只存储函数的限定名称(例如mylib.util.add),并且 unpickle 将通过该名称查找它。有时这是一件好事,但它也有缺点(最重要的是,它在一些高级用例中不起作用)。替代方案(存储函数的代码)更糟糕。
    • 对于没有闭包的全局函数,使用pickle就可以了。允许重新导入名称的字符串存储在 pickle 中,而不是代码中。
    猜你喜欢
    • 2015-11-06
    • 2020-10-28
    • 1970-01-01
    • 2013-06-22
    • 2017-06-05
    • 2019-09-12
    • 2019-08-23
    • 2020-07-31
    • 1970-01-01
    相关资源
    最近更新 更多