python全栈开发学习模块一(笔记2)
变量创建
1、name = 'oldboy'
当定义了一个变量name = 'oldboy'时,程序在内存中开辟一块内存空间,将'oldboy'存储进去,再让变量名name指向'oldboy'所在的内存地址。
2、两个变量名一个值
name1 = 'oldboy'
name2 = 'oldboy'
本来在变量定义的时候,python都会去内存中开辟一块内存空间来存储对应的值,但是python会认为一些看起来“像python标识符的字符”和小整数[-5,257)在开发中是常用的,
因此处于节省内存的角度考虑,python解释器会将新定义的变量内容指向之前内存空间已经存在的相同的变量内容。
因此,内存中只存在一块空间存储'oldboy',name1和name2都是指向'oldboy'这块内存地址
使用内置的BIF,id()可以验证。id()可以查看一个变量的内存地址
>>> name1 = 'oldboy'
>>> name2 = 'oldboy'
>>> name1_id = id(name1)
>>> name2_id = id(name2)
>>> print(name1_id,name2_id)
(4459387232, 4459387232)
如果是长字符串或不处于[-5,257)这个区间的数字,即使内容相同,python也不会进行优化,直接开辟2块不同的内存空间。
3、一个变量名两个值
name = 'oldboy'
name ='alex'
首先name赋值为'oldboy',然后name又被赋值为'alex'。name最终的结果就是'alex‘。程序会把原本的name改为指向存储了'alex'的内存地址
4、变量的赋值与修改
name1 = 'oldboy'
name2= name1
name1 = 'alex'
print(name1,name2)
name1首先赋值为'oldboy' ,然后name2=name1。这仅仅代表的是name2指向了name1对应的值'oldboy'
当name1被重新赋值为'alex'时,name2依然是指向'oldboy',因此name2不会='alex'
二进制
二进制数据是用0和1两个数码来表示的数。
计算机使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储。
二进制与十进制转换
二进制的第n位代表的十进制的值都是2的n次方

字符编码
ASCII码
总共有255个字符
表示所有字符也就是需要8个二进制位(二进制11111111=十进制256)
因此规定每个字符都用8位来表示,不足8位的字符前面补0
每个二进制位所占空间为1bit,这是计算机中最小的表示单位
8个bit为1个字节(Byte)
1Byte=8bit
1KB=1024B
1MB=1024KB
.
.
.
.
.
GBK和GB2312
中国制定的字符编码
Unicode
把所有语言的字符编码集合在一起
以2个字节表示英文字母
UTF-8
因为用2个字节表示英文字母台浪费空间,因此可变长编码UTF-8诞生
UTF-8把1个unicode字符根据不同的数字大小编码成1-6个字节
英文编码成1个字节,汉字通常是3个字节,生僻字是4-6个字节
ASCII可以看错是UTF-8的一部分,因此UTF-8完全兼容ASCII
在计算机内存中,统一使用Unicode编码,当需要保存的硬盘或者需要传输的时候,就转换为UTF-8编码。

浙公网安备 33010602011771号