擅长:python、mysql、java
<p>函数中没有任何局部变量,因此<code>locals()</code>是一个空字典,因此它会引发<code>KeyError</code>。你知道吗</p>
<p>与其依赖于<code>locals()</code>(或<code>globals()</code>)函数,您只需将变量传递给函数:</p>
<pre><code>def pingz(host):
system('ping -c 5 %s' % host)
.
.
.
ab = raw_input("Please enter the Domain Name/IP Address:\n")
pingz(ab)
</code></pre>
<p>与使用<code>locals()</code>或<code>globals()</code>相比,该方法是优选的。
它更具可读性,更清晰,更不容易出错,特别是当您计划修改函数中的可变对象时。你知道吗</p>
<p>另外,由于<code>globals</code>和<code>locals</code>都是基本的字典,它们会强制您使用唯一的变量名,并且没有理由让2个函数的局部变量有唯一的名称(例如,ping和traceroute函数都应该有一个名为<code>host</code>的变量)。你知道吗</p>