python - 在 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
.
那么用相应的字符串调用内置函数的最佳方法是什么?
解决方案
最好的方法仍然是字典,但是:
>>> import builtins
>>> getattr(builtins, 'int')
<class 'int'>
推荐阅读
- c# - 为什么我的 PowerShell 脚本在 C# 应用程序中不起作用?
- c# - 收集数据(从 frm1 调用一个收集器方法到 frm2)
- python - Python/Numpy - 新数组中简单线性回归的返回斜率
- youtube-data-api - GSuite API 凭据上的品牌 YouTube 频道出现 403 org_internal 错误
- java - 从字符串中删除自定义标签,然后格式化其内容
- sorting - Vuetify 使用什么比较器对数据表 String 列进行排序
- java - 找不到javac包
- tkinter - PIL 图像导入错误以及如何在 Tkinter 应用程序中显示图像
- r - 值很少的闪亮 R 滑块
- java - TCP 服务器客户端,客户端仅在服务器套接字关闭时打印传入字符串