Python学习笔记 第六天

Python学习笔记 第六天

1.学习内容回顾与拓展

   1.1 字典

          使用可哈希的数据类型作为key

          字典的增删改查操作,具体内容看昨天笔记

          嵌套,解包等

2.今日学习内容

   2.1 is与"=="的区别

          2.1.1 变量 :用来identify(标识)一块内存区域,为了方便表示内存,操作变量的实质是:操作变量指向的那块内存单元。 编译器负责通知计算机分配内存。可以使用Python内置函数id()来获取变量地址,id(object)返回 对象object在其生命周期内位于内存中的地址

          2.1.2 内存 :内存是电脑硬件用来存储数据的,可以理解为:内存是由一个个小格子组成,每个格子的大小是一个字节,只能存放1byte的数据。需要依赖内存地址来查找数据。地址是内存的标识符,相当于门牌号。

找内存地址-》操作内存-》表现为:操作变量

         2.1.3 区别

在python中一切皆对象,对象之间能否用"=="和is,区别在于:

           is是比较两个对象的id是否相等,也就是比较两个对象是否为同一个实际对象,是否指向同一块内存。

          "=="是比较两个对象的内容是否相等,默认调用对象de __eq__()方法

           Python内部做了优化工作,对于整数对象,Python把一些频繁使用的整数对象缓存起来,保存到small_list链表中。在Python的整个生命周期中,任何调用这些小整数的地方,都不需要重新创建一个对象。范围是[-5到256]

注意:

1.小整数对象是全局解释器内重复使用,永远不会被回收。同一个代码块中的不可变对象,只要值相等,就不会创建新的对象。

2.出于对性能的考虑,凡是不可变对象,在同一个代码模块中,只要是值相同的对象,都不会被重复创建。

(字符串中单个*20以内,内存地址是一样的。如果超过,即*21以上,内存地址还是不同的。切不能存在特殊字符,即必须全部由字母组成)(Python3.7及以后的版本不适用)

3.不仅是整形,字符串也同样遵守上述规则

复习:可变类型与不可变类型

可变数据类型

元组tuple 字符串string 整数int 布尔类型 bool

可变数据类型:

列表list 字典dict 集合set

2.1.4 代码块:程序的最小基本单位

Python程序便是基于代码块组成的。

一个代码块文件,一个函数体,一个类,交互式命令行中的单行代码都算是代码块。

在一个py文件中,情况类似,但是又不一样的地方。

1.int类型,只要在同一个代码块中的值相同,地址则相同

2.str类型,只要长度不超过20,哪怕含有特殊字符,地址也相同

3.编码与解码

3.1 常见编码:二进制 01

3.2 编码与解码(以ASCII为例)

3.2.1 简介

编码与解码是一种映射关系。

解码,比如ASCII中的字符A对应的十进制是65,对应的二进制编码为0100 0001。

编码即为解码的逆向工程,当计算机读到 0100 0001 就对应ASCII的表中查看,对应为A

解码encode:真是字符与二进制串的对应关系,即

真实字符->二进制串

编码decode:二进制串与真实字符的对应关系,即

二进制串->真实字符

注意:1.编码和解码应该是同一个码

2.在文件开头,指定编码,例如

#-*-coding:utf-8-*- (python)

<meta charset = 'utf-8'>(html)

@charset'utf-8'(CSS样式)

3.2.2常见编码方式

3.2.2.1 ASCII

不支持中文,支持英文 数字 符号

8位一个字节

3.2.2.2 GBK 国标码

支持中英文,数字和符号

英文 16位 2字节

中文 16位 2字节

3.2.2.3.Unicode 万国码

支持中英文,数字和符号

英文 32位 4字节

中文 32位 4字节

3.2.2.4.UTF-8 长度可变的万国码

支持所有

英文 8位 1字节

中文 24位 1字节

注意:Python 2 默认使用 ASCII编码,Python 3 默认使用Unicode显示所有内容 pycharm默认使用UTF-8

猜你喜欢

转载自www.cnblogs.com/tjlhappyboy/p/11209692.html