03_python的数据类型和变量的定义及使用
1.数据类型按数值非数值分类
(1)python的数据类型可以分为 数字型
和 非数字型
。
-
数字型
- 整型 (
int
) - 浮点型(
float
) - 布尔型(
bool
) - 复数型 (
complex
)(主要用于科学计算)
- 整型 (
-
非数字型
- 字符串
- 列表
- 元组
- 字典
(2)不同类型变量之间的运算问题:
数字型变量
之间可以直接计算字符串变量
之间使用+
拼接字符串字符串变量
可以和整数
使用*
重复拼接相同的字符串
数字型变量
和字符串
之间不能进行其他计算
提示:在 Python 2.x 中,整数根据保存数值的长度还分为: int
(整数) long
(长整数)
2.按传递类型分类
(1)python语言参数传递类型
java中参数的传递是按值传递
的。但是在python中,函数参数的传递是按引用传递
的。因为python是弱类型的编程语言,定义变量不需要指定类型。因此,实际上python变量全部是指针,因为变量是指针,所以所有的变量无类型限制,可以指向任意对象。指针的传递即是引用传递
。
在java中数据类型分为基本数据类型
和引用数据类型
。但是在python中所有的数据都是引用数据类型
。但是引用数据类型
又区部分为可变数据类型
和不可变数据类型
。
(2)python中的不可变数据类型
不可变数据类型
中的不可变
实际上指的是同一个数据,其地址不可变。当改变一个不可变数据类型的变量的值时,实际上python解释器重新创建了一个对象(产生一个新的引用),为其赋了新值。
这种不可变数据类型
在进行函数参数传递时类似于java语言中的基本数据类型。
a=5
b=5
b=6
b=7
例如上述代码(int型为不可变数据类型):
- 执行第一、第二行代码后,实际上a和b指向的是同一块内存例如0x0000。这个时候,这块内存被两个变量引用。
- 当执行第三行代码后,0x0000这块内存处更新为被一个变量引用,并且内存中又重新开辟了一块内存,用来存储6,假设这块内存的地址为0x0008。此时0x0008和0x0000都被一个变量引用。
- 当执行第四行代码后,python解释器又开辟了一块内存,假设为0x000f,而由于0x0008这块内存已经没有变量引用它,它便会被系统回收掉。
(2)python中的可变数据类型
可变数据类型
指的是,两个变量引用同一块内存,当其中一个变量执行改变内存中的数据的话,两个变量会同时更新数据,并不会开辟一块新内存。
这种可变数据类型在进行函数参数传递时类似于java中的按引用数据类型。
(3)python中的可变数据类型与不可变数据类型
-
不可变类型
- 数字类型
int
,bool
,float
,complex
,long(2.x)
- 字符串
str
- 元组
tuple
- 数字类型
-
可变类型
- 列表
list
- 字典
dict
(字典key的值只能是不可变数据类型)
- 列表
可变数据类型的数据是通过方法改变的。
3.python的局部变量与全局变量
(1)局部变量与全局变量概述
局部变量
是在函数内部定义的变量,只能在函数内部使用。函数执行结束后,局部变量的内存就会被回收。局部变量
在函数执行时被创建,在函数执行完毕后被回收。期间便是局部变量的生命周期。
(2)局部变量定义的位置与生命周期
(3)全局变量定义的位置与生命周期
全局变量
是在函数外部定义的变量,所有函数内部都可以使用这个变量,全局变量
一般定义在所有函数的上部(import下面)。- 不允许使用赋值语句直接修改
全局变量
的值(修改全局变量的引用)。 - 如果想要在函数内部修改全局变量的值,可以做
global
声明后再修改。
(4))全局变量的命名
- 一般定义全局变量时需要加前缀,例如:g_变量名或者gl_变量名。
4.python中变量的命名
- python 标识符区分大小写
- python 可以采用的变量命名方式:
- 下划线法
- 小驼峰法
- 大驼峰法
5.python中变量的定义与使用
- 定义:python是弱类型编程语言,它在定义变量时不需要指定数据类型。解释器会根据赋值运算符右边的数值进行自动识别数据类型。
- 使用:在 Python 中,每个变量在使用前都必须赋值,变量 赋值以后该变量才会被创建
注意:使用交互式和解释器形式定义和使用变量上有所区别。