python - 在 from-import 语句中使用 python 函数中的输入
问题描述
我想在文件“a.py”的函数中使用输入(字符串)来指向另一个python代码文件“b.py”。在 b.py 代码中,我有一些功能,我想使用。
我努力了:
b.py.
def function1(x,y):
s=x+y
print(s)
return
function1(2,4)
(b.py 位于 a.py 的子文件夹中,名为 .app.dashapp1)
和 a.py:
def function(func_name):
name = "app.dashapp1." + func_name
__import__(name)
function1(2, 4)
return
function("b")
当我运行 a.py 时,我最终得到了错误消息:
“NameError:名称'function1'未定义”
:(
会帮我很多。我来自 matlab/R 并且是 Python 的新手(虽然喜欢它)和这个论坛。
谢谢!
解决方案
建议使用importlib.import_module
而不是__import__
:
a.py
:
import importlib
def func(name):
module_str = "dashapp1." + name # get module str
module = importlib.import_module(module_str) # import module from str
f = getattr(module, "function") # get function "function" in module
f(1, 2) # execute function "function" in module
func("b")
dashapp1/b.py
:
def function(a, b):
print("{a} - {b}".format(a=a, b=b))
输出:
$ python3.7 a.py
1 - 2
推荐阅读
- apache-nifi - 使用 nifi - 我必须调用具有多个 API 端点的 API
- sql - Electron 和 Sqlite:SQLITE_NOTADB:文件不是数据库
- database - 如何从 MongoDb 的日期字段中查找最近的日期?
- svelte - Svelte 如何捕获浏览器后退按钮或卸载?
- ruby-on-rails - 我可以使用 Arel 创建的别名作为包含的一部分而不是加入来进行急切获取吗
- java - 错误:415 - 尝试使用 python 作为后端上传图像时,android 中出现不支持的媒体类型错误
- bash - 如何使用 shell 在所需的挂载点上挂载不同大小的 Nvm EBS 卷
- kubernetes - Kubernetes 为所有 Pod 提供服务,另一个只为领导者提供服务
- javascript - 如何使用 jQuery 或 AJAX 显示 ColdFusion 函数的返回值
- google-places-api - 为什么我没有从 Google Places API 获得多种类型的结果?