(十)python 全局变量和局部变量 ,作用域,lambda

论坛 期权论坛     
选择匿名的用户   2021-5-23 14:33   179   0
<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 &#61; 100
b &#61; 200

def fx(c):
    print(&#39;hello&#39;)
    d &#61; 400
    a &#61; 10  # 此赋值语句在函数内,它只能创建局部变量,不能改变全局变量
    print(a, b, c, d, sep&#61;&#39;  &#61;&gt; &#39;)  # 10  &#61;&gt; 200  &#61;&gt; 300  &#61;&gt; 400

print(&#39;a &#61;&#39;, a, &#39;b &#61;&#39;, b)  # a &#61; 100 b &#61; 200

fx(300)
print(&#39;a &#61;&#39;, a, &#39;b &#61;&#39;, b)
print(c)  #NameError: name &#39;c&#39; is not defined 局部变量只能在函数内部使用</code></pre>
<p>练习:<br>     创建一个全局变量: <br>         L &#61; []<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 &#61; []
def input_number():
    lst &#61; []
    while True:
        n &#61; int(input(&#34;请输入正整数: &#34;) or &#39;-1&#39;)
        if n &lt; 0:
            break
        lst.append(n)
    # 走到此时,lst 里是本次函数调用时用户输入的正整数
    return lst

L &#43;&#61; input_number()  # 输入1 2 3
print(L)  # [1, 2, 3]
L &#43;&#61; 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(&#34;hello f1&#34;)

def f2():
    print(&#34;hello f2&#34;)

fx &#61; f1  # 注意此处f1没有加()
fx()  # 调用f1
f1()  # 调用f1
f1 &#61; f2  # 让f1 改变绑定关系,去绑定f2
f1()
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP