https://www.cnblogs.com/zzzlw/p/9286828.html https://www.cnblogs.com/Presley-lpc/p/9903300.html https://blog.csdn.net/henku449141932/article/details/80838660 https://blog.csdn.net/panda996/article/details/84791609 https://blog.51cto.com/ljbaby/2348736 http://python.jobbole.com/87239/