zoukankan      html  css  js  c++  java
  • 123

    在python开发中,一言不合就来一个变量abc,你可知变量也是有生命周期的?一旦周期结束,程序会自动清理暂用的空间,释放内存;

    变量分为两者,一种是局部变量,一种是全局变量,两者具体有什么区别呢……

    局部变量

    一般而言在函数内部或者类中声明的变量默认都是局部变量。一旦函数结束,变量的生命周期也会结束,占用的空间会被自动释放

    def func1():
    # 在函数内部定义的变量默认都是局部变量
    a = 1
    print(a)
    # 函数结束,局部变量a的生命周期结束

    # 由于a是局部变量,并且a的生命周期已经结束,外部再次调用局部变量a,程序会产生异常,崩溃
    print(a)

    程序报错:NameError: name ‘a’ is not defined ,原因:函数内部定义的局部变量只能在函数内部使用

    全局变量

    全局变量和局部变量相反,在函数外部或者类外部声明的变量默认为全局变量。全局变量的生命周期直到程序结束才会结束,比局部变量生命周期更长

    a = 2
    def func1():
    print(a)
    # 函数结束,局部变量的生命周期结束
    # 全局变量直到程序结束,生命周期才结束

    func1()
    # 输出全局变量a
    print(a)

    输出:

    2
    2

    局部变量和全局变量的区别

    • 全局变量的生命周期是直到程序结束,而局部变量生命周期是函数结束;

    • 如果需要在函数内部修改全局变量的值,需要在函数内部为该全局变量前面加上 global 关键字, 否则该变量默认为函数内部定义的局部变量,示例代码如下:

    # !usr/bin/env python
    # -*- coding:utf-8 _*-

    # 在函数内部定义的变量默认都是局部变量
    a = 2
    def func1():
    # global a # 声明 a 是全局变量,在该函数内部对a的操作就是对全局变量a的操作
    a = 1 # 如果没有上一行代码,默认a就是函数内部的局部变量,函数结束,生命周期结束
    print(a)
    # 函数结束,局部变量的生命周期结束


    func1()
    # 输出全局变量a
    print(a)

    输出结果:

    1
    2

    是不上觉得很奇怪:为什么最后一个值是2,应该是1才对?

    因为没有第17行代码的话,默认 a 只是函数内部的一个普通局部变量,所以函数内部的 print 函数输出到控制台是1;函数结束,函数内部的局部变量 a 值生命周期结束,执行 fun1 函数之后的 print 函数输出的是全局变量a的值2.

    也就是说函数内部对 a 值得修改并没有成功,只有在函数内部,为全局变量加上关键字 global 声明为全局变量,才能修改成功,取消第17行得注释,控制台输出:

     

  • 相关阅读:
    js判断用户是否在浏览当前页面
    js不改变原对象情况下复制对象object
    js实现jquery中的addClass,removeClass,hasClass方法
    npm install总结 (--savenpm install --save与npm install --save-dev区别及其他相关)
    通过正则实时监听检查input输入,实时反应,不符合不能输入的功能详解
    IE8常见兼容问题及解决方法总结
    javascript中十六进制和ASCII码互相转换
    vue2.0中watch总结:普通监听和深度监听
    js对象数组操作之一:对象数组中对象去重的方法总结
    webpack4配置详细过程及采坑
  • 原文地址:https://www.cnblogs.com/shuopython/p/12564549.html
Copyright © 2011-2022 走看看