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

    1.全局变量与局部变量

    全局变量:指在函数之外定义的变量,一般没有缩进,在程序执行的全过程有效

    局部变量:指在函数内部使用的变量,仅在函数内部有效,当函数退出时变量将不存在

    例1:

    n = 1  # 全局变量
    def func(a, b):
        c = a * b  # c是局部变量,a和b作为函数参数也是局部变量
        return c
    s = func("knock~", 2)
    print(s)
    print(c)
    

    这个例子说明,当函数执行完退出后,其内部变量将被释放。

    如果函数内部使用了全局变量呢?例如:

    n=1 #n是全局变量
    def func(a,b):
        n=b    #这个n是在函数内存中新生成的局部变量,不是全局变量
        return a*b
    s=func("knock~",2)
    print(s,n) #测试一下n值是否发生改变knock~knock~ 1
    

      

    函数func()内部使用了变量n,并且将变量参数b赋值给变量n,为何n值没有改变?

    因为函数func()有自己的内存空间,它将n=b语句理解为生成一个局部变量n,并将参数b赋值给它,此时func()函数没有将n当作全局变量。所以,函数退出后,局部变量n被释放,全局变量n的值没有改变。

    如果希望让func()函数将n当作全局变量,需要在变量n使用前显式说明该变量未全局变量,修改后:

    n = 1  # n是全局变量
    def func(a,b):
        global n
        n = b    # 这个n是在函数内存中新生成的局部变量,不是全局变量
        return a*b
    s = func("knock~",2)
    print(s, n)  # 测试一下n值是否发生改变knock~knock~ 1
    

      

    2.python函数对变量的作用遵守原则:

    (1)简单数据类型变量无论是否与全局变量重名,仅在函数内部创建和使用,函数退出后变量被释放,如有全局同名变量,其值不变。

    (2)简单数据类型变量在用global保留字声明后,作为全局变量使用,函数退出后该变量保留且值被函数改变

    (3)对于组合数据类型的全局变量,如果在函数内部没有被真实创建的同名变量,则函数内部可以直接使用并修改全局变量的值。

    (4)如果函数内部真实创建了组合数据类型变量,无论是否有同名全局变量,函数仅对局部变量进行操作,函数退出后局部变量被释放,全局变量值不变。

    此处,some_function里面的some_list不是新创建的

    例子:关于局部变量的作用域,如下代码的正确输出是什么

     答案:D

    参考:python函数对变量的作用及遵循的原则

  • 相关阅读:
    设备驱动开发之缓冲区读写操作
    什么是80Plus
    INF Manufacturer Section
    C++编程获得某台机器的IP地址
    INF DestinationDirs Section
    importlib模块
    django的内置信号
    auth模块(登录验证)
    头像文件的预览
    powerDesiger 常用设置
  • 原文地址:https://www.cnblogs.com/GumpYan/p/14154760.html
Copyright © 2011-2022 走看看