擅长:python、mysql、java
<p>您需要在字典中存储一个返回字符串的<em>函数,而不是字符串本身</p>
<p>最简单的是,可以使用<code>lambda</code>语法作为匿名函数执行此操作:</p>
<pre><code>answers = {
'x': secondfunc,
'y': lambda: 'hello world'
}
</code></pre>
<p>(将此字典命名为<code>dict</code>是一种不好的做法,因为它隐藏了内置的<code>dict</code>,因此我将在这里使用更好的名称。)</p>
<p>当然,<code>secondfunc</code>不应该<em>打印</em>字符串,但是<em>也应该返回</em>字符串,因为打印已经是<code>mainfunc</code>的工作了(另请参见:<a href="https://stackoverflow.com/questions/3881434/difference-between-returns-and-printing-in-python">Difference between returns and printing in python?</a>):</p>
<pre><code>def secondfunc():
return 'hi world'
</code></pre>
<p>现在<code>print(answers['x']())</code>和<code>print(answers['y']())</code>正在平等地工作</p>
<p>要使用dictionary<code>.get()</code>方法创建默认答案,它还需要是一个返回字符串的函数:</p>
<pre><code>def mainfunction():
answers = {
'x' : secondfunc,
'y' : lambda: 'hello world'
}
while True:
inpt = input('@')
z = answers.get(inpt, lambda: 'Default text')()
print(z)
</code></pre>