基本数据类型
变量
Python 中的变量不需要声明。每个变量在使用前必须赋值,变量赋值后该变量才会被创建。在 Python 中,变量就是变量,没有类型,我们所说的“类型”是变量所指的内存中对象的类型。
变量的命名
和上一篇文的标识符命名相同:
-
第一个字符必须是字符表中的字符或下划线 _,但不能是数字。
-
标识符的其他部分由字母、数字和下划线组成(不能有空格)。
-
变量名不能用 Python 关键字和函数名。
-
标识符对大小写敏感。
-
非 ASCII 标识符也是可以的。
这里说一些人为更规范化的规则(风格):
- 变量名要具有描述性,意义明确,同时尽可能使用简写缩短拼写。
- 可以使用下划线分割命名的单词。
- 慎用小写字母 l 和大写字母 O,不要采用汉语或汉语拼音缩写命名。
变量的赋值
可以使用等号 =
来给变量赋值,等号左边是变量名称,右边是变量的值。在多变量赋值的情况下:①赋相同的值可以使用连等;②赋不同的值可以使用 ,
分割。
counter = 10
weight = 6.5
name = 'Blade'
print(counter, weight, name)
age = 100
print(age)
age = "some string"
print(age)
a = b = c = 10
print(a, b, c)
a, b, c = 1, 2.3, "456"
print(a, b, c)
输出样例:
10 6.5 Blade
100
some string
10 10 10
1 2.3 456
标准数据类型
Python3 中一共有六种标准数据类型(标准对象类型):
- 数字(Number)
- 字符串(String)
- 元组(Tuple)
- 列表(List)
- 集合(Set)
- 字典(Dictionary)
可变对象与不可变对象:
- 不可变(3 个):数字(Number)、字符串(String)、元组(Tuple);
- 可变(3 个):列表(List)、字典(Dictionary)、集合(Set)。
所谓不可变,指的是值不可变,对于不可变类型的变量,如果改变变量,会创建一个新的值。
a = 3
print(hex(id(a)))
a = 5
print(hex(id(a)))
输出样例:(里边的 hex
是将 id
返回的内存地址转化为 16 进制)
当执行a = 3时,在内存中创建了一个对象,值为3,让后让变量a指向内存中的3,当执行a = 5时,还是一样的操作,由于在内存中新创建了一个对象,所以,两次输出的对象地址是不一样的。
0x27603fd6970
0x27603fd69b0
a = {'name': 'c++'}
print(hex(id(a)))
a['name'] = 'python'
print(hex(id(a)))
输出样例:
0x24e10178a80
0x24e10178a80
变量 a
最初指向了内存中的一个字典,key是name, value是c++,当执行a[‘anme’] = 'python’时,内存中的这个字典里的内容发生了变化,但字典本身的内存地址没有发生变化,你可以理解为这个字典由于值发生了变化,所以在内存中的区域有所变化,但是在内存中的起始地址没有发生变化,而现在,a仍然指向这个地址,所以两次print的值是一样的。
判断数据类型
可以使用 type
和 isinstance
来判断类型。
type
不会认为子类是一种父类类型isinstance
会认为子类是一种父类类型
a = 10
print(type(a))
print(isinstance(a, int))
print(isinstance(True, float))
输出样例:
<class 'int'>
True
False
变量与对象
变量无类型,对象有类型。以 C++
为例,int a = 310
:其中变量 a
的类型为 int
,这是确定的,所以就不能使用变量 a
存字符串了,但是在 Python 中因为变量无类型,只作为引用(指针),所以哪怕之前已经有过 a = 10
也还可以写 a = "b"
。
我们在上一段中判断数据类型的方法判断的是变量指向的对象的类型。
删除变量引用
可以使用 del
语句删除一些对象的引用。
a = 100
print('a is {0}'.format(a))
del a # 删除变量引用
#print('a is {0}'.format(a)) # 会报错