首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果应该用列表或变量调用模块,那么如何调用Python中的一个模块的函数?

如果应该用列表或变量调用模块,那么如何调用Python中的一个模块的函数?
EN

Stack Overflow用户
提问于 2022-06-28 18:36:37
回答 3查看 46关注 0票数 1

我有一个模块,在模块中是一个包含多种功能的子组件。我需要遍历包含模块名称的名称列表,并调用函数。这不起作用,“因为模块没有属性列表”。如何使listx作为模块的子组件而不是"list“名称调用。

档案1:

代码语言:javascript
复制
def x():
   print('x')

def y():
   print('y')

def z():
   print('z')

档案2:

代码语言:javascript
复制
import module # containing functions x(),y(),z()
list = ['x','y','z']
for x in list:
   module.list[x]()
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-06-28 19:07:21

试试getattr()

代码语言:javascript
复制
import module

lst = ["x", "y", "z"]

for item in lst:
    getattr(module, item)()

指纹:

代码语言:javascript
复制
<function x at 0x7f2c56129e50>
<function y at 0x7f2c56129f70>
<function z at 0x7f2c560e4c10>
票数 1
EN

Stack Overflow用户

发布于 2022-06-28 19:06:52

您可以使用getattr访问模块的“内容”。

使用dir“内省”模块的内容:

代码语言:javascript
复制
import my_module

func_names = ['x','y','z']
callable_funcs = []

for stuffs in dir(my_module):
    if stuff in func_names:
        callable_funcs.append(getattr(my_module, stuff))

# make a dictionary
funcs = dict(zip(func_names, callable_funcs))

# usage
x = funcs['x']
print(x())

另一种使用getattrhasattr的方法

代码语言:javascript
复制
import my_module

func_names = ['x','y','z']
callable_funcs = []

for f_name in func_names:
    if hasattr(my_module, f_name):
        callable_funcs.append(getattr(my_module, f_name))

# make a dictionary
funcs = dict(zip(func_names, callable_funcs))

# usage
x = funcs['x']
print(x())

这也可以通过字典理解来完成:

代码语言:javascript
复制
import my_module

func_names = ['x','y','z']

funcs = {f_name: getattr(my_module, f_name) for f_name in func_names if hasattr(my_module, f_name)}
票数 0
EN

Stack Overflow用户

发布于 2022-06-29 07:33:34

你为什么不把函数存储在列表中呢?

代码语言:javascript
复制
>>> def x():
...     print("x")
... 
>>> def y():
...     print("y")
... 
>>> functions = [x, y]
>>> for f in functions:
...     f()
... 
x
y
>>> 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72791585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档