一文讲解Python基础变量类型
对于Python,变量不需要预先声明,而是在创建时直接分配它,变量的类型取决于赋给变量的值。值得一提的是,一旦要创建一个变量,您需要为该变量赋值。
有一种“平民”的说法是,变量好比一个标签,指向内存空间的一块特定的地址。创建一个变量时,在机器的内存中,系统会自动给该变量分配一块内存,用于存放变量值。如图1所示。
通过id函数具体查看创建变量和变量重新赋值时内存空间的变化过程,如代码1所示。
>>>x = 4>>>id(x) # 查看变量x指向的内存地址30834096L>>>y = x # 将变量x重新赋给另一个新变量y>>>id(y)30834096L>>>x = 2 # 对变量x重新赋值>>>x,y # 同时输出变量x和变量y的值(2,4) >>>id(x)30834144L>>>id(y)30834096L12345678910111213复制代码类型:[python]
从代码1中可以直观地看出,一个变量在初次赋值时,就会获得一块内存空间用于存放变量值。当令变量y等于变量x时,其实是一种内存地址传递,变量y获得的是存储变量x值的内存地址,所以当变量x改变时,变量y并不会发生改变。此外,还可以看出,变量x的值改变时,系统已经重新分配了另一块内存空间供新的变量值存放。
创建一个变量,首先需要一个变量名和变量值(数据),然后通过赋值将值赋给变量。
1.变量名
变量的命名严格遵守标识符的规则,这在前文(2.1.6命名标识符与保存字符)已经作了详细的介绍,读者可以返回前文重新查阅和巩固。
Python中还有一类非保留字的特殊字符串(如内置函数名),这些字符串具有某种特殊功能,虽然用于变量名时不会出错,但会造成相应的功能丧失。如len函数可以用来返回字符串长度,但是一旦用来定义变量时,其就失去了返回字符串长度的功能。因此,在取变量名时,不仅要避免Python中的保留字,还要避开具有特殊作用的字符串,以确保发生一些不必要的错误,如代码2所示。
>>>import keyword # 加载keyword库>>>keyword.iskeyword(“and”) # 判断“and”是否为保留字 TRUE >>>and = “我是保留字” # 以保留字作为变量名 File "<stdin>", line 1 and = '我是保留字' ^ SyntaxError: invalid syntax >>>strExample = “我是一个字符串” # 创建一个字符串变量>>>len(strExample) # 使用len函数查看字符串长度7>>>len = “特殊字符串命名” # 使用len作为变量名>>>len特殊字符串命名 >>>len(strExample) # len函数查看字符串长度出错Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'str' object is not callable123456789101112131415161718复制代码类型:[python]
如果在一段代码中有大量变量名,而这些变量没有错,只是取名都很随意,风格不一,这样在在解读代码时会出现一些混淆。接下来介绍几种命名法。
(1)大驼峰(uppercamelcase)
所有单词的首字母都是大写,例如“MyName,YouFamily”……
大驼峰一般用于类的命名。
(2)小驼峰(lowercamelcase)
第一个单词的首字母为小写字母,其余单词的首字母都采用大写字母,例如“myName”,“youFamily”……
小驼峰用在函数名和变量名中的情况比较多。
(3)下划线(_)分隔
所有单词都采用小写字母,中间用下划线(_)分隔开,例如“my_Name,you_Family”……
关于要使用哪种方法去对变量命名,并没有一个统一的说法,重要的是一旦选择好了一种命名方式,在后续的程序编写过程保持一致的风格即可。
2.变量值
变量值就是要赋给变量的数据,在Python中有六个标准的数据类型:数字(Number)、字符串(String)、列表(List)、元组(Tuple)、字典(Dictionary)、集合(Sets),其中列表、元组、字典、集合属于复合数据类型。
3.变量赋值
最简单的变量赋值就是把一个变量值赋给一个变量名,只需要用等号(=)就可以实现。
同时Python还可以将一个值同时赋给多个变量,如代码3所示。
>>>a = b = c = 1 # 一个值赋给多给变量>>>a1>>>b1>>>c11234567复制代码类型:[python]
代码3展示了将数字1同时付给了变量a、b、c。如果要将数字1,2和字符串“abc”分别赋值给变量a、b、c就是使用逗号(,),具体可以如代码4所示。
>>>a,b,c =1,2,”abc” # 多个变量同时赋值>>>a1>>>b2>>>c 'abc’