Python变量详解
转载至:https://mp.weixin.qq.com/s/WPTUzgN_g3eRYL4-NTpN8w
1 变量的定义
变量其实就相当于一个“名字”,也可以理解为一个标签
2 作用
大家在去超市买东西的时候,往往会把我们随身携带的一些东西存储在超市的储物柜中,而储物柜那么多小格子,那我们又是如何知道我们到底把东西放在了哪个小格子里呢?是不是大家发现每个小格子上面都有一个编号,当我们取东西的时候,我们拿着储物柜的钥匙去找对应编号的小格子就行了呢?
同样,我们程序中有那么多的数值、对象等(当然在python中一切皆对象),到底放在哪里呢?其实他们是放在内存中的,而大家同样可以理解为内存中也有很多小格子,每个小格子上面都有一个内存地址,而我们的变量就是指向的这个内存地址。
3 变量的命名
变量的命名其实就是相当于给这个变量起个名字,但是这个名字又不能乱起,他是有一定的规则要求的,在讲变量的命名规则之前,我们先将一下什么是Python的关键字?
3.1 python关键字
-
Python关键字是Python这门语言人家已经被赋予了特定意义的一些单词,若是我们用了这些关键字作为我们的变量名,这个时候就会导致一些程序的报错
-
Python的关键字到底有哪些呢?
-
如何查看Python的关键字呢?我们可以通过如下命令进行查看:
>>> import keyword
>>> keyword.kwlist
实例:
#我们用if作为一个变量名称,并将if这个变量值打印一下 if = "张三" print(if) 执行结果: if = "张三" ^ SyntaxError: invalid syntax 这个时候就会报语法错误
3.2 变量的命名规则
-
由字母、下划线“_”和数字组成,并且第一个字母不能数字;
-
不能是Python的关键字;
-
区分字母大小写,在Python中会严格区分大小写的,两个同样的单词,如果大小写格式不一样,所代表的意义就完全不同;
-
变量名称一定要有意义,别人一看就知道这个是啥,也就是顾名知意,这样可以提高代码的可读性;
-
在python中虽然可以用汉字命名也不会报错,但是建议大家不要用汉字命名;
-
推荐使用驼峰型(如:UserName或userName)和下划线(user_name)来命名;
-
常量通过使用大写来命名
4 变量的赋值
变量的每一个值都会存储在内存中,那么这个时候一定会在内存中开辟一个空间,而每个空间的大小又由变量的类型来决定,但是在python中是不需要专门来声明变量类型的;
每个变量在使用前必须赋值,只有变量赋值以后才会被创建。
4.1 编写规则:
变量名称 = 值 如:name = "张三" 解释:将“张三”赋值给变量name
4.2 给多个变量名赋同一个值
a,b,c=1
解释:将1赋值给a和b以及c
4.3 给多个变量赋值
a,b,c = 1,2,3
解释:将1赋值给a,将2赋值给b,将3赋值给c
5 局部变量和全局变量
5.1 局部变量
-
局部变量定为范围:只能在函数内部定义,且只能在函数内部使用
#在函数内部定义变量name_in def getName_1(): name_in = "李四" print("局部变量name->{}".format(name_in)) getName_1() 执行结果: 局部变量name->李四
-
不同的函数,可以定义相同的名字的局部变量,但是 彼此之间不会产生影响
#在getName_1和getName_2方法中,都定义变量name_in def getName_1(): name_in = "李四" print("局部变量name->{}".format(name_in)) def getName_2(): name_in = "王五" print("局部变量name->{}".format(name_in)) getName_1() getName_2() 执行结果: 局部变量name->李四 局部变量name->王五 #从结果中,我们不难发现,虽然在俩个函数中都定义了name_in,但是最后打印的结果,都是各自赋值的变量值
-
局部变量的作用:在函数内部使用,临时保存函数内部需要使用的数据
-
局部变量的生命周期
-
所谓生命周期就是变量从被创建到被系统回收的过程
-
局部变量在函数执行时才会被创建,执行之后局部变量会系统回收
5.2全局变量
-
全局变量是在函数外部定义的变量
-
所有函数内部都可以使用这个变量
-
#定义一个全局变量 name_out = "张三" def getName_1(): name_in = "李四" print("全局变量name->{}".format(name_out)) print("局部变量name->{}".format(name_in)) getName_1() 执行结果: 全局变量name->张三 局部变量name->李四