第三章的几个问题 第二部分
- 什么情况下用unicode,什么情况用utf-8,为什么?
当对代码进行处理的时候,或者在内存中的时候,用unicode;
当需要存储或者传输时,用utf-8。
unicode统一了各种语言编码,处理方便,但是占用了大量的内存空间。为了节省存储空间以及加快传输速度,在存储和传输时候用
utf-8。 - 理解str类型和bytes类型区别
第一,内存中默认的字符串是str类型,以Unicode编码,在存储或者传输时候用以字节为单位的bytes类型。
第二,且str类型输出的时候是字符串,即 ‘’ 里面的内容;
而bytes类型输出的全部的输入。
注意:bytes类型里面不包括中文,不包括中文,不包括中文,只能包含以ASCII编译的输入,也即英文输入。如下图的例子:
3. ASCII与UTF-8有什么区别?两者有什么样的联系?
ASCII只能编译英文,不能编译中文,否则会报错。
UTF-8英文和中文都能编译。
ASCII是UTF-8的子集。
详细解释如下:
这个例子证明ASCII只能编译英文,不能编译中文;UTF-8英文和中文都能编译。
4.编码encode和解码decode的关系是什么?编码后,以及解码后字符串的类型会发生怎么样的变化?(编程实验)
编码encode把str类型转变为bytes类型;
解码decode把 bytes类型转变为str类型
可以理解为互为相反的关系。
5.验证:bytes类型能否再进行编码,str类型能否再进行解码。(编程检验)
bytes类型不能再进行编码,只能解码;str类型不能再进行解码,只能编码;
6.解释变量和对象,各有什么特点
变量指向一个对象,相当于一个指针。
对象是内存中存储数据的实体,包括函数。
特点:
变量无类型;
对象有类型,分为可变类型和不可变类型。对象可以变,分为可变对象和不可变对象。
如果给变量赋值的对象类型为可变类型,当对象改变时,加入或者删除等等,其地址不发生变化;
如果给变量赋值的对象类型为不可变类型,如a=“LI” 和a=“li”,当对象改变时,其实a的值也变了,变量的地址会发生变化
7.Sorted(L) 和L.sort输出的结果一样吗?为什么?
sorted函数的意思是排序,从大到小。
Sorted(L)只是获取L里面的参数,进行排序后,返回一个值,这个值是中间值,而不会改变L本身。可以理解为英语中的被动吧,虽然不准确。意思是:我Sorted就要改变L,但是L意志力很坚定,没有动摇!
L.sort改变了L本身,返回的是改变之后的值。可以理解为:L主动sort了一下,我主动要改变!!。
8.怎么理解引用和拷贝?
可变类型的赋值,传递的是引用,相当于C语言中的指针。
a–>List
b=a 则b也指向List
好比我配了两把钥匙a,b,都能打开房门(List),门只有一个。
a变b也变,传递的就是引用
若不想传递引用,需要使用拷贝的方式。