擅长:python、mysql、java
<p>代码中的问题是,在没有首先定义<code>n</code>的情况下,将变量<code>n</code>传递给<code>goodbye(n)</code>函数。由于名称<code>n</code>没有指向任何值,因此它是一个未解决的引用。你知道吗</p>
<p>在<code>main()</code>中定义<code>n</code>不会使<code>main()</code>之外的函数可以访问它。这种规则称为<strong>范围规则。变量的作用域是可以自由访问的代码区域,包括定义变量的区域。你知道吗</p>
<p>在这种情况下,<code>n</code>的作用域仅限于<code>main()</code>函数。这意味着<code>n</code>对于<code>main()</code>之外的函数不可用;因此<code>n</code>是未定义的,您不能将其(不存在的)值传递给另一个函数。你知道吗</p>
<p>您可以在</em><code>main()</code>之外定义<code>n</code><em>,以便其他函数可以访问它:</p>
<pre><code>...
def main():
hello(n) # here n references a global variable
printchoice()
kalle()
...
# n is defined globally outside main()
n = askforname()
main()
goodbye(n)
</code></pre>