<p id="main-toc"><strong>目录</strong></p>
<p id="%E5%85%A8%E5%B1%80%E5%8F%98%E9%87%8F%E5%92%8C%E5%B1%80%E9%83%A8%E5%8F%98%E9%87%8F-toc" style="margin-left:40px;"><a href="https://blog.csdn.net/zh__quan/article/details/81837943#%E5%85%A8%E5%B1%80%E5%8F%98%E9%87%8F%E5%92%8C%E5%B1%80%E9%83%A8%E5%8F%98%E9%87%8F">全局变量和局部变量</a></p>
<p id="%C2%A0%20%C2%A0%20globals()%20%E5%87%BD%E6%95%B0%20%E5%92%8C%20locals%E5%87%BD%E6%95%B0-toc" style="margin-left:80px;"><a href="https://blog.csdn.net/zh__quan/article/details/81837943#%C2%A0%20%C2%A0%20globals%28%29%20%E5%87%BD%E6%95%B0%20%E5%92%8C%20locals%E5%87%BD%E6%95%B0"> globals() 函数 和 locals函数</a></p>
<p id="%C2%A0%20%C2%A0%20%E5%87%BD%E6%95%B0%E7%9A%84%E5%B5%8C%E5%A5%97%E5%AE%9A%E4%B9%89-toc" style="margin-left:80px;"><a href="https://blog.csdn.net/zh__quan/article/details/81837943#%C2%A0%20%C2%A0%20%E5%87%BD%E6%95%B0%E7%9A%84%E5%B5%8C%E5%A5%97%E5%AE%9A%E4%B9%89"> 函数的嵌套定义</a></p>
<p id="%E4%BD%9C%E7%94%A8%E5%9F%9F-toc" style="margin-left:40px;"><a href="https://blog.csdn.net/zh__quan/article/details/81837943#%E4%BD%9C%E7%94%A8%E5%9F%9F">作用域</a></p>
<p id="%C2%A0%20%C2%A0%20%E5%8F%98%E9%87%8F%E5%90%8D%E7%9A%84%E6%9F%A5%E6%89%BE%E8%A7%84%E5%88%99%3A-toc" style="margin-left:80px;"><a href="https://blog.csdn.net/zh__quan/article/details/81837943#%C2%A0%20%C2%A0%20%E5%8F%98%E9%87%8F%E5%90%8D%E7%9A%84%E6%9F%A5%E6%89%BE%E8%A7%84%E5%88%99%3A"> 变量名的查找规则:</a></p>
<p id="%C2%A0%20%C2%A0%20global%E8%AF%AD%E5%8F%A5-toc" style="margin-left:80px;"><a href="https://blog.csdn.net/zh__quan/article/details/81837943#%C2%A0%20%C2%A0%20global%E8%AF%AD%E5%8F%A5"> global语句</a></p>
<p id="%C2%A0%20%C2%A0%20nonlocal%20%E8%AF%AD%E5%8F%A5-toc" style="margin-left:80px;"><a href="https://blog.csdn.net/zh__quan/article/details/81837943#%C2%A0%20%C2%A0%20nonlocal%20%E8%AF%AD%E5%8F%A5"> nonlocal 语句</a></p>
<p id="%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20nonlocal%20%E8%AF%B4%E6%98%8E-toc" style="margin-left:80px;"><a href="https://blog.csdn.net/zh__quan/article/details/81837943#%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20nonlocal%20%E8%AF%B4%E6%98%8E"> nonlocal 说明</a></p>
<p id="lambda%20%E8%A1%A8%E8%BE%BE%E5%BC%8F%EF%BC%88%E5%8F%88%E7%A7%B0%E5%8C%BF%E5%90%8D%E5%87%BD%E6%95%B0%EF%BC%89-toc" style="margin-left:40px;"><a href="https://blog.csdn.net/zh__quan/article/details/81837943#lambda%20%E8%A1%A8%E8%BE%BE%E5%BC%8F%EF%BC%88%E5%8F%88%E7%A7%B0%E5%8C%BF%E5%90%8D%E5%87%BD%E6%95%B0%EF%BC%89">lambda 表达式(又称匿名函数)</a></p>
<hr id="hr-toc">
<h2>全局变量和局部变量</h2>
<p> 局部变量:<br> 定义在函数内部的变量称为局部变量(函数的形参也是局部变量)<br> 局部变量只能在函数内部使用<br> 局部变量在函数调用时才能够被创建,在函数调用结束后会自动销毁</p>
<p> 全局变量:<br> 定义在函数外部,模块内部的变量称为全局变量<br> 所有的函数都可以直接访问全局变量,但函数内部不能直接通过赋值语句来改变全局变量</p>
<p><br> 局部变量说明:<br> 1.在函数内首次对变量赋值是创建局部变量,再次为变量赋值是修改局部变量的绑定关系<br> 2. 在函数内部的赋值语句不会对全局变量造成影响<br> 3.局部变量只能在其被声明的函数内部访问,而全局变量可以在整个模块同访问</p>
<pre class="blockcode"><code class="language-python">a = 100
b = 200
def fx(c):
print('hello')
d = 400
a = 10 # 此赋值语句在函数内,它只能创建局部变量,不能改变全局变量
print(a, b, c, d, sep=' => ') # 10 => 200 => 300 => 400
print('a =', a, 'b =', b) # a = 100 b = 200
fx(300)
print('a =', a, 'b =', b)
print(c) #NameError: name 'c' is not defined 局部变量只能在函数内部使用</code></pre>
<p>练习:<br> 创建一个全局变量: <br> L = []<br> 写一个函数:<br> def input_number():<br> 读入正整数 放到L列表内</p>
<p>input_number() # 输入 1 2 3<br> print(L) #[1,2,3]<br> input_number() # 输入 4 5<br> print(L) #[1,2,3,4,5]</p>
<pre class="blockcode"><code class="language-python">#示例:
L = []
def input_number():
lst = []
while True:
n = int(input("请输入正整数: ") or '-1')
if n < 0:
break
lst.append(n)
# 走到此时,lst 里是本次函数调用时用户输入的正整数
return lst
L += input_number() # 输入1 2 3
print(L) # [1, 2, 3]
L += input_number() # 输入4, 5
print(L) # [1, 2, 3, 4, 5]</code></pre>
<h3 id="%C2%A0%20%C2%A0%20globals()%20%E5%87%BD%E6%95%B0%20%E5%92%8C%20locals%E5%87%BD%E6%95%B0"> globals() 函数 和 locals函数</h3>
<p> 函数变量<br> 函数名是变量,它在创建时绑定一个函数</p>
<pre class="blockcode"><code class="language-python">def f1():
print("hello f1")
def f2():
print("hello f2")
fx = f1 # 注意此处f1没有加()
fx() # 调用f1
f1() # 调用f1
f1 = f2 # 让f1 改变绑定关系,去绑定f2
f1() |
|