如何在Python中获取包含当前正在执行的函数的变量?我不想要这个功能的名字.我知道我可以使用inspect.stack获取当前的函数名称.我想要实际的可调用对象.这可以在不使用inspect.stack检索函数的名称然后eval输入名称来获取可调用对象的情况下完成吗?
编辑:我有理由这样做,但它甚至不是一个好的.我正在使用plac来解析命令行参数.你可以通过do来使用它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])
Run Code Online (Sandbox Code Playgroud)
但是这个实现依赖于具有名称的函数,我认为这不是太繁重.我永远不会这样做plac.call(lambda ...).
从长远来看,要求plac的作者实现print_help方法来打印最近使用plac或类似东西调用的函数的帮助文本可能更有用.
我试图在我的Python编程中使用一些AOP,但我没有任何存在的各种库的经验.
所以我的问题是:
Python存在哪些AOP支持?它们之间的不同库有什么优势?
我找到了一些,但我不知道他们如何比较:
在哪种情况下我会使用这些?
我有两个用Python编写的应用程序,它们通常有计算税收和其他金钱的方法.我希望能够编写一个功能的"骨架",并在运行时自定义它,例如更改地方税的应用方式(按国家,州或城市等),而不必重载全栈.
我的目标是创建一个简单的函数,为带有已绘制变量名称的图形添加标题。
到目前为止,我有:
def comparigraphside(rawvariable, filtervariable, cut):
variable = rawvariable[filtervariable > 0]
upperbound = np.mean(variable) + 3*np.std(variable)
plt.figure(figsize=(20,5))
plt.subplot(121)
plt.hist(variable[filtervariable <= cut], bins=20, range=(0,upperbound), normed=True)
plt.title("%s customers with filter less than or equal to %s" % (len(variable[filtervariable <= cut]), cut))
plt.subplot(122)
plt.hist(variable[filtervariable > cut], bins=20, range=(0,upperbound), normed=True)
plt.title("%s customers with filter greater than %s" % (len(variable[filtervariable > cut]), cut));
Run Code Online (Sandbox Code Playgroud)
在哪里:
plt.title("%s customers with filter less/greater...")
Run Code Online (Sandbox Code Playgroud)
我很乐意说:
plt.title("%s customers with %s less/greater...")
Run Code Online (Sandbox Code Playgroud)
目前,我能想到的唯一解决方案是为我的变量制作一个字典,这是我想避免的。任何帮助都将不胜感激。