0

我有包含函数的字典。例如:

def myfunction(parameter) = return "Function with parameter " % parameter
dictionary = {"myfunction" : myfunction}

现在我想用参数调用这个函数,例如,如果输入看起来像:

myfunction some string

第一个词是字典的键,其他词是这个函数的参数(或一个包含字符串的参数)。

可以使用eval()吗?以及如何将参数传递给我的函数?

感谢您的任何建议。

4

2 回答 2

2

这是一个通用示例:

>>> def hello(name='World'): print('Hello %s' % name)

>>> hello()
Hello World

>>> hello('Vist')
Hello Vist

>>> d = {'fun': hello}

>>> d['fun']()
Hello World

>>> d['fun']('Vist')
Hello Vist

具有可变数量参数的示例:

>>> def hello(*args): print('Hello %s' % ', '.join(args))

>>> hello()
Hello

>>> hello('Anna')
Hello Anna

>>> hello('Anna', 'Bob')
Hello Anna, Bob

>>> hello('Anna', 'Bob', 'Clara')
Hello Anna, Bob, Clara

>>> s = 'hello Diane Eric'

>>> d = {'hello': hello}

>>> d[s.split()[0]](*s.split()[1:])
Hello Diane, Eric
于 2013-10-16T06:01:47.903 回答
1

我会拆分您的输入字符串,并使用第一个块在字典中查找函数。然后将剩余的块传递给函数。

s = 'myfunction some string'
chunks = s.split()

func = dictionary.get(chunks[0])

if not func:
    print 'Not found'
    return

func(chunks[1:])
于 2013-10-16T06:01:54.830 回答