我有一个通用函数,我希望根据预定义变量的值更改名称。不确定在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] 删除。
我来说两句