zoukankan      html  css  js  c++  java
  • 局部变量、全局变量和修改全局变量

    局部变量

    <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时也可修改全局变量。

  • 相关阅读:
    java 3大特性
    注解@JsonIgnore和注解@JsonIgnoreProperties
    spring bean 的介绍
    Spring注解的实现原理和Spring常用注解介绍
    Spring中 @Component @Controller @Repository @Service 注解
    Java Collection集合中List,Set,Queue以及Map的使用
    Spring Security PasswordEncoder 密码校验和密码加密
    java中System.out.print()与System.out.println()与System.out.printf()的差别
    Arrays.fill 数组填充工具类
    Hashmap与Hashset的区别
  • 原文地址:https://www.cnblogs.com/alexzhang92/p/9416808.html
Copyright © 2011-2022 走看看