首页 > 解决方案 > 在 Python 中使用字符串调用内置函数

问题描述

我参考了以下主题,我不认为这篇文章与其中任何一个重复:

  1. 使用模块名称(字符串)调用模块的函数
  2. 字符串中的 Python 调用函数
  3. 在 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.

那么用相应的字符串调用内置函数的最佳方法是什么?

标签: pythonfunction-calls

解决方案


最好的方法仍然是字典,但是:

>>> import builtins
>>> getattr(builtins, 'int')
<class 'int'>

推荐阅读