如何使用变量作为其他文件的名称来调用函数

时间:2019-04-05 18:13:21

标签: python

如果使用变量名,Python将不允许我从同一目录中的另一个文件中调用函数。

我尝试了exec()

def Index():
    Functions = ["","Decimal_Into_Hex"]
    for x in range(1,len(Functions)):
        print(x,Functions[x])
    try:
        Function_To_Call = int(input("Which task would you like to call: "))
    except:
        print("Please enter a number")
        Index()
    else:
        FileName = Functions[Function_To_Call]
        Function = Functions[Function_To_Call]+"()"
        try:
            import FileName as Imp
        except:
            print("Not a file")
            Index()
        else:
            Imp.Function

Index()

应该从也称为Decimal_Into_Hex的文件中获取函数Decimal_Into_Hex,其目的是能够从一个单一的组织空间调用函数,但是它只会出错。我已经通过放置实际的文件名和函数名来使其工作了,但是我想使其仅从列表中的变量中调用。

2 个答案:

答案 0 :(得分:0)

我相信您的问题出在这一行:

  

Function = Functions [Function_To_Call] +“()”

起飞+"()",然后放()。应该将函数作为函数调用,而不是像现在这样被称为混合函数。

答案 1 :(得分:0)

这应该可以帮助您入门。

import importlib                             # import a module to help you import so that you can import with your import             

filename = function = 'Decimal_To_Hex'

imp = importlib.import_module(filename)      # imports the module 'Decimal_To_Hex'
getattr(imp, function)()                     # calls Decimal_To_Hex.Decimal_To_Hex()