0

関数を含む辞書があります。例えば:

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

たとえば、入力が次のようになっている場合、この関数をパラメーターで呼び出したいと思います。

myfunction some string

最初の単語は辞書のキーであり、他の単語はこの関数のパラメーター (または文字列を含む 1 つのパラメーター) です。

使用可能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 に答える