2010-12-09 82 views
1
List_of_subject = ['add user', 'modify user', delete user'] and so on 

我有一个变量称为主题。所以根据主题调用其他功能。 像add_user,modify_user,delete_user等。需要帮助调用函数

所以当我的主题是'add_user' 我想调用add_user函数。我可以将它称为正常函数调用。 但是我的list_of_subject正在不断增长。

我可以这样做:

List_of_subject.index(subject) 

我得到的指数。所以我想索引是1时调用add_user函数。 基本上我想把我的函数链接到list_of_subject列表。 或者可以这样做:`

if subject in list_of_subject: 
    if subject == 'add user' : 
     user = add_user() 
    else if subject == ' modify user' 
     user = modify_user() 

谢谢。

谢谢。

回答

8

在Python中,函数是first-class objects,所以你可以把它们放入一个字典:

fn = {'add user': add_user, 'modify user': modify_user} 

为了然后调用相关功能,用途:

user = fn[subject]() 
+0

是任何方式,我可以存储返回值。 – laspal 2010-12-09 11:15:55

0

A(相对)的不安全方式这样做会是

def add_user(): 
    (...) 

list_of_subject = ['add_user', 'modify_user', 'delete_user'] 

if subject in list_of_subject: 
    exec(subject + "()")