Python 100天-從新手到大師學習筆記Day16~20:Python進階

常用的演算法:

穷举法 — 又称为暴力破解法,对所有的可能性进行验证,直到找到正确答案。贪婪法 — 在对问题求解时,总是做出在当前看来最好的选择,不追求最优解,快速找到满意解。分治法 — 把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题,直到可以直接求解的程度,最后将子问题的解进行合并得到原问题的解。回溯法 — 回溯法又称为试探法,按选优条件向前搜索,当搜索到某一步发现原先选择并不优或达不到目标时,就退回一步重新选择。动态规划 — 基本思想也是将待求解问题分解成若干个子问题,先求解并保存这些子问题的解,避免产生大量的重复运算。

物件導向:

三大支柱封装、继承、多态类与类之间的关系is-a关系:继承has-a关系:关联 / 聚合 / 合成use-a关系:依赖

物件導向設計原則

单一职责原则 (SRP)- 一个类只做该做的事情(类的设计要高内聚)开闭原则 (OCP)- 软件实体应该对扩展开发对修改关闭依赖倒转原则(DIP)- 面向抽象编程(在弱类型语言中已经被弱化)里氏替换原则(LSP) — 任何时候可以用子类对象替换父类对象接口隔离原则(ISP)- 接口要小而专不要大而全(Python中没有接口的概念)合成聚合复用原则(CARP) — 优先使用关联关系而不是继承关系复用代码最少知识原则(迪米特法则,LoD)- 不要给没有必然联系的对象发消息

多線程和多進程比較

以下情况需要使用多线程:程序需要维护许多共享的状态(尤其是可变状态),Python中的列表、字典、集合都是线程安全的,所以使用线程而不是进程维护共享状态的代价相对较小。程序会花费大量时间在I/O操作上,没有太多并行计算的需求且不需占用太多的内存。以下情况需要使用多进程:程序执行计算密集型任务(如:字节码操作、数据处理、科学计算)。程序的输入可以并行的分成块,并且可以将运算结果合并。程序在内存使用方面没有任何限制且不强依赖于I/O操作(如:读写文件、套接字等)。

Written by

Machine Learning / Deep Learning / Python / Flutter cakeresume.com/yanwei-liu

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store