工欲善其事必先利其器, 最近用了三个月的时间把python的基础认认真真过了一次, 不知不觉发现了自己以前的很多学偏了的东西, 这才真正的开始了解python.

Python的魅力

以前是真的没有感觉过Python 的魅力, 仅仅是觉得是真的很好用,比较适合用来 上手, 等到自己真的去深入的学习了, 就真正了解了Python的魅力.
Python和 面向对象的紧密相关, 比如鸭子形态, 这是Python的特性. 何为鸭子形态, 就是如果一个对象, 会游泳,会叫, 会吃东西就是鸭子, 并不在乎这个对象 是不是真正的鸭子, 都统一看成鸭子做处理. 因此来说, python中,并不存在真正意义上的多态. 在其他语言里, 多态 是能用父类的地方,都可以使用子类, 而在Python里, 并不在乎父类和子类, 哪怕是隔壁老王都行,只要你具备了同样的属性就可以蒙混过关. 但是这样会存在一些不可控的地方, 原本只是想要一个父类或者子类, 完成某个事情, 按照这父子的特性会勤勤恳恳的完成, 如果 贸然放进来一个陌生人,这个陌生人会不会干出什么骚操作就不得而知了. 这是因为Python 是动态分配属性的, 不像JAVA和C那样是静态分配的. 因此这就决定了Python对于多态的处理就是鸭子形态.
Python里有个库,是selenium, 这个库常用于UI自动化测试中, 一般可以设置局部等待和全局等待, 局部等待就类似于私人网约车, 客人人来了, 车就开了, 没来就等一会, 超过一定的时间, 司机就会走了; 而全局等待是车站里的车, 先清点一下, 如果客人没到齐, 可以等会, 如果时间过了, 就走了,不像网约车只针对个人服务.

python的巧妙

在python里, 有装饰器, 属性描述器, 迭代器,上下文管理器等, 很多好用的对象. 装饰器是基于对闭包的应用, 等于是对某个方法的修饰, 把这个方法的一些准备工作, 不用再写在这个 方法里, 而是通过装饰器进行调用, 保持每个方法的独立性.
属性描述器, 把对某个属性的增删改查等操作提取到一个类里, 让这个类的实例对象成为某个对象的一个属性, 从而简化对某个属性的管理.
至于上下文 管理器这些, 就是 实现有 enterexit 方法的对象.
通过对这些知识点的学习, 让我感觉我之前写的项目可以优化的地方太多了.我还没有真正的学会面向对象, 我一直都是只会简单的封装对象进行操作, 从没有使用过多态, 装饰器, 描述器, 迭代器,上下文管理器这些, 我对于Python的了解还仅仅停在写脚本的阶段.

虚拟环境的学习使用, pipenv 让项目交接更加方便

以前每次重装了系统, 就需要重新安装一次环境, 原来的旧的项目文件, 会导致项目无法正常运行, 需要解决很多兼容性问题, 哪怕是重装之前进行了一次版本冻结, 交接的时候依然不是很方便.
使用 pipenv 这个库之后, 在项目创建的时候, 就用它进行建立虚拟环境, 项目交接(重装系统以后), 只需要拿到项目里的源码和Pipfile 和Pipfile.lock, 我们只需要在新项目里使用 pipenv install 就可以创建一个虚拟环境和下载这个项目文件所需要的三方库了.
这就是Python 为什么越来越火的原因, 因为现成的三方库太多了, 我们在学习的时候可以深入学习原理, 但是在使用的时候, 只需要使用现成的, 好用的三方库就可以了,站在前辈的肩膀上,可以轻松摘到树上的果子.