Month: 9 月 2018

莫莫 29 个月

暑假结束了,爸爸回去接回杭州,回来后开始接受坐餐椅了,应该是回杭州后第一顿在外面吃,坐的餐椅,果然一个好的开头很重要

还是要看电视,不过相对之前看的少一些,动不动就会来一句「我有一个假设」,学自「恐龙列车」里的巴迪

各种死缠爸爸,要爸爸喂奶(还会特意说「妈妈喂不好」),要爸爸给讲故事,睡觉要爸爸陪睡。不过喂饭的时候就不要爸爸喂,知道爸爸做这些事不靠谱么?

进入强烈的物权欲时期,不让别人动他的东西,出去玩带的玩具被别的小朋友动了会立马跑过去阻止别人

开始愈发执着,比如执念某个玩具,在家里到处找不到后,对着贴墙上的某照片背景里露出的一角,特意指出来说我要这个

学爸爸管妈妈叫「叶大喵」

这是我爸爸妈妈买给我的

在老家时发烧了,非得玩耳温枪,外婆不给,就这么跟外公外婆争辩

我有一个妮妮就行了,太多了我抱不过来的

还是经常抱着毛绒小兔兔,问他要不要换一个,想想后这么回答

习惯性的说「不知道」,一是懒二估计是烦我们经常对他问来问去,而且小朋友跳着发音,经常说的是「不道」

会数数,但是又懒得数,问他什么有几个,数一数好不好,就会抛回来说「你数」

终于可以自己滚睡了,晚上躺他旁边不说话,想睡了自己滚滚还是能睡着。白天睡着了后,如果还要睡的话,摇不醒了

出去玩各种要抱不想走,各种理由:「我累了」,「我还小」,「要抱的」

现在不要尿不湿或拉拉裤了,会说「勒着痛」,晚上睡觉怕尿床,都只能在他睡着后再给他穿上,早上起床就要去掉

回杭州前几天在老家跟人跑着玩,摔了一跤两个膝盖擦伤了,自己说腿上「有一个疤疤」,掉了后要「丢到垃圾桶去」,问他还痛不痛会很委屈的说「还痛」

Python decorator 库

上个月关于 Python 的 Decorator 写过一篇 Python 多层 decorator 内获取原始函数参数字典,后来熊提醒这种比较通用的东西应该都会有现成的库,搜了下果然有 个库就叫 Decorator

相关的项目地址在

看了下源码,他比之前我的做法更进一步,直接把要修饰的原方法的名字和参数,都扫代码解析出来,再到一个解析器的临时文件里原样写一个新的方法,并把相关需要复制的参数属性等都直接复制给这个新方法,这个新方法再调修饰方法,就可以更完美的实现对外界透明

例如这样的代码

def foo(x, y=2, *args, **kw):
  print(x)

def dec(func):
  def wrapper(*args, **kw):
    print("called %s with %s, %s" % (func.__name__, args, kw))
    return func(*args, **kw)
  return wrapper

foo = dec(foo)

在经过了 @decorator 后会变成

_func = foo
_caller = wrapper

foo = def foo(x, y=2, *args, **kw):
  return _caller(_func)(x, y, *args, **kw)

只有一些涉及到 func_code 内存地址的地方才可以发现不一样

果然还是有库用库,绝大部分情况人家还是实现得更好,就是原理能不能看懂了。自己折腾的好处是正向推过去,坑和原理都比较了解,而反向看别人的代码,有很多奇妙的地方先想明白为什么要考虑这个情况,以及这个情况为什么要这样处理,都需要花很久

最后小吐槽一下,在 decorator 库里,如果是 py3,replace('return', 'return await') 真的没问题?如果有人逗比写了个 returnVal = xxx 不就崩了