Python使用来自用户输入的字符串调用函数

时间:2013-04-03 13:56:17

标签: python string function

在这个程序中,我使用一个用户输入来选择用户对齐某些文本的对齐方式,目前我只是在这样的语句中使用...

if alignment == "Left":
    line = left(new_string)
elif alignment == "Right":
     line = right(new_string)
elif alignment == "Centre":
    line = centre(new_string)
elif alignment == "Fully":
    line = fully(new_string)
else:
    print "Error."

但是,有没有一种方法可以摆脱这些语句,只需使用用户输入来调用左,右,中,完全函数。

由于 JT

3 个答案:

答案 0 :(得分:4)

alignment字符串映射到带字典的函数:

alignments = {'Left': left, 'Right': right, 'Centre', centre, 'Fully': fully}

try:
    line = alignments[alignment](new_string)
except KeyError:
    print "Error."

Python函数是第一类对象,因此您只需将它们作为值存储在字典中即可。

答案 1 :(得分:0)

func = globals().get(alignment.lower())
if not func:
    func = locals().get(alignment.lower())
func(new_string)

在调用时,您应确保 func 不是

答案 2 :(得分:0)

评估

try:
    eval(alignment.lower())(new_string)
except NameError:
    print 'Error'