最近看到论坛里一直在推荐这本《疯狂Python讲义》,一时心动也买了一本来看,目前已囫囵吞枣的看了一遍,略有收获,现在将我总结的一些知识点与大家分享,有则改之,无则加勉,望不嫌弃~
一、弱类型包含两方面的含义:
1、所有的变量无需声明即可使用
2、变量的数据类型可以随时改变
Python是一门弱类型语言
二、str的常用方法
str.title():将每个单词的首字母改为大写
str.lower():将整个字符串改为小写
str.upper():将整个字符串改为大写
str.strip():删除字符串前后的空白
str.split():将字符串按指定分割符分割成多个短字符串
实例:print(s.split('.')) #使用点进行分割
str.join():将多个短字符串连接成一个长字符串
实例:print('/ '.join(list)) #使用'/'作为分割符,将list中的所有短字符串连接成一个长字符串
三、三目运算符:“a大于b”if a > b else “a不大于b” #输出a大于b
四、lambda表达式的几个要点:
1、lamdba表达式必须使用lamdba关键字定义
2、在lamdba关键字之后,冒号左边的是参数列表,冒号右边的是该lamdba表达式的返回值
五、函数装饰器:
1、将被修饰的函数(函数B)作为参数传给@符号引用的函数(函数A)
2、将函数B替换成第1步的返回值
六、Python并没有真正的隐藏机制,所以Python类定义的所有成员默认都是公开的,如果程序希望将Python类中的某 些成员隐藏起来,那么只要让该成员的名字以双下划线开头即可
七、object类是所有类的父类
八、__repr__是python类中的一个特殊方法,它返回一个对象的“自我描述”信息,
所有的python对象都具有__repr__方法
九、双端队列(deque):
如果要把deque当成栈使用,只需要在一端添加、删除元素,因此调用append和pop方法即可
如果要把deque当成队列使用,只要在一端添加元素,另一端删除元素,因此调用append和popleft方法即可
十、目录函数Path的使用:
Path.iterdir():该方法可返回Path对应目录下的所有子目录和文件
Path.glob():该方法可获取Path对应目录及其子目录下匹配指定模式的所有文件
十一、os模块的使用:
os.getcwd():获取当前目录
os.mkdir(path,mode):创建path对应的目录,mode用于指定该目录的权限
os.makedirs(path,mode):它与mkdir的区别在于它可以递归创建目录
十二、线程的生命周期:
线程的生命周期要经过新建(New)、就绪(Ready)、运行(Running)、
阻塞(Blocked)和死亡(Dead)5种状态
十三、解决线程死锁问题的几种方式:
1.避免多次锁定,尽量避免同一个线程对多个Lock进行锁定
2.保证相同的加锁顺序,如果多个线程需要对多个Lock进行锁定,则应该保证它们以相同的顺序请求加锁
3.使用定时锁
4.死锁检测机制
十四、Python为进程通信提供了两种机制:
1.Queue:一个进程向Queue中放入数据,另一个进程从Queue中读取数据
2.Pipe:Pipe代表连接两个进程的管道,程序在调用Pipe()函数时会产生两个连接端,
分别交给通信的两个进程,接下来进程既就可从该连接端读取和写入数据
十五、基于TCP协议的网络编程:
1.服务器端编程的基本步骤:
a.创建一个socket对象
b.绑定指定IP地址和端口
c.调用listen()方法监听网络
d.调用accept()方法接收客户端的连接
2.客户端编程的基本步骤:
a.创建socket对象
b.调用connect()方法连接远程服务器
十六、单元测试
1.单元测试的逻辑覆盖包括:
a.语句覆盖:每条语句都至少执行一次
b.判定覆盖:每条语句都执行,每个判定的所有可能结果都至少执行一次
c.条件覆盖:每条语句都执行,判定表达式的每种可能都取得各种结果
d.判定-条件覆盖:同时满足判定覆盖和条件覆盖,每个判定条件的各种可能组合都至少出现一次
e.路径覆盖:程序的每条可能路径都至少执行一次
总结:通常在实际测试中,基本要求是做到判定覆盖即可