-3

我完全是新手,即使我仍在阅读 python 文档,我也对语法有疑问。

我在 my.py 中有我的功能

def f1:
  pass

def f2:
  pass

def f3:
  pass

所以我想选择一个数字来调用一个函数,比如:

a = input('Insert the function number') 

"f$d"() %a #我试过类似的东西,很奇怪,但我是新手(有点愚蠢)。

对不起,如果这是一个愚蠢的问题,但我不知道我该怎么做。

4

2 回答 2

1

Python 的函数是标准对象,如整数、字符串、列表等。将任意键(名称、数字等)映射到对象以便您可以通过键查找对象的规范方法是使用dict. 所以:

 def func1():
     print "func1"

 def func2():
     print "func1"

 def func3():
     print "func1"


functions = {
    "key1": func1,
    "key2": func2,
    "key3": func3,
    }


while True:
    key = raw_input("type the key or 'Q' to quit:")
    if key in functions:
        # get the function
        f = functions[key]
        # and call it:
        f()
   elif key == "Q":
        break
   else:
        print "unknown key '%s'" % key
于 2013-10-07T15:36:34.393 回答
1

你可以很容易地做到这一点。列出您的功能:

list_func = [f1, f2, f3]

并执行:

a = int(input('insert the function number: ') #get the input and convert it to integer
list_func[a]() #execute the function inputted

或者没有 list_func:

inp = int(input('insert the function number: ') #get the input and convert it to integer
eval('f%d'%inp) 

请记住,不要eval()经常使用。这有点不安全。

或者,您可以从 中调用它globals(),它能够返回全局变量和函数的字典:

globals()['f%d'%inp]()

不,就是这样。希望这可以帮助!

于 2013-10-07T14:10:29.467 回答