zoukankan      html  css  js  c++  java
  • 局部变量and全局变量

    局部变量

    <1>什么是局部变量

    如下图所示:

    <2>小总结

    • 局部变量,就是在函数内部定义的变量
    • 不同的函数,可以定义相同的名字的局部变量,但是各用个的不会产生影响
    • 局部变量的作用,为了临时保存数据需要在函数中定义变量来进行存储,这就是它的作用

    全局变量

    <1>什么是全局变量

    如果一个变量,既能在一个函数中使用,也能在其他的函数中使用,这样的变量就是全局变量

    demo如下:

        # 定义全局变量
        a = 100
    
        def test1():
            print(a)
    
        def test2():
            print(a)
    
        # 调用函数
        test1()
        test2()
    

      

    运行结果:

    <2>全局变量和局部变量名字相同问题

    看如下代码:

    <3>修改全局变量

    既然全局变量,就是能够在所以的函数中进行使用,那么可否进行修改呢?

    代码如下:

    <4>总结1:

    • 在函数外边定义的变量叫做全局变量
    • 全局变量能够在所有的函数中进行访问
    • 如果在函数中修改全局变量,那么就需要使用global进行声明,否则出错
    • 如果全局变量的名字和局部变量的名字相同,那么使用的是局部变量的,小技巧强龙不压地头蛇

    <5>可变类型的全局变量

    >>> a = 1
    >>> def f():
    ...     a += 1
    ...     print a
    ...
    >>> f()
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "<stdin>", line 2, in f
    UnboundLocalError: local variable 'a' referenced before assignment
    >>>
    >>>
    >>> li = [1,]
    >>> def f2():
    ...     li.append(1)
    ...     print li
    ...
    >>> f2()
    [1, 1]
    >>> li
    [1, 1]
    

      

    <5>总结2:

    • 在函数中不使用global声明全局变量时不能修改全局变量的本质是不能修改全局变量的指向,即不能将全局变量指向新的数据。
    • 对于不可变类型的全局变量来说,因其指向的数据不能修改,所以不使用global时无法修改全局变量。
    • 对于可变类型的全局变量来说,因其指向的数据可以修改,所以不使用global时也可修改全局变量。
  • 相关阅读:
    git .gitignore re-include
    excel 排名次
    ssh agent and ssh add for git Permission denied
    Git 仓库 清理 瘦身
    EF Core ThenInclude 2.0自动完成提示有误,坑了一下
    Entity Framework Core 导航属性 加载数据
    .net core mvc 模型绑定 之 json and urlencoded
    HttpClientHelper
    提示错误:“应为“providerInvariantName”参数的非空字符串。”
    关于.NET WebAPI 常见的跨域问题 解决清单
  • 原文地址:https://www.cnblogs.com/yoyo1216/p/10119313.html
Copyright © 2011-2022 走看看