苟利国家生死以,岂因祸福避趋之

Panda Home

理解 Python 的上下文管理器

发布于 # 聊聊技术
标签: # Context Manager # Python # with # 上下文管理器
理解 Python 的上下文管理器
Photo by Beatriz Pérez Moya on Unsplash

任何 Python 教程,必然会讲解如何打开一个文件。而任何提到打开文件的地方,都必然会推荐用 with 来操作文件的读写。比如说这里有一篇非常优秀的教程,文中提到 在 Python 中,文件读写是通过 open() 函数打开的文件对象完成的。使用 with 语句操作文件 IO 是个好习惯。 并且给出了详细的代码示例。但为什么 with 关键字能在结束这个 block 的时候自动调用 close() 呢?让我们去一探究竟。 知 首先来看一下 with 是怎么来的。 with 在提案 PEP 343 中首次被提出,其中有段对于 with 操作的详细说明。用下面的一小段代码来说明就是,要求 EXPR 的类实现了 __enter__ 和 __exit__ 方法。 with EXPR as VAR: BLOCK 进入 with 代码块之后,第一件事就是把 __enter__ 的返回值

会说话的数据—— D3.js 折腾小记

我一个写后端代码运维服务器的,怎么就去搞前端数据可视化了呢? 接触 D3.js 纯属机缘巧合,但既然现在的工作跟数据打交道,数据的可视化总是不可避免的,学了总没什么坏处。由于是前端小白,所以不可避免的会掉入一些看起来很可乐的坑,因此随便写一篇小文章,记录一下自己折腾的过程。 起 D3 的名字由来从它的官网就能看出来, Data-Driven Documents ,三个 D ,不愿意发那么多音,所以这帮老外就简称 D3 。这套可视化工具还是挺流行的,比如说我最近在搞的 Airflow 就利用 D3 来进行一个 DAG 运行状态的可视化。具体举例来说, Airflow 利用 D3 进行一个 DAG 中每个任务运行时间的表示,代码可以参见这里。我也从官网上找到了一个示例图片,画出来还是很直观很漂亮的。 <figure> <figcaption> Task Durat

我的 2018

发布于 # 随便聊聊
标签: # 2018 # 年终总结 # 谈笑风生
我的 2018
Photo by Charles Deluvio 🇵🇭🇨🇦 on Unsplash

谈笑风生又一年 又到了一年一总结的时候了,过去干了这一年也没有什么别的,大概三件事 年初回国过年期间,拜读了名人传记,学习到了很多人生经验,也更加理解了何为“苟利国家生死以,岂因祸福避趋之” 年中回来开始筹备,于八月份顺利再就业,跳槽到了一家钱多离家近的公司。不敢说事少,因为入职以来三个月确实忙了不少,但相应的也算身经百战了 跳槽期间搬了个家,到了阳谷县火车站附近,离人气更近了一些,更有生活的感觉,便利程度自然不用多说,到哪里,做什么事情都很方便。没想到美帝大村也可以有这种便利程度不输国内的地段 当然三月份开发的浏览器插件也是很大的,得到了几百个用户的一致好评,但后续的开发支持也随着跳槽日程的推进而荒废了。刚刚去开发者后台上看了看,惊喜的发现今天还有几个新的安装,或者是得想办法稍微完善一下了。 其他的无非就是多了一年的人生经验,搬了一年砖,手头比去年这个时候稍微充裕了些

游湾区西山岭

发布于 # 聊聊旅行
标签: # Monte Bello Open Space Preserve # 游记 # 湾区
游湾区西山岭
Photo by Cory Schadt on Unsplash

不来这个湾区名山遗憾了 2018年底,时值西方国家圣诞假期,湾区众壕纷纷出游,谷内道路畅通,作为家里蹲一员不愿荒废大好时光,趁天晴到湾区西山岭一游。 印象里湾区的西边是海,如果不是去海边,还真没有想过去西边的山里闲逛,所幸冬日的阳光还是把我拽出了家门。出门不需要太远的距离,也就三四十里路,车就爬到了山坡上,道路两旁的植被从高大的树木变成了低矮的灌木和荒草,街边的房屋也从谷里密密麻麻的小房子变成了高墙深院的大宅子,再不多时,房屋也不见了,代之以零星出现的木栅栏,可能是山上的牧场吧,这时此行的目的地也就快到了。 停车场在一片高岗之上,四下开阔,湾区特殊的气候使得整个山头仍然呈现一片偏黄的绿色,也有孤零零的几棵大树,轻轻晃动,和着山间微风的声音。空气很静,只有偶尔汽车经过时轮胎与路面的摩擦声,以及少量的人声。这边的山间小路与国内不同,都是没怎么刻意修整过的,随便弄的稍平一些,最多再稀稀拉拉的

Python 的魔术方法

发布于 # 聊聊技术
标签: # Dict # Python # Magic methods
Python 的魔术方法
Photo by Sarah Ehlers on Unsplash

在上一篇文章中实现了一个非常简陋的 MyDict 类,仅仅可以 get 、set ,其他的各种功能都没有,甚至连在 Python shell 中正常的表示都做不到。这篇文章将会继续完善这个字典类,并同时简单介绍用到的 Python 魔术方法。 目前的 MyDict 已经有了基本的功能,但如果试图输出,就会出现如下所示的样子。 >>> from my_dict import MyDict >>> d = MyDict() >>> d["a"] = 1 >>> d["b"] = 2 >>> d["c"] = 3 >>> d <my_dict.MyDict object at 0x1028fde48> >>> print(d) <my_dict.MyDi