Python中的全局变量与命名法
创始人
2024-03-18 16:04:15
0

---------------------------------------------------------------------------------------------------------------------------------

在本文章中,我们来讨论一下python中的全局变量,我们将学习如何定义全局变量,然后如何在函数中访问它们,以及如何在函数中修改全局变量的值。

全局变量:

python的代码结构一般按照shebang、import模块、全局变量、函数定义、执行代码的顺序进行编写,可以看出全局变量的定义处于比较靠前的位置,这样就避免了因为全局变量定义靠后,但python解释器逐行解释,以至于前面的代码无法识别局部变量的问题。

全局变量的作用域:

全局变量定义在函数的外部,在函数内部定义的变量称为局部变量,python程序中的所有部分都可以访问全局变量,局部变量只能在本函数内可用,并且在函数中,变量的使用顺序是:局部变量 > 全局变量,也就是说,如果局部变量和全局变量都用a表示,那么调用a时,函数会优先调用局部变量。

全局变量实例:

我们按照文章开头讲解的代码结构顺序,展示一个简单的全局变量的实例

 输出:

 

变量"gl_result"是在函数外部定义的,因此,他是一个全局变量。

在函数内部对全局变量赋值

如果我们在函数内部对全局变量进行赋值操作,那么全局变量的值会改变吗?

 输出:

可以看出,函数内部的gl_result的值已经被我们修改成100了,但是函数外部的变量值仍为1,说明通过调用函数,我们没能修改到全局变量的值,只能修改函数内部的值,这又是为什么呢?

因为,如果在函数内部定义了一个与全局变量相同名称的变量,那么函数就会认为这是在创建一个与全局变量名称相同的变量,所以我们实际修改到的值只是函数中的局部变量的值,并非我们想要修改的全局变量。我们通过pycharm的提示也可以看到
 

 

有一个shadows name在函数外部,在PyCharm中,函数内部的变量,如果和函数被调用的外部的变量一样的话,就会被叫做shadows name,不容易被觉察到。

那么我们就不能在函数内部修改全局变量的值吗?当然不是,在python的函数中可以通过global关键字,调用并修改全局变量的值!

在函数内部修改全局变量的值

我们只需要在需要使用全局变量的前一行代码加上global + 全局变量,就可以随意修改全局变量的值啦!
 

 

可以看出,pycharm这次就没再提示shadows name了,因为我们从头到尾都是在使用同一个变量,即全局变量。所以我们一定要牢记,想要对全局变量进行修改时,在函数内部一定要加上global关键字,不然函数就会自动创建一个局部变量,使人产生误解。

Tips:

1、注意查看pycharm的warning,有时候可以帮助我们避免bug

2、在创建全局变量是按照gl_ + 全局变量 或者 global_ + 全局变量的命名方式,可以帮助我们更好地区分全局变量和局部变量
 

1.变量命名
1)命名的规范性

变量名可以包括字母、数字、下划线,但是数字不能做为开头。

系统关键字不能做变量名使用

除了下划线之个,其它符号不能做为变量名使用 !

Python的变量名是除分大小写的

2)编程语言常用驼峰命名法

大驼峰:每一个单词的首字母都大写 FirstName LastName

小驼峰:第一个单词以小写字母开始,后续单词的首字母大写 firstName lastName

但是在python中一般使用小驼峰加下划线的方式

has_error
is_person
2. 变量命名的描述性
在接受范围内,变量名所描述的内容越精准越好。

BAD: day, host, cards, temp
GOOD: day_of_week, hosts_to_reboot, expired_cards
变量名能让人猜出类型。

例如: Bool 类型

is_user : 是否是用户
例如: int/float 类型

port:端口号
age:年龄
这些很直观的能让人猜出类型。

注意: 不要使用复数来表示一个 int 类型变量,比如 apples,最好用 number_of_apples来替代。

3.变量名尽量短,但是不要太短
一个好的变量名,长度应该控制在两到三个单词左右

例如,person_index

同一段代码内不要使用过于相似的变量名,比如同时出现 users、users1、 user3。

不要使用带否定含义的变量名,用 is_special 代替 is_not_normal。

4.合理使用变量
同一个变量名指代的变量类型,也需要保持一致性。

在一个函数中,一个变量名叫做 photo, 那么在其他地方就不要改成image。
---------------------------------------------------------------------------------------------------------------------------------

相关内容

热门资讯

汽车油箱结构是什么(汽车油箱结... 本篇文章极速百科给大家谈谈汽车油箱结构是什么,以及汽车油箱结构原理图解对应的知识点,希望对各位有所帮...
美国2年期国债收益率上涨15个... 原标题:美国2年期国债收益率上涨15个基点 美国2年期国债收益率上涨15个基...
嵌入式 ADC使用手册完整版 ... 嵌入式 ADC使用手册完整版 (188977万字)💜&#...
重大消息战皇大厅开挂是真的吗... 您好:战皇大厅这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游戏...
盘点十款牵手跑胡子为什么一直... 您好:牵手跑胡子这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游...
senator香烟多少一盒(s... 今天给各位分享senator香烟多少一盒的知识,其中也会对sevebstars香烟进行解释,如果能碰...
终于懂了新荣耀斗牛真的有挂吗... 您好:新荣耀斗牛这款游戏可以开挂,确实是有挂的,需要了解加客服微信8435338】很多玩家在这款游戏...
盘点十款明星麻将到底有没有挂... 您好:明星麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【5848499】很多玩家在这款游戏...
总结文章“新道游棋牌有透视挂吗... 您好:新道游棋牌这款游戏可以开挂,确实是有挂的,需要了解加客服微信【7682267】很多玩家在这款游...
终于懂了手机麻将到底有没有挂... 您好:手机麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游戏...