在Python中参数化函数名称

伊比西

我有一个通用函数,我希望根据预定义变量的值更改名称。不确定在Python中是否可行:

n = 'abc'
def f{n}(x):
  print(x)
  
f{n}(3)

在上面,函数名称最终会变成“ fabc”吗?

威姆

可以使用代码生成+exec模式。也可以通过types.FunctionType直接实例化实例。但是,更简单的解决方案是保留通用名称,然后将动态名称的别名(对同一功能对象的另一种引用)注入所需的任何名称空间。

>>> def generic_function(x):
...     print(x ** 2)
... 
>>> dynamic_name = "func_abc"
>>> globals()[dynamic_name] = generic_function
>>> func_abc(3)
9

要注入其他可能是setattr调用的模块名称空间

setattr(other_mod, dynamic_name, generic_function)

您也可以根据需要重写函数的__name__属性,但是可能没有太多意义。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章