相关疑难解决方法(0)

使用其名称(字符串)调用模块的函数

在Python程序中给定带有函数名称的字符串调用函数的最佳方法是什么.例如,假设我有一个模块foo,我有一个内容为的字符串"bar".什么是最好的打电话foo.bar()

我需要获取函数的返回值,这就是我不仅仅使用它的原因eval.我想通过使用eval定义一个返回该函数调用结果的临时函数来做到这一点,但我希望有更优雅的方法来做到这一点.

python object

1580
推荐指数
15
解决办法
63万
查看次数

在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.

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

python function-calls

0
推荐指数
1
解决办法
1302
查看次数

标签 统计

python ×2

function-calls ×1

object ×1