【发布时间】:2018-12-23 20:42:00
【问题描述】:
我参考了以下主题,我不认为这篇文章与其中任何一个重复:
- Calling a function of a module by using its name (a string)
- Python Call Function from String
- Use a string to call function in Python
例如,假设我有一个字符串data_type = "int",我想直接用该字符串调用内置函数int。顺便说一句,我不能拥有data_type = int,因为data_type 实际上是从JSON 文件加载的,即data_type 始终是一个字符串或None。
我最好(最简洁)的尝试是eval(data_type)("4"),但正如人们所建议的那样,eval 似乎不是一个好的选择,无论如何都应该避免。
另一种方法是创建像data_type_dic = {"int": int, "float": float} 这样的字典并执行data_type_dic[data_type]("4")。然而,对我来说,创建该词典就像是在“重新发明轮子”。
由于int 是内置函数,而不是模块中的方法,所以getattr 似乎行不通。也不是自定义函数,所以locals()[data_type]给KeyError。
那么用相应的字符串调用内置函数的最佳方法是什么?
【问题讨论】:
-
使用你所说的字典是最简单的解决方案。不想矫枉过正
-
{item.__name__:item for item in (int, float)}
标签: python function-calls