局部变量和全局变量

本文详细介绍了Python编程中的局部变量和全局变量的区别。局部变量在函数内部定义,只在该函数作用域内有效,而全局变量在整个脚本中都可被访问。当在函数内部尝试修改全局变量时,如果不使用global关键字,Python会创建一个新的局部变量。理解这两者的区别对于编写高效且无误的代码至关重要。
部署运行你感兴趣的模型镜像

 

 

一、定义

局部变量:就是在函数内部定义的变量。这个变量只能在定义这个变量的函数内部使用。

全局变量:就是在函数外部定义的变量。(注意是定义在所有函数的外部)。所有的函数内部都可以使用这个变量。

 

 

 

 

二、局部变量的使用

1. 函数外部不能使用局部变量。【例1】【例2】

2. 函数执行时,执行到创建局部变量的地方,局部变量才会创建。当函数执行完后,局部变量也就死亡了。只有在生命周期内才能使用这个变量。

3.  不同的函数内部,可以定义相同的局部变量。彼此之间没有任何关系。【例3】

 

例1:函数外部不能使用局部变量

 

结果:

 

例2:函数外部不能使用局部变量

 

结果:

 

 

例3:

 

结果:

 

三、全局变量的使用

1. 全局变量就是在函数外部定义的变量。【例1】

2. Python有一个限制:在函数内部不允许改变全局变量的值。【例2】

    如果确实需要在函数内部对全局变量进行修改,可以使用global关键字声明一下。【例3】

3. 要注意全局变量定义的位置。虽然也可以定义在函数下方【例4】,但是有时候容易出错【例5】,最好是把所有的全局变量统一放在所有函数的上方进行定义。【例6】

    在实际代码开发的时候,最好这样写:

    

 

4. 全局变量的命名建议

    如果全局变量起名字的时候很普通,那么在函数内部起名字的时候有可能也起了这个名字,这个时候就会混淆。所以有的公司规定,在给全局变量起名字的时候加上"g_"或"gl_"的前缀。【例7】

 

 

 

 

 

例1:

 

结果:

 

 

例2:在函数内部不能修改全局变量的值

 

 

结果:

 

执行完fun2()之后,输出的值还是10。说明fun1()中的语句并不是改变全局变量num的。

 

 

例3:使用global关键字

 

结果:

 

执行完fun2()之后,输出的值是20。说明fun1()中的语句改变了全局变量num的值。

 

 

 

例4:代码可以成功执行么?

 

结果:

 

fun1()中是认识num1的。为什么呢?

先执行第1句。

然后到第3句,发现是个函数定义,就会跳过。不执行。

再执行第9行,现在有了num1了。

在执行第11行。会调用fun1()

进入fun1()之后,执行第5句的时候因为已经有全局变量num,所以输出。执行第6句的时候,因为已经有全局变量num1,所以会输出。

 

所以上面的程序是可以成功执行的。

 

 

 

例5:代码可以成功执行么?

 

结果:

 

 

当执行到12行的时候,已经知道num和num1这两个变量了。但是还不知道num2这个变量。所以调用fun1()时,找不到num2。

 

 

例6:

 

结果:

 

 

例7:推荐给全局变量这么起名字,这样函数里面的变量名就不可能重了。

 

结果:

 

 

 

 

 

 

 

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值