- 博客(106)
- 收藏
- 关注
Python字典对象实现原理
原文链接:http://foofish.net/blog/92/python_dict_implements字典类型是Python中最常用的数据类型之一,它是一个键值对的集合,字典通过键来索引,关联到相对的值,理论上它的查询复杂度是 O(1) :>>> d = {'a': 1, 'b': 2}>>> d['c'] = 3>>>...
2015-12-25 01:07:43
524
Python 整数对象实现原理
原文:http://foofish.net/blog/89/python_int_implement整数对象在Python内部用PyIntObject结构体表示:typedef struct { PyObject_HEAD long ob_ival;} PyIntObject;PyObject_HEAD宏中定义的两个属性分别是:int ob...
2015-12-11 00:06:30
418
原创 关于mock和stub
注:这篇文章来自于 意外收获,关于mock和stub 中的评论,由于pocket没法把评论也收藏,因此特摘抄了 frostred 的评论,文章版权归原作者所有很高兴前面的一点文字能对你有所帮助。事实上,写东西时候,也是对自己的思想整理和精炼的过程,所以可以说是互相帮助吧。你要是有什么疑问或不同意见,可以指出来,我们可以再深入探讨。好了,下面说说我对Mock/Stub区别的看法。首先,我想...
2014-05-06 13:53:51
383
原创 Django Paginator
Django分页的基本操作在Django文档有简单的例子,基本上看一下就知道。核心代码在django.core.paginator.py中。 分页对象Paginator:只需提供两个必要的参数,第一个就是用于展示的数据(object_list),第二参数就是每页显示的大小(per_page),提供了这两个参数,其他的都好说:Paginator.count:数据总量Pagi...
2013-06-10 00:38:15
202
原创 Django 自定义模版标签和过滤器
1、在app中新建templatetags目录,目录中新建__init__.py文件名的空文件。2、编写自定义过滤器 test_filter.py #!/usr/bin/env python#coding:utf-8from django import templatefrom utils.timebefore import timebeforeregiste...
2013-06-08 21:30:30
199
Python timedelta
datetime.timedelta对象代表两个时间之间的的时间差,两个date或datetime对象相减时可以返回一个timedelta对象。 构造函数:class datetime.timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]])所有参数可...
2013-05-23 12:16:23
1149
1
Django RequestContext
模版中的变量由context中的值来替换,如果在多个页面模版中含有相同的变量,比如:每个页面都需要{{user}},笨办法就是在每个页面的请求视图中都把user放到context中。 from django.temlate import loader,Contextt = loader.get_template('xx.html')c = Context({'user'...
2013-05-21 23:57:37
183
Python 虚拟环境:Virtualenv
(体验更好的阅读效果,戳这里)virtualenvvirtualenv用于创建独立的Python环境,多个Python相互独立,互不影响,它能够:1. 在没有权限的情况下安装新套件2. 不同应用可以使用不同的套件版本3. 套件升级不影响其他应用安装sudo apt-get install python-virtualenv使用方法virtualenv [虚拟环...
2013-05-20 16:45:06
2248
Python处理JSON
Python处理JSON(如果阅读效果不佳,可戳这里)概念序列化(Serialization):将对象的状态信息转换为可以存储或可以通过网络传输的过程,传输的格式可以是JSON、XML等。反序列化就是从存储区域(JSON,XML)读取反序列化对象的状态,重新创建该对象。JSON(JavaScript Object Notation):一种轻量级数据交换格式,相对于XML而言更简...
2013-05-04 21:39:56
1862
Python yield 生成器
yield:生成器任何使用yield的函数都称之为生成器,如:def count(n): while n > 0: yield n #生成值:n n -= 1 另外一种说法:生成器就是一个返回迭代器的函数,与普通函数的区别是生成器包含yield语句,更简单点理解生成器就是一个迭代器。使用yield,可以让函数生成...
2013-04-24 00:06:24
157
每日一Vim(29)ctags
每日一Vim(29)ctags每日一Vim系列文章到目前刚好30篇,内容差不多可以应付日常工作的百分之七八十,当然还有很多细节包括插件,以及如何编写自己的插件等等。从这篇文章开始,我会把脚步稍微放慢点,进一步放低更新频率,有句话叫*easy come ,easy go*,学的快,忘得也快,还是要经常温故。好了,上次有篇文章讲了ctags、taglist等插件的安装,今天讲讲怎么使用ctags...
2013-04-22 02:03:07
136
每日一Vim(28)全局命令
每日一Vim(28)全局命令全局命令在Vim中有这举足轻重的作用,特别对于那些重复性的工作尤为有效,它能对匹配的所有行执行某个命令,先来看看它的语法::[range]global[!]/{pattern}/{command}[range]指定作用范围,默认global命令作用于整个文件,不像:normal等命令,normal默认是作用于当前行。{pattern}:对于ran...
2013-04-17 22:11:49
155
原创 每日一Vim(27)高亮所有搜索模式匹配
每日一Vim(27)高亮所有搜索模式匹配今天的内容很简单:-) * 向后搜索光标所在位置的单词# 向前搜索光标所在位置的单词n和N可以继续向后或向前搜索匹配的字符串:set hlsearch 高亮所有匹配字符串:nohlsearch 临时关闭,他的缩写形式是::noh:set nohlsearch 彻底关闭,只有重新:set hlsearch才可以高亮搜索:nnormap &...
2013-04-16 11:18:55
641
每日一Vim(26)Normal 命令
每日一Vim(26)---跨行执行〈Normal模式下的〉命令以往,要想在多行执行normal 模式下命令可以通过定义宏来重复操作,今天讲个新鲜的。:normal命令。之前讲过一个列子,实现注释多行代码这样一个需求,可选的方法如下三种方式:(当然你还可以相出更多的办法来)import urllib2def html(): f = urllib2.urlopen("ht...
2013-04-15 02:59:57
886
每日一Vim(25)filetype---- 文件类型检测
每日一Vim(25)filetype---- 文件类型检测当你用Vim打开某种编程语言的文件时,你会看到关键字,函数名等等都会高亮,下图是两个内容一样,名称不一样的文件,一个是txt,一个是py,明显能看出txt文件显示并不是那么友好。这就和filetype有关系啦。执行:filetype可以查看Vim的文件类型检测功能是否已打开,默认你会看到:detection:ON plu...
2013-04-12 01:38:25
1387
每日一Vim(24)行复制与移动
每日一Vim(24)行复制与移动很开心看到 @kidneyball童鞋一口气在上一篇文章中提了三个建议,而且都很有建设性,当然还要谢谢@isensen等童鞋,又在催我了。这下动力又有了,今天继续写,不过我的写的时候呢,没有太多的章法,想到哪里就写哪里,学Vim是个技巧活,需要不断实践,练得好就有如身披一把AK47。今天要讲的是整行移动和拷贝,涉及的命令是::m和t。这两个命令其实是mov...
2013-04-11 10:15:08
462
每日一Vim(23)宏---Record、Play
每日一Vim(23)宏---Record、Play写这篇文章的时候想到了读高中那会儿买的第一个电子产品,某某高复读机,话说是为了学英语,呵呵,你懂的,其实是为了好玩。当时差不多花了300担,父母在子女的教育方面可是毫不手软,想想如果那时开始接触计算机互联网相关的东西了,买的就是一台电脑,我离那“一万小时定律”就要早几年完成了...言归正传。今天要说的其实就和这个复读机相关,复读机在按下复...
2013-04-10 08:35:54
271
每日一Vim(22)Tagelist初体验
每日一Vim(22)Tagelist初体验Taglist 插件一个源代码浏览器,这个插件在今年发布了4.6的版本,4.5还要追溯到2007年Taglist需要结合ctag才能使用,否则会出现:Exuberant ctags (http://ctags.sf.net) not found in PATH.Plugin is not loaded这样的错误。下载安装:ctagta...
2013-04-08 00:04:42
242
每日一Vim(21)又谈abbreviation
每日一Vim(21)又谈abbreviationVim有一句哲学是这样说的:“if you write a thing once,it it okay,However,if you're writing it twice or more times,then you should find a better way to do it"。这句话估计也是引用软件开发里面的DRP(Don'...
2013-04-07 02:30:47
373
每日一Vim(20)Vim 编码设置
每日一Vim(20)Vim 编码设置Vim的编码选项vim编码涉及四个概念,分别是enc,fenc,fencs,tenc,一般乱码多是因这些参数设置不正确引起的,要想彻底摆脱vim的乱码问题,还是把这四个概念理清楚了,下面详细介绍之。enc(encoding)enc的全称为encoding,这是Vim内部使用的编码,如buffer,寄存器中的字符串。在Vim打开文本后,如果它的...
2013-04-04 23:18:15
168
原创 每日一Vim(19)Visual-Block 模式
每日一Vim(19)Visual-Block 模式从这节开始做点小小变化,增加一些例子的成分,这些例子一般来自于实际编程情景中,算是理论与实践相结合。Visual-Block模式一个非常强大的功能就是它支持列操作,比如在某个代码块每行的行首插入注释符号。举例说明:假如有如下Python代码,我想把它全部注释for e in exclude:if e.endswith(".py")...
2013-04-02 21:05:05
831
原创 每日一Vim(18)Text-Object
每日一Vim(18)Text-Object前两节讲了Visual mode相关内容,这里提一个小问题,“如何选择一个单词?”3秒后...,你可能会使用命令vw,很不幸的是它会把下一个单词的首字母也选中。如果你足够细心的话,你会发现答案在之前的章节中讲过,命令是:viw。它的作用是选取一个单词(word),无论光标在这个单词的哪个位置都能选中整个单词,那么i到底有什么作用呢?这就是今天要讲解的...
2013-04-02 03:09:00
499
1
原创 每日一Vim(17)Visual 模式(1)
每日一Vim(17)Visual 模式(1)Visual 模式的三种子模式(基于字符,行,块)可以对不同文本域进行处理,这一小节看看如何使用这三种模式以及他们之间如何切换。字符可视化模式可以对任何单个字符或字符串甚至是多行进行处理,通常适用于处理单词或者词组,如果是想处理整行,那么就可以使用(line)行可视化模式,*块可视化* 则可以对文档区域操作,支持列操作。normal 模式下,...
2013-04-01 01:50:54
188
原创 每日一Vim(16)Visual 模式(0)
每日一Vim(16)Visual 模式(0)前两天没更新,这里要对不起 isensen 等童鞋了:-),这两天写代码比较多,就落下来没写了,当然这其实是借口,昨天确实堕落了一天。**有错就改**,以后尽可能保证每周有五篇简短的文章_say less,do more_,谢谢isensen等童鞋每天光顾这里,你们的建议是我前进的动力。Vim的Visual模式(中文称之为可视化模式)可以对所...
2013-03-29 22:39:28
170
原创 每日一Vim(15)折叠(fold)
每日一Vim(15)折叠(fold)抱歉,今天的文章可能写的很难懂,还请大家多多包涵。写程序遇到大段的代码时,如果想像Eclipse一样把函数都折叠起来,只显示函数的签名,或者折叠一个函数中小段代码,这样一来,整个文件的代码结构一览无余,非常清晰,如果要查看函数里面的具体内容就打开,对程序员来说这是很实用的技巧。Vim用命令foldmethod实现折叠功能,一共有六种折叠方式,可以用:s...
2013-03-27 23:57:40
620
原创 每日一Vim(14)标签页(tab)
每日一Vim(14)标签页(tab)上期讲了多窗口的一些操作,其中有提到把一个窗口移动标签页的技巧,命令:ctrl+w+T,今天就来简单聊聊标签页的操作。新建标签页:tabe 新建未命名的标签页:tabe file 在新标签页中打开或新建文件file :tabnew 和tabe命令功能一样:tab split 在新标签页中打开当前窗口...
2013-03-25 22:33:33
437
每日一Vim(13) 多窗口
每日一Vim(13) 多窗口题外话之Vim的简史:Vim是vi演化过来的,其全名叫vi Improved.最初是由一个叫做Bram的大神在vi的基础上开发出来的。她的设计目标是成为一个可靠而且可以为专业程序员所依赖的编辑器。在每日一Vim(4)谈过一点点多文件编辑的内容,今天稍微详细的讲解多窗口的编辑。默认情况下,Vim只为一个session打开一个窗口,可以用参数**-o**来打开...
2013-03-24 21:34:51
169
每日一Vim(12)ab与map命令
每日一Vim(12)ab与map命令ab命令:ab命令可以将一长串字符用缩写来定义,这有点象Linux中的alias,比如Linux中的ll命令就是ls -l的别名,ab的语法为::ab abbr phraseabbr就是对phrase的简写,在insert 模式中,输入abbr,再按非字母字符(比如空格,点号等)Vim就自动把phrase插入到光标处位置。此情景一般用在...
2013-03-22 00:20:05
680
原创 每日一Vim(11)标记
每日一Vim(11)文件保存高级篇以下部分命令在之前的篇幅中有涉及过,有句话说的好:*vim对新手最痛苦的是选择太多,不知所措,对老手来说最让人快乐的是一个问题总有不同的解决方法,而对寻找最优方法乐此不疲*,细心的读者相信您都能从中总结出自己的规律以及经验来。:w new_file:将缓冲区内容保存为new_file文件,原文件内容不更改。:20,$w new_file:将文件...
2013-03-21 01:08:04
215
原创 每日一Vim(10)正则表达式
每日一Vim(10)-----正则表达式首先鄙视一下自己,写了这么期Vim竟然没一篇是用Vim写出来的,因为需要同步,所以主要用的Evernote,但是Eevernote有缺陷啊,不支持markdown语法,于是今天痛改前嫌,决定用github来托管。在网上找了两个资源,一个是markdown-preview---这是一个预览markdown语法生成文件的chrome插件,第二个是vim-...
2013-03-19 23:28:14
123
每日一Vim(9)缩进
每日一Vim(9)----缩进缩进在程序开发的时候是实用的一个功能,尤其Python这种靠缩进来组织代码段的语言来说更重要了。今天特意google了下vim缩进,结果很失望,有的只有配置没有说明,有说明的也没说清楚,特此自己总结一下。normal 模式下:>> 当前行增加缩进<< 当前行减少缩进insert模式下:CTRL+SHIFT+T...
2013-03-19 01:25:01
236
每日一Vim(8)寄存器
每日一Vim(8)---Vim寄存器先抛出一个问题:每次打开Vim,想找一段文本来练练手,于是打开网页copy了一段,问题来了,怎样粘贴到vim的编辑器里头去呢?如果你还在CTRL+v的话,说明你还无法割舍Windows,就像东方姑娘忘不了令狐冲):这里暂且告诉你如何粘贴:SHIFT+INSERT 两个键联合起来。再来看下面的原理 寄存器是Vim用来存储文件的临时空间,当使用命令y(yan...
2013-03-17 23:33:58
205
原创 Python中的*args与**kwargs
Python中的*args与**kwargs和装饰器函数调用中的*args**kwargs对于函数签名:def check_web_server(host,port,path):一般的调用方法就是传递三个值到该方法中,如果有一个元组如:host_info=('localhost',80,'/')`此时就可以用*args的方式来调用,即:check_...
2013-03-17 21:24:10
190
原创 每日一Vim(7)自动补全
每日一Vim(7)自动补全抱歉,昨天没写,看电视走火入魔,花了一个通宵把笑傲江湖看完了): 上期总结了100个vim的上,但没有下,隔段时间在写,因为那些使用的频率相对来说要少 注:以下命令都是在插入模式下执行。单词自动补全:CTRL+n :当你输入第一个字母的时候,再CTRL+n,自动出现下拉菜单,单词默认选中第一个,继续CTRL+n,CTRL+p可以上下切换,或者用方向键(太慢...
2013-03-16 19:02:31
387
每日一Vim(6)常用命令总结
每日一Vim(6)程序员应该知道的100个Vim命令(上)自从70年代起,Vi就是程序员最好的朋友之一既是你是Vi菜鸟都无所谓,这里为你准备了100条实用的命令列表,以主题的形式组织,他们能让你的代码生活更美好。今天就来点纯练手的东西吧,以后再每个专题说说基本命令:e filename 打开文件编辑:w 保存:q 退出Vim:w! 保存文件退出...
2013-03-15 02:37:18
196
原创 每日一Vim(5)c命令
每日一Vim(5)c命令今天呢,就写一个命令C,他的基本功能是:删除--->剪切---->进入插入模式c命令详解:C or c$表示修改当前行上光标后面的部分. 进入编辑状态.c0 or c^表示从光标处到当前行行首的部分进行修改,^代表首个非空格处。cc OR S修改当前行. 进入编辑状态.cw从光标所在的位置开始到该单词结束进行修改. 进入编辑状态c...
2013-03-13 23:43:56
1142
原创 每日一Vim(4)多文件编辑
每日一Vim(4)多文件编辑编辑另一个文件:如果要是在当前窗口编辑另一个文件最简单的办法就是 :e xxx.txt,这样做有个缺点就是前一个窗口会关闭,而且如果那个文件修改后还没保存,那么还会发出警告,提示是否强制退出。 如果想编辑新的文件,但是又不想放弃当前的文件,那么你可以先把他变为一个隐藏的缓冲区::hide e xxx2.txt,xxx2.txt保存退出后,按ENTER又会回到...
2013-03-12 23:08:20
201
原创 每日一Vim(3)替换
每日一Vim(3)发现昨天写的文章读起来感觉比较乱,今天争取写好看一点,读起来清楚一点,今只就讲解两个功能,替换和多文件编辑替换vim可以借用正则表达式来实现丰富的替换功能,她的基本语法是::[addr]s/源字符串/目的字符串/[option],我们可以看出addr和option是可以缺省不填的,他们各个字段的意思是:[addr]代表检索范围,缺省表示当前行,1,1...
2013-03-12 03:35:18
228
原创 每日一Vim(2) 简单搜索
每日一Vim(2)上一篇主要讲解了Vim的翻页(整页,半页,往上,往下),移动(单词,在一行中),拷贝(主要是y的各种组合)删除(主要是d的各种组合),今天主要简要讲解一下vim的配置(直接在当前session中通过命令配置)以及简单的搜索功能。配置注:以下配置只能在当前vim窗口(Session)中生效,以后我们再了解如何在把这些设置写入配置文件中。:set filetype...
2013-03-11 02:38:06
268
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人