廖雪峰python教程笔记(一)

知识总结

  1. 变量与变量名a = 123,此时,python解释器在做了两件事,在内存中创建了一个整数123对象,在内存中创建了一个名为a的变量。并把它指向123,一个赋值语句被执行后,内存中一个变量名与它所指向的对象就是一对一的映射关系

  2. 把函数作为参数传入称为高阶函数,map()函数接受两个参数:函数和iterable,如map将传入的函数依次作用到序列的每个元素,并把结果作为新的iterator返回,又如sorted()函数也是一个高阶函数,它还可以接收一个key函数来实现自定义的排序,key指定的函数将作用于list的每一个元素上,并根据key函数返回的结果进行排序,要进行反向排序,不必改动key函数,可以传入第三个参数reverse=True

  3. 字符编码 8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),最早只有127个字母被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,但是随着计算机的不断发展和普及,各国有各国的标准,就会不可避免地出现冲突,结果就是,在多语言混合的文本中,显示出来会有乱码。Unicode应运而生。Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。Unicode标准也在不断发展,但最常用的是用两个字节表示一个字符。ASCII编码是1个字节,而Unicode编码通常是2个字节。如果统一成Unicode编码,乱码问题从此消失了。但是,如果你写的文本基本上全部是英文的话,用Unicode编码比ASCII编码需要多一倍的存储空间,在存储和传输上就十分不划算。
    所以,本着节约的精神,又出现了把Unicode编码转化为“可变长编码”的UTF-8编码。UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间。

  4. tuple和list tuple和list都是有序列表,区别在于tuple不可变而list可变。注意定义只有一个元素的tuple时应用这种形式a=(1,)

  5. 条件判断 特殊形式为if x:print('True')只要x是非零数值、非空字符串、非空list等,就判断为True,否则为False。

  6. dict 使用键-值(key-value)存储,dict根据key来计算value的存储位置。通过key计算位置的算法称为哈希算法(Hash)。要保证hash的正确性,作为key的对象就不能变,并且key不能重复。

  7. set 和dict类似,是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。要创建一个set,需要提供一个list作为输入集合。set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作。

  8. 借助抽象,我们才能不关心底层的具体计算过程,而直接在更高的层次上思考问题

  9. 函数 Python的函数返回多值其实就是返回一个tuple,在语法上,返回一个tuple可以省略括号,而多个变量可以同时接收一个tuple,按位置赋给对应的值

  10. 函数的默认参数必须是不可变对象,*args可变参数,args接收的是一个tuple。**kw关键字参数,kw接收的是一个dict

  11. 生成器(generater)是为了节省空间,一边循环一边计算后续的元素,这样就不用创建完整的list。生成器保存的是算法,并且生成器是一个可迭代对象,一般用for来调用,当推算的规则太复杂,我们可以用函数,当一个函数中出现了yield语句,它就变成了一个生成器

  12. 迭代器(iterator):可以直接作用于for循环的对象统称为可迭代对象,可以被next()函数调用并不断返回下一个值的对象称为迭代器,它表示的是一个数据流,一个惰性计算的序列,我们可以把它看作一个有序序列,但是我们事先不能知道他的长度,因此list,str不是迭代器##

小技巧

str[::-1], 字符串反转

你可能感兴趣的:(廖雪峰python教程笔记(一))