gpt4 book ai didi

python - 是否有更 Pythonic 的方式通过字符串名称访问函数?

转载 作者:太空宇宙 更新时间:2023-11-03 12:53:24 24 4
gpt4 key购买 nike

我有几个函数(硬编码,我不希望 Python 计算导数,实际上函数更复杂):

def f(x): return x
def g(x): return x ** 2
def f_prime(x): return 1
def g_prime(x): return 2 * x

和一个函数列表:

myfunctions = [f, f, g, f]

如何获取相关“prime”函数的列表?

我在想:

myderivatives = [globals()[function.__name__ + '_prime'] for function in myfunctions]

它有效:

[<function f_prime at 0x00000000022CF048>, <function f_prime at 0x00000000022CF048>, <function g_prime at 0x00000000022CF0B8>, <function f_prime at 0x00000000022CF048>]

但是否有更 Pythonic 的方法来获取与原始版本关联的“主要”函数列表?


还有一个极端情况:

from module1 import thisfunction as f
def f_prime(x):
pass

globals()[f.__name__ + '_prime']
# doesn't work because f.__name__ + '_prime' is 'thisfunction_prime' and not 'f_prime'

最佳答案

定义一个字典来保存你的函数,然后使用列表理解:

funcd = {'f': f, 'g': g, 'f_prime': f_prime, 'g_prime': g_prime}

myderivatives = [func for name, func in funcd.items() if name.endswith('_prime')]

此解决方案的好处是它精确定义了您希望过滤的功能范围。不推荐使用 globals,而且极少需要。

关于python - 是否有更 Pythonic 的方式通过字符串名称访问函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53280267/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com