美文网首页
Python局部变量详解(含义、作用、生命周期)

Python局部变量详解(含义、作用、生命周期)

作者: 可可里西 | 来源:发表于2022-05-20 14:24 被阅读0次

定义:

局部变量是在函数内部定义的变量,只能在函数内部使用。

全局变量是在函数外部定义的变量(没有定义在某一个函数内),所有函数内部都可以使用这个变量。

注意: 在其他的开发语言中,大多不推荐使用全年变量,因为可变范围太大,导致程序不好维护。

局部变量:

1. 局部变量是在函数内部定义的变量,只能在函数内部使用

2. 函数执行完成后,函数内部的局部变量,会被系统回收

3. 不同的函数,可以定义相同的名字的局部变量,但是彼此之间不会产生影响

局部变量的作用

在函数内部使用,临时保存函数内部需要使用的数据

一、局部变量只能在函数内部使用

通过代码来演示一下,在函数内部定义的变量不能在函数外部被使用

def demo1():
    # 定义一个局部变量
    num = 100
    print("在函数demo1中的变量是%d" % num)

# 调用函数
demo1()

以上是没有任何问题的一串代码,执行结果是: 在函数demo1中的变量是100

下面开始尝试一下,能否在函数的外部用这个num变量呢?

图片1.png

可以看出,在打印num这个变量的时候PyCharm就已经提示我们代码出错了,然而我们为了进一步验证不能打印出num变量,再看下执行的报错结果,没有定义num这个变量。如下图:

图片2.png

结论:在函数内部定义的变量不能在其他位置使用

再看下在其他函数的内部能否使用num这个变量呢?

图片3.png

同样在PyCharm中已经红线提示了有错误,再代用函数demo2运行看看下效果同样报错了,如下图:


图片4.png

以上报错信息可以看出,第一个报错信息告诉我们出错在代码的第11行调用函数demo2,第二个报错信息说在代码的第7行在函数demo2中找不到变量num

此时我们注释掉demo2里的代码块,会提示我们缩进代码错误:IndentationError: expected an indented block,此时我们利用pass这个占位符来保证函数体代码结构的完整,此时程序又能正常的运行了。

图片5.png 图片6.png

二、局部变量的生命周期

定义:所谓生命周期就是变量从创建到被系统回收的过程。

(把创建比作出生,把系统回收比较死亡,生命周期好比一个人从出生到死亡的这一段过程)

局部变量在函数执行时才会被创建,函数执行结束后局部变量被系统回收。

局部变量在生命周期内,可以用来存储函数内部临时使用到的数据。

可以利用在代码中的debugger来看看函数的整个执行过程。首先在函数demo1前打个断点。

图片7.png

第3行代码被执行完成之后就可以看到num这个变量了,然后执行到第四行代码完成后这个函数就执行完成了,num变量也被回收了。

图片8.png

三、不同函数内的同名局部变量

不同的函数,可以定义相同的名字的局部变量,但是彼此之间不会产生影响

def demo1():
    # 定义一个局部变量
    num = 100
    print("在函数demo1中的变量是%d" % num)

def demo2():
    num = 99
    print("在函数demo2中的变量是%d" % num)

# 调用函数
demo1()
demo2()

执行结果:

图片9.png

以上两个函数中的相同名字的变量num之间没有任何的关系,好比两个班级中各有一个相同的名字的同学一样,他们在各自的班级之间互不干扰影响。

以上是局部变量的全部介绍,后面主要介绍全局变量,这些都属于python基础教程,如果你没有一点编程方面的基础我想这个也是能看得懂的,如果不懂可以私信留言。

文章借鉴来源:http://www.wakey.com.cn/document-column-python.html

相关文章

  • Python局部变量详解(含义、作用、生命周期)

    定义: 局部变量是在函数内部定义的变量,只能在函数内部使用。 全局变量是在函数外部定义的变量(没有定义在某一个函数...

  • 面试整理

    static和extern简单使用(用法) static作用:修饰局部变量:延长局部变量的生命周期,程序结束才会销...

  • Vue生命周期

    Vue生命周期详解 一、Vue生命周期 与 作用 (生命周期钩子就是生命周期函数) (1)Vue生命周期:每个Vu...

  • 注解

    注解的作用范围@Target和生命周期@Retention作用范围:包,类,字段,方法,方法的参数,局部变量生命周...

  • static、const和extern分析总结

    1.static 1.1 修饰局部变量:改变局部变量的作用域,延长其生命周期直到程序结束 1.2修饰全局变量:全局...

  • JAVA ThreadLocal

    ThreadLocal的作用是提供线程内局部变量,这种变量在线程生命周期内起作用。 前面翻handler源码时发现...

  • 为什么局部内部类必须为final类型

    第一种说法 原因 主要是因为实现的代价太高 困难 局部变量的生命周期和局部内部类的生命周期不同 详解 局部内部类的...

  • 9.22-oc-block

    static: 生命周期,作用域,存储位置 对于全局变量来说,本身生命周期就是在整个程序 对于局部变量来说,改变了...

  • 闭包的使用场景

    闭包作用:延长了局部变量的生命周期。如果没有闭包,外部函数执行完以后局部变量就释放了,内部函数调用不了局部变量报错...

  • ThreadLocal 详解

    ThreadLocal 详解 1. 前言 ThreadLocal是java线程中的局部变量,变量作用域仅在当前线程...

网友评论

      本文标题:Python局部变量详解(含义、作用、生命周期)

      本文链接:https://www.haomeiwen.com/subject/eoyfprtx.html