我目前有两个Python3脚本:chooseFunc.py和testFuncs.py
我的目标是在前一个脚本中编写一个函数chooseFunction
,然后导入该函数以便在后一个脚本中使用。在执行testFuncs.py中的chooseFunction()
时,它应该显示testFuncs.py中存在的函数,并允许用户选择要运行的func()
。func
没有args
用于手头的目的
我创建了一个函数chooseFunction
,如下所示:
def chooseFunction(module):
funcList = []
for key, value in module.__dict__.items():
if callable(value) and value.__name__ !='<lambda>' and value.__name__ !='chooseFunction':
funcList.append(value)
for funcIdx, myFunc in enumerate(funcList):
print(funcIdx, myFunc.__name__ )
chosenIdx = int(input('Choose function... ·\n'))
return funcList[chosenIdx]()
当前,在testFuncs.py中执行时,如下所示:
from chooseFunc import chooseFunction
import sys
def func1():
print('func1')
def func2():
print('func2')
chooseFunction(module=sys.modules[__name__])
必须提供最后一行的参数module=sys.modules[__name__]
如何更改此行为,以便chooseFunction
检索testFuncs.py,中存在的函数列表,而不必提供上述module
参数
对于任何潜在的不一致提前道歉,这是我在堆栈交换上的第一个条目。。。感谢您的反馈
不完全符合您需要的规范(即,这只是一个1文件解决方案):
可以使用^{} 获取global symbol table,并生成一个列出所有^{} 函数的iterable
作为字典:
或作为列表:
示例用途:
终端输出:
相关问题 更多 >
编程相关推荐