ARTS挑战——第四周

简介:ARTS,即Algorithms Review Tip Share 的首字母缩写。这项挑战由知名博主、技术大牛 「左耳朵耗子」发起,挑战内容为每周至少:

  1. 在LeetCode上完成一道算法题
  2. 阅读并点评一篇英文技术文章(推荐 techcrunchreadwritedzone(无需梯子))
  3. 总结发现一个技术技巧
  4. 分享一篇有思想和见解的技术文章

Algorithms

寻找两个有序数组的中位数(Python3)


Review

原文:3 Surprising Benefits of the Cloud in IoT
点评:
文章主要介绍了使用云的三种好处,分别是:有利于数据集成、增加安全性和可靠性、云配合边缘计算带来的商业利益。


Tip

分享一个总结的通用方法,收集错误类型和详细信息:

import sys
def common_error(data: str):
    """
    捕获异常时打印详细错误信息,用于 except 后
    :param data:
    :return:
    """
    info = sys.exc_info()
    print("{}:".format(data), str(info[0]), ",", str(info[1]))

Share

接口、动态绑定和抽象类

这周开始准备啃一啃之前落下的《Java编程思想》,之前因为工作原因,丢下了 Java 很久,以为转 Python 之后,也就没必要两种语言齐头并进了。随着对 Python 的逐渐深入,慢慢了解到,Python 语言系统的很多设计思路与 Java 很类似,甚至很多知识点,在 Python 类技术书籍中很少有讲清楚的,市面上很多教程和书籍讲的都很「浅」,仅仅「辄止于」如何使用一些模块和高级语法、函数等。

都说 Python 「简单」,但是就我近一两年所见,无论是博客还是专业书籍,还是论坛上的讨论深度,都很少提到其深层次的设计原理和实现,更无所谓一些优化方案了。类似的知识,还是经过长时间市场检验的 Java 的生态更丰富。

正好两种语言也有相似之处,准备通过研究 Java 的相关知识,来反馈 Python 的学习。正所谓「他山之石可以攻玉」,当然了,Java 未必只是「石」。

就比如书中提到的关于接口、动态绑定和抽象类之间的关系,之前如果只是「会用」,那么看过之后可以说清楚很多了。

基础类和衍生类的概念来自重要的oop特性「继承」,主要是为了增加程序的扩展性,而编译器和运行时系统会通过动态绑定,来帮助我们实现,所以我们就可以在编程时忽略掉相关的类型细节。有时候,我们仅仅想让基础类提供某些接口,通过衍生类来具体实现,那么加上 abstract 关键字使其变成抽象类,编译器就会进行有效的限制。甚至我们想让基础类仅仅提供方法(行为)的定义,那么它就变成了接口(interface),这样三者的关系就很了然了。

了解了上面的关系和设计思想,虽然在 Python 中没有类似 abstract 和 interface 这些关键字,但是我们就可以自己实现一个类似的基础类,通过其他手段——比如入参校验和分层解耦——来进行限制,达到类似的功能。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容