博文

目前显示的是 一月, 2016的博文

最近的一些Python心得点

都是一些零散的东西,但是知识就是这么零散的积累起来的。 一、用dict的setdefault来给字典赋默认值,而不是去写if key not in: res = {} for i in music_tag_source: tag = res.setdefault(i.get('music_id'), []) tag.append(i.get(music_tag)) 二、批量生成拥默认值的dict,可以考虑使用defaultdict,这样的dict的任何key都是有自己的默认值的 from collections import defaultdict res = defaultdict(list) for i in music_tag_source: res[i.get('music_id')].append(i.get(music_tag)) 三、给类设置一个__slot__ 属性会导致实例化时不会自动分配 __dict__而只能设置__slot__中声明的属性 ,这样的小技巧可以用在那些写满了__getattr__的类中, class Foo(object): __slots__ = {'a', 'b'} if __name__ == '__main__': bar = Foo() bar.a = 1 try: bar.c = 2 except AttributeError as e: raise Excption('cannot set attrib c') from e 但是这东西有个奇怪的语法问题,就是你这样写是会报告语法错误的 class Foo(object): __slots__ = {'a', 'b'} def __init__(self): self.c = 1 但是你这么写就居然没问题 class Foo(object): __slots__ = {'a', 'b'} def __getattr__(sel

最近遇到的两个JS的Tips

一个是HTML5规范的data标签,如果你想使用驼峰的话,记住是data-a-b,最后会自动变成aB,如果直接写data-aB是取不出来的,会变成ab的。 这个是写在HTML5规范中的,我想大概是因为XHTML中不不允许HTML标签有大写,所以不允许这样吧,至于驼峰估计是规则制定者的爱好了吧。 另外一个大概是JQuery的特性,如果写入在data属性的数值,取出来的时候是int,而不是str,这个特性其实挺莫名其妙的,因为这并不像html的input type=number中的元素的value属性,这个取出来一定是数值是因为我指定了它的Type是number,但是data明显可以是一个任意类型,总之,如果在jshint指定了一定要使用===进行类型判断比较的话,记得回避这个坑。