关键词:Python
有时候容易忘记的东西,记于此。
这一节,我们讨论一下Python
的易忘易混知识。并进行梳理。
数据类型与变量
|
|
|
|
字符串与编码
在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码
由于Python的字符串类型是str
,在内存中以Unicode表示,一个字符对应若干个字节。如果要在网络上传输,或者保存到磁盘上,就需要把str
变为以字节为单位的bytes
。
Python对bytes
类型的数据用带b
前缀的单引号或双引号表示:
|
|
要注意区分'ABC'
和b'ABC'
,前者是str
,后者虽然内容显示得和前者一样,但bytes
的每个字符都只占用一个字节。
牢记,str
是在内存中使用的,bytes
是在磁盘或者网络传输中使用的,因此,需要相互转换。
纯英文的str
可以用ASCII
编码为bytes
,内容是一样的,含有中文的str
可以用UTF-8
编码为bytes
。含有中文的str
无法用ASCII
编码,因为中文编码的范围超过了ASCII
编码的范围,Python会报错。
强烈建议,所有的编码和解码都是用UTF-8
|
|
反过来,如果我们从网络或磁盘上读取了字节流,那么读到的数据一般是utf-8
编码的bytes
。要把bytes
变为内存Unicode
编码的str
形式,就需要用decode()
方法
|
|
循环
|
|
函数的参数: args *kw
返回值可以是多个
|
|
默认参数的设置:降低调用函数的难度
|
|
可变参数:使用*,传入的是一个任何长度的数组
顾名思义,可变参数就是传入的参数个数是可变的,可以是1个、2个到任意个,还可以是0个。
|
|
定义可变参数和定义一个list或tuple参数相比,仅仅在参数前面加了一个*
号。在函数内部,参数numbers
接收到的是一个tuple,因此,函数代码完全不变。但是,调用该函数时,可以传入任意个参数,包括0个参数
|
|
|
|
关键字参数:
可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。
|
|
递归函数
在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。
|
|