如何将当前函数存入一个变量中?
- 论坛
- 如何将当前函数存入一个变量中?
7 浏览
如何将当前函数存入一个变量中?
如何在Python中获取包含当前执行函数的变量?我不想要函数的名称。我知道可以使用inspect.stack
来获取当前函数的名称。我想要的是实际的可调用对象。是否可以在不使用inspect.stack
来检索函数名称,然后使用eval
来获取可调用对象的情况下完成?
编辑:我有一个理由这样做,但这并不是一个好理由。我正在使用plac来解析命令行参数。你可以通过plac.call(main)
来使用它,它会从"main"的函数签名生成一个ArgumentParser对象。在"main"内部,如果参数有问题,我希望退出并显示一个包含ArgumentParser对象帮助文本的错误消息,这意味着我需要通过调用plac.parser_from(main).print_help()
来直接访问此对象。如果能够这样写就好了:plac.parser_from(get_current_function()).print_help()
,这样我就不需要依赖函数被命名为"main"。目前,我实现"get_current_function"的方法是:
import inspect def get_current_function(): return eval(inspect.stack()[1][3])
但这种实现依赖于函数有一个名称,我想这不是太繁琐的。我永远不会使用plac.call(lambda ...)
。
从长远来看,最好是要求plac的实现一个print_help方法,用于打印最近使用plac调用的函数的帮助文本,或者类似的功能。