文章分类 - 极客时间
摘要:你好,我是景霄。今天我们不讲任何技术知识点,继续来一起聊聊代码哲学。 有句话说得好,好的代码本身就是一份文档。同样功能的一份程序,一个组件,一套系统,让不同的人来写,写出来的代码却是千差万别。 有些人的设计风格和代码风格犹如热刀切黄油,从顶层到底层的代码看下来酣畅淋漓,注释详尽而又精简;深入到细节代
阅读全文
摘要:你好,我是蔡元楠,是极客时间《大规模数据处理实战》的作者。今天是我第二次受邀来我们专栏分享了,很高兴再次见到你。今天我分享的主题是:活都来不及干了,还有空注意代码风格吗?! 许多来Google参观的人,用完洗手间后,都会惊奇而略带羞涩地问:“你们马桶前面的门上,贴着的Python编程规范,是用来搞笑
阅读全文
摘要:你好,我是景霄。 不知不觉中,我们又一起完成了第二大章进阶篇的学习。我非常高兴看到很多同学一直在坚持积极地学习,并且留下了很多高质量的留言,值得我们互相思考交流。也有一些同学反复推敲,指出了文章中一些表达不严谨或是不当的地方,我也表示十分感谢。 大部分留言,我都在相对应的文章中回复过了。而一些手机上
阅读全文
摘要:你好,我是景霄。 众所周知,我们当代的计算机都是图灵机架构。图灵机架构的本质,就是一条无限长的纸带,对应着我们今天的存储器。在工程学的演化中,逐渐出现了寄存器、易失性存储器(内存)和永久性存储器(硬盘)等产品。其实,这本身来自一个矛盾:速度越快的存储器,单位价格也越昂贵。因此,妥善利用好每一寸高速存
阅读全文
摘要:你好,我是景霄。 前面几节课,我们学习了Python的并发编程特性,也了解了多线程编程。事实上,Python多线程另一个很重要的话题——GIL(Global Interpreter Lock,即全局解释器锁)却鲜有人知,甚至连很多Python“老司机”都觉得GIL就是一个谜。今天我就来为你解谜,带你
阅读全文
摘要:你好,我是景霄。 上节课,我们一起学习了Python并发编程的一种实现——多线程。今天这节课,我们继续学习Python并发编程的另一种实现方式——Asyncio。不同于协程那章,这节课我们更注重原理的理解。 通过上节课的学习,我们知道,在处理I/O操作时,使用多线程与普通的单线程相比,效率得到了极大
阅读全文
摘要:你好,我是景霄。 无论对于哪门语言,并发编程都是一项很常用很重要的技巧。比如我们上节课所讲的很常见的爬虫,就被广泛应用在工业界的各个领域。我们每天在各个网站、各个App上获取的新闻信息,很大一部分便是通过并发编程版的爬虫获得。 正确合理地使用并发编程,无疑会给我们的程序带来极大的性能提升。今天这节课
阅读全文
摘要:你好,我是景霄。 上一节课的最后,我们留下一个小小的悬念:生成器在 Python 2 中还扮演了一个重要角色,就是用来实现 Python 协程。 那么首先你要明白,什么是协程? 协程是实现并发编程的一种方式。一说并发,你肯定想到了多线程/多进程模型,没错,多线程/多进程,正是解决并发问题的经典模型之
阅读全文
摘要:你好,我是景霄。 在第一次接触 Python 的时候,你可能写过类似 for i in [2, 3, 5, 7, 11, 13]: print(i) 这样的语句。for in 语句理解起来很直观形象,比起 C++ 和 java 早期的 for (int i = 0; i < n; i ++) pri
阅读全文
摘要:你好,我是蔡元楠,极客时间《大规模数据处理实战》专栏的作者。今天我想和你分享的主题是:metaclass,是潘多拉魔盒还是阿拉丁神灯? Python中有很多黑魔法,比如今天我将分享的metaclass。我认识许多人,对于这些语言特性有两种极端的观点。 一种人觉得这些语言特性太牛逼了,简直是无所不能的
阅读全文
摘要:你好,我是景霄。这节课,我们一起来学习装饰器。 装饰器一直以来都是Python中很有用、很经典的一个feature,在工程中的应用也十分广泛,比如日志、缓存等等的任务都会用到。然而,在平常工作生活中,我发现不少人,尤其是初学者,常常因为其相对复杂的表示,对装饰器望而生畏,认为它“too fancy
阅读全文
摘要:你好,我是景霄。 在前面的第一大章节中,我们一起学习了Python的函数基础及其应用。我们大致明白了,所谓的传参,就是把一些参数从一个函数传递到另一个函数,从而使其执行相应的任务。但是你有没有想过,参数传递的底层是如何工作的,原理又是怎样的呢? 实际工作中,很多人会遇到这样的场景:写完了代码,一测试
阅读全文
摘要:你好,我是景霄。 在前面的学习中,我们其实已经接触到了很多 Python对象比较和复制的例子,比如下面这个,判断a和b是否相等的if语句: if a == b: ... 再比如第二个例子,这里l2就是l1的拷贝。 l1 = [1, 2, 3] l2 = list(l1) 但你可能并不清楚,这些语句的
阅读全文
摘要:你好,我是景霄。 转眼间,专栏上线已经一个月了,而我们也在不知不觉中完成了第一大章基础篇的学习。我非常高兴看到很多同学一直在坚持积极地学习,并且留下了很多高质量的留言,值得我们互相思考交流。也有一些同学反复推敲,指出了文章中一些表达不严谨或是不当的地方,我也表示十分感谢。 大部分留言,我都在相对应的
阅读全文
摘要:你好,我是景霄。 这是基础版块的最后一节。到目前为止,你已经掌握了 Python 这一门当代武功的基本招式和套路,走出了新手村,看到了更远的世界,有了和这个世界过过招的冲动。 于是,你可能开始尝试写一些不那么简单的系统性工程,或者代码量较大的应用程序。这时候,简单的一个 py 文件已经过于臃肿,无法
阅读全文
摘要:你好,我是景霄。这节课,我们来实现一个 Python 的搜索引擎(search engine)。 承接上文,今天这节课的主要目的是,带你模拟敏捷开发过程中的迭代开发流程,巩固面向对象的程序设计思想。 我们将从最简单最直接的搜索做起,一步步优化,这其中,我不会涉及到过多的超纲算法,但不可避免会介绍一些
阅读全文
摘要:你好,我是景霄。 很多朋友最开始学编程的时候,是从 C++ 或者 JAVA 语言入手的。他们好不容易磕磕绊绊地搞懂了最基本的数据类型、赋值判断和循环,却又迎面撞上了 OOP (object oriented programming) 的大墙,一头扎进公有私有保护、多重继承、多态派生、纯函数、抽象类、
阅读全文
摘要:你好,我是景霄。 上一节,我们一起学习了Python中的“常规”函数,用途十分广泛。不过,除了常规函数,你应该也会在代码中见到一些“非常规”函数,它们往往很简短,就一行,并且有个很酷炫的名字——lambda,没错,这就是匿名函数。 匿名函数在实际工作中同样举足轻重,正确地运用匿名函数,能让我们的代码
阅读全文
摘要:你好,我是景霄。 实际工作生活中,我曾见到不少初学者编写的Python程序,他们长达几百行的代码中,却没有一个函数,通通按顺序堆到一块儿,不仅让人读起来费时费力,往往也是错误连连。 一个规范的值得借鉴的Python程序,除非代码量很少(比如10行、20行以下),基本都应该由多个函数组成,这样的代码才
阅读全文
摘要:你好,我是景霄。 今天这节课,我想和你聊聊Python的异常处理。和其他语言一样,异常处理是Python中一种很常见,并且很重要的机制与代码规范。 我在实际工作中,见过很多次这样的情况:一位工程师提交了代码,不过代码某处忘记了异常处理。碰巧这种异常发生的频率不低,所以在代码push到线上后没多久,就
阅读全文

浙公网安备 33010602011771号