04
2010
1

python学习笔记(六)

1、标识符
python的标识符字符串的规则和C语言相似:
*第一个字符必须是字母或下划线;
*剩下的字符可以是字母和数字或下划线;
*大小写敏感
标识符不能以数字开头;除了下划线,数字和字母外,其他字符都不允许使用;大小写敏感意味着foo,Foo,FOO,三者是不同的标识符。
关键字也是标识符,不过是被系统保留下来,用于特殊的意义。这些保留标识符已经被系统定义,所以你不能在代码中重新定义,否则会引起语法错误。
python中有一种专用的下划线标识符,这些标识符在系统内部被自动识别为特殊的变量,其用法总结如下:
* _xxx 类的私有变量名,不能用from module import * 导入,这种变量不会随着模块被导入,你不能在类或者模块外使用它
* _xxx_ 系统定义的名字
由于python的变量没有类似于C或者JAVA等语言那么严格的权限声明机制,所以当你想要使用私有变量的时候,你只需要在变量前面加上下划线,系统会自动识别为私有的变量。
__xxxx__这种变量对python来说是有特殊意义的,只有在某些应用中才用到,所以对于普通的变量应避免这种风格。
2、函数
和其他语言类似,python的函数使用小括号调用,在调用前,必须进行函数的定义,如果函数没有return语句,自动返回None对象。
时刻注意的是,python是按引用传递的。
定义函数:
def func_name( [args] ):
“”"docmuentation string”"”
func_suite
定义一个函数的语法是由def关键字及紧随其后的函数名,小括号,小括号里需要的参数,最后由冒号结束。下面的缩进部分代表函数体的代码组。
其中参数部分是可选的,中括号只是表明参数可选,代码里千万别写中括号。
举个例子:

1
2
def add_myself(x):
    return (x + x)

python中的+操作符几乎支持所有的标准数据类型。
调用函数和C语言没区别。只要在代码中写:add_myself(x)就可以了。
值得注意的地方就是,函数的形参并没有声明数据类型,因为python是动态数据类型的语言,系统被自动根据实参判别数据类型。
函数的参数可以有一个默认值,在函数调用时,如果没有传入参数,就自动使用默认值计算。
改写下上面的例子:

1
2
def add_myself(x=1):
    return (x + x)

这个时候如果你调用函数的时候并没有传入任何的参数,那么返回的结果就是默认值的计算结果,结果为2。

Written by vicwjb in: python and pyqt4,vim,emacs,未分类 |

03
2010
0

python学习笔记(五)

前面几章已经把python支持的基本数据类型简单介绍了一下,现在我们将要看到的是python的基本语法。
一、语句和语法
1、注释
注释是增加代码可读性的最重要的条件之一,一个没有注释的代码无论如何是不能称为可读性好的。
python中的注释主要有两种,行注释和块注释。
行注释是以“#”井号开头的,井号之后一行内的字符被python编译器视为注释。
行注释可以是一个新行,也可以在代码行内。
块注释就用三对连续的双引号或者单引号括起来的一行或多行字符。
块注释有需要注意的地方:第一,块注释可以做为文档注释,用于生成文档,在类或者函数/方法和变量等声明的下一行的块注释被视为文档注释,利用文档生成工具可以自动的生成文档。
第二,块注释可以被视为一个字符串(本来就是字符串,不过被赋予了注释的功能),可以执行一些字符串的操作,可以被赋值给一个变量,可以被打印等等。
2、缩进和折行
python语言是一个严格要求缩进的语言,这也是让许多反python者所诟病的地方,python里没有C中的大括号和某些语言中的end,python用良好的严格的缩进来区分代码块,相同缩进的语句视为一个代码级别,python编译器会检查你的缩进,如果缩进混乱,编译器是会报错的。
通常我们缩进是采用四个空格,或者一个tab,不要混用tab和空格,也许在这个编辑器里看起来是一样的,在另外的编辑器看起来就乱的很。有时候一行过长的语句可以用反斜杠来分解成几行来增加可读性。有两种情况可以不用反斜杠:一是包括小括号,中括号,大括号时,可以多行书写;二是三引号字符串可以多行书写。
推荐使用括号,可读性会更好。
如果同一行书写多个语句,可以用分号来分隔,但是没有人会鼓励你这么做。
3、变量赋值
python中,等号是主要的赋值操作符。
python中,对象是通过引用传递的,所以在任何时候,都要记住python传递的是一个对象的引用,而不是对象的值,不管这个对象是数字还是其他的类实例(当然类也是一个对象)。
C中的赋值语句其实被看作是一个表达式,可以返回一个值,可以被赋值给一个变量,但是在python中是不允许的。类似y = (x = x + 1)这样的语句会报错。链式赋值没有问题,例如x=y=z+1。
python还支持增量赋值,如果你熟悉C,那么你会对下面的操作符很熟悉:+=,-=,*=,/=,%=,**=,<>=,&=,^=,|=。
python不支持自增和自减操作符。
python支持多元赋值,其原理就是两个元组的引用。类似下面的:
(x,y,z) = (1,2,3)
你也可以不写括号,但是出于可读性的考虑,我建议你加上括号。
下面来举一个有趣的应用:交换两个变量的值。
先看下C语言的:
tmp = x;
x=y;
y=tmp;

再看下python的:

x,y = 1,2
x,y = y,x
:-) ,可以看出来,python省了一步中间变量的创建,而且在赋值之前,python已经对x,y的新值做完计算。原理是这样的,“=”传递的是引用,也就是说x,y的值是y,x的一个引用,那么y,x必然是做完交换后才能确保他的引用是交换完的。引用和他本身是相等的,计算过程并不是在赋值的时候。(呃,上面这段话很乱,我明白,但是我没说清楚。。。。)

Written by vicwjb in: python and pyqt4 |

30
2010
0

python学习笔记(四)

1、列表解析
列表解析是一个令人欣喜的功能,他提供了一个更简单的方法去生成一个列表。
每个列表解析包括在一个计算表达式,零个或多个for或者if语句。列表解析的结果是for或者if语句得到的序列元素通过前面的计算表达式计算后的结果组成的列表。
列表解析看起来是这样的:

1
2
3
4
5
6
7
8
In [1]: [x for x in range(10)]
Out[1]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

In [2]: [x*x for x in range(10)]
Out[2]: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

In [3]: [x*x for x in range(10) if x % 2==0]
Out[3]: [0, 4, 16, 36, 64]

通过例子,我们可以发现列表解析的规律很简单。
第一,确定我们要得到的列表中元素的规律。
第二,通过什么样的for和if语句能得到这样规律的一个元素序列。
第三,将for和if语句中的计算部分提取出来放在解析表达式的前面。
第四,将for和if语句写在后面。
第五,用[]括起来。
通过这五步,我们就可以写出任何复杂度的列表解析表达式。由于for和if语句里面的计算部分可以是任意的,包括四则运算,函数调用等等,所以列表解析表达式的计算部分也可以有函数调用等复杂的应用。
2、set 集合
set(集合)是一个包含无序的不重复的元素的集合,基本功能包括关系测试和消除重复的元素。集合还支持union(联合),intersection(交),difference(差)和sysmmetric_difference(对称差集)等运算。
set这种数据类型类似于数学上的集合。
看下set的样子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
In [7]: a = set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
In [8]: a
Out[8]: set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

In [9]: type(a)
Out[9]:

In [10]: 2 in a
Out[10]: True

In [11]: b = set('abdcddg')

In [12]: b
Out[12]: set(['a', 'b', 'c', 'd', 'g'])

In [14]: a - b
Out[14]: set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

In [15]: a | b
Out[15]: set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'a', 'b', 'c', 'd', 'g'])

In [16]: a &amp; b
Out[16]: set()

In [17]: a ^ b
Out[17]: set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'a', 'b', 'c','d', 'g'])
Written by vicwjb in: python and pyqt4 |

27
2010
0

python学习笔记(三)

一、程序流程
1、if语句
python中的if语句于C语言的基本相同,最大的差别就是条件表达式不用括号括起来。
if语句包括三种形式:if ;if-else;if-elif-else。
和C语言基本没区别阿,注意一下括号和后面的冒号。
2、while循环
就一种形式,没有do-while这种形式。格式和C语言基本相同,注意括号和冒号。
3、for循环
python中的for循环和你所见到的C中的for循环不一样,C的for循环是计数器循环,python的迭代循环。
计数器循环(C的模式)是按一定规律递增或递减一个计数,每次递增或递减都要运行一次代码块。迭代循环(python模式)是依次迭代序列或者迭代器里的元素,每次迭代都要运行代码块。
C的for循环是这样的:

1
2
3
for(i=0;i<10;i++){
    printf("%s",i);
}

python的循环是这样的(类似c的例子):

1
2
for i in [0,1,2,3,4,5,6,7,8,9]:
    print i

可以发现好像python的写起来更麻烦一点,不符合python简单的风格阿,这时候我们可以改写一下,用一个能自动生成[1,2,3,4,5,6,7,8,9]这样列表的函数来替代。
改写的python for循环:

1
2
for i in range(10):
    print i

看起来是不是更好点。
例子中的列表中的元素可以是任意的python对象,这一点要比计数器循环灵活的多。因为range函数只能生成数字列表,如果我想迭代的列表里有对象,有字符串,有其他的东西怎么办呢?虽然可以像第一个python例子那样写一个完整的列表去迭代,但是如果列表的长度是100,1000,甚至更多的时候,怎么写?python为我们提供了一个机制,就是把列表赋值给一个变量,我们迭代变量就可以,python在内部替我们完成了列表的迭代。也许这个地方你有点头晕,没关系,后面的章节里我们会详细的论述这里面的奥秘,你只要记住迭代变量就可以了。
迭代变量:

1
2
3
a = [1,2,3,4,5,6,7]
for i in a:
    print i
Written by vicwjb in: python and pyqt4 |

22
2010
4

vim和emacs

vim和emacs,kde和gnome都是圣战中的主角,我选择了kde,那么vim和emacs我选择哪个?

其实在我看来,vim和emacs并没有kde和gnome那么独一性。所谓独一性就是说在某一个时刻,只能存在一个,gnome和kde不能同时被使用(他们的软件包不是他们本身,就相当于猫是动物,但动物不是猫)。但是vim和emacs却可以,所以我认为想用哪个就用哪个,一起用也没什么。

我现在就是两个同时用,终端里用vim,其他的有时侯用vim,有时候用emacs。

vim和emacs就是一个编辑器,并不是IDE,一些人把emacs配置的像个“操作系统”(开机就进emacs,一切都在emacs下完成),我觉的就有点偏执了,其实完全没有必要。vim和emacs配置的再好,毕竟有缺点。想要写一个大型的项目还是选择一个综合性的IDE来比较好,至少你不必为实现这个功能应该写多少行配置,写多少个配置文件。虽然IDE也有缺点,但是功能上应该都能满足,大不了还有插件,拿来就用。

最近就在研究怎么配置vim和emacs了,vim的配置直接就是拿来主席的用,加上点自己需要的python插件,基本没有改动,在此谢谢主席,呵呵。emacs是自己在网上搜索来的一堆配置,然后把自己需要的留下来,特别感谢ahei,他的配置真是很好,但是我用的真是不顺手,所以在ahei的配置里没少拿来主义。还有感谢其他一些无私奉献出宝贵配置的牛人们。
我的emcas配置主要是为了python,感觉已经够用了。。
贴一下.emacs:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;加载路径
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;默认路径
(add-to-list 'load-path "~/.emacs.d")
;;(setq load-path (cons "~/.emacs.d" load-path))
;;yasnippet路径
(add-to-list 'load-path "~/.emacs.d/yasnippet-0.6.1c")
;;auto-complete路径
(add-to-list 'load-path "~/.emacs.d/auto-complete")

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;基本设置
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;一打开就起用 text 模式。
;(setq default-major-mode 'text-mode)
;语法高亮  
(global-font-lock-mode t)
;打开图片显示功能
(auto-image-file-mode t)
;以 y/n代表 yes/no
(fset 'yes-or-no-p 'y-or-n-p)
;显示列号  
(column-number-mode t)
;显示括号匹配
(show-paren-mode t)
;括号匹配时显示另外一边的括号,而不是烦人的跳到另一个括号
(setq show-paren-style 'parentheses)
;显示时间,格式如下  
(display-time-mode 1)
(setq display-time-24hr-format t)  
(setq display-time-day-and-date t)  
;去掉那个大大的工具栏  
(tool-bar-mode nil)
;去掉滚动条,因为可以使用鼠标滚轮了
(scroll-bar-mode nil)
;光标靠近鼠标指针时,让鼠标指针自动让开,别挡住视线。很好玩阿,这个功能  
(mouse-avoidance-mode 'animate)
;; 不要闪烁光标, 烦不烦啊
(blink-cursor-mode -1)
;支持中键粘贴  
(setq mouse-yank-at-point t)
;;; 高亮显示要拷贝的区域
(transient-mark-mode t)
;支持emacs和外部程序的粘贴  
(setq x-select-enable-clipboard t)
;在标题栏提示你目前在什么位置
(setq frame-title-format "vic@%b")
;默认显示 80列就换行  
(setq default-fill-column 80)
;关闭出错时的提示声
(setq visible-bell t)
;; 没有提示音,也不闪屏
(setq ring-bell-function 'ignore)
;; 高亮显示要拷贝的区域
(transient-mark-mode t)
;;光标显示为一竖线
(setq-default cursor-type 'bar)
;; 用一个很大的kill ring. 这样防止我不小心删掉重要的东西
(setq kill-ring-max 200)
;;临时文件放到同一个目录下
(setq backup-directory-alist '(("." . "~/.backup")))
;;;;用空格代替tab
(setq-default indent-tabs-mode nil)
;;用shift+方向键进行选择
(pc-selection-mode)
;;关闭启动时的`开机画面'
(setq inhibit-startup-message t)
;;;;;使用C-k删掉指针到该行末的所有东西
(setq-default kill-whole-line t)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;高级设置
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; 编码设置
(set-language-environment "UTF-8")
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
(prefer-coding-system 'utf-8)
(setq default-buffer-file-coding-system 'utf-8)

;设置字体
(set-default-font "Bitstream Vera Sans Mono-13")
(set-fontset-font "fontset-default"
                  'unicode '("ZhunYuan" . "unicode-bmp"))


;; 显示行号,来自ahei的配置
(require 'linum-settings)
;;;;高亮当前行
(require 'hl-line)
(global-hl-line-mode t)

;鼠标滚轮,默认的滚动太快,这里改为3行
;(defun up-slightly()(interactive)(scroll-up 3))
(defun up-slightly () (interactive) (scroll-up 3))
(defun down-slightly () (interactive) (scroll-down 3))
(global-set-key [mouse-4] 'down-slightly)
(global-set-key [mouse-5] 'up-slightly)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;自定义按键设置
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;(global-set-key [f1] 'shell);F1进入Shell
;(global-set-key [f2] 'save-buffer);f2存盘
;(global-set-key [f3] 'speedbar);F3打开/关闭speedbar
(global-set-key [f4] 'delete-window);f4关闭窗口  
;(global-set-key [f5] 'other-window);窗口间跳转
(global-set-key [f6] 'switch-to-buffer);f6切换缓冲区  
;(global-set-key [f7] 'delete-window);f4关闭窗口  
;(global-set-key [f8] 'delete-window);f4关闭窗口  
;(global-set-key [f9] 'smart-compile);编译文件
;(global-set-key [C-f9] 'smart-run);
;(global-set-key [f10] 'gdb);F10调试程序 m
;(global-set-key [f11]'calendar);calendar
;(global-set-key [f12] 'tool-bar-mode)
;(global-set-key [M-f4] 'kill-this-buffer);M-f4关闭当前buffer所显示的文件
;(global-set-key [C-return] 'delete-other-windows);C-return关闭其它窗口
(global-set-key (kbd "M-g") 'goto-line);设置M-g为goto-line
(global-set-key (kbd "C-SPC") 'nil);取消control+space键设为mark
;f1 f2 f3 被pycomplete定义了。。。
;
;f 6 7 8 9 11没定义
;switch-to-buffer 切换缓冲区
;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;配色设置
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;(require 'color-theme)  
;(color-theme-initialize)  
;(color-theme-dark-blue);选择 darkblue的配色方案  

;; 设置另外一些颜色:语法高亮显示的背景和主题,区域选择的背景和主题,二次选择的背景和选择
(set-face-foreground 'highlight "white")
(set-face-background 'highlight "blue")
(set-face-foreground 'region "cyan")
(set-face-background 'region "blue")
(set-face-foreground 'secondary-selection "skyblue")
(set-face-background 'secondary-selection "darkblue")
(set-foreground-color "grey")
(set-background-color "black")
(set-cursor-color "gold1")
(set-mouse-color "gold1")
;;(set-scroll-bar-mode nil)
(customize-set-variable 'scroll-bar-mode 'right)


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;python设置
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;文件关联,自动将py后缀的文件和python-mod关联

(autoload 'python-mode "python-mode.el" "Python mode." t)
(setq auto-mode-alist (append '(("/*.\.py$" . python-mode)) auto-mode-alist))
(setq interpreter-mode-alist (cons '("python" . python-mode) interpreter-mode-alist))

;;自动加载,将python-mode和文件python-mode.elc关联
(autoload 'python-mode "python-mode" "Python editing mode." t)
(global-font-lock-mode t)  ;语法加亮
(setq font-lock-maximum-decoration t)

;;自动加载pymacs
(autoload 'pymacs-apply "pymacs")
(autoload 'pymacs-call "pymacs")
(autoload 'pymacs-eval "pymacs" nil t)
(autoload 'pymacs-exec "pymacs" nil t)
(autoload 'pymacs-load "pymacs" nil t)

;;加载pycomplete
;(add-to-list 'interpreter-mode-alist '("python" . python-mode))
(require 'pycomplete)




;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;yasnippet设置
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(require 'yasnippet)
(yas/initialize)
(yas/load-directory "~/.emacs.d/yasnippet-0.6.1c/snippets")

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;auto-complete设置
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


(require 'auto-complete-config)
(add-to-list 'ac-dictionary-directories "~/.emacs.d/auto-complete/ac-dict")
(ac-config-default)

;来自ahei
(require 'auto-complete-yasnippet)
(require 'auto-complete-etags)
(require 'auto-complete-extension)
(require 'auto-complete-octave)
(require 'auto-complete+)

;来自其他
(global-auto-complete-mode t)
(setq-default ac-sources '(ac-source-words-in-same-mode-buffers))
(add-hook 'emacs-lisp-mode-hook (lambda () (add-to-list 'ac-sources 'ac-source-symbols)))
(add-hook 'auto-complete-mode-hook (lambda () (add-to-list 'ac-sources 'ac-source-filename)))
(set-face-background 'ac-candidate-face "lightgray")
(set-face-underline 'ac-candidate-face "darkgray")
(set-face-background 'ac-selection-face "steelblue") ;;; 设置比上面截图中更好看的背景颜色
(define-key ac-completing-map "\M-n" 'ac-next)  ;;; 列表中通过按M-n来向下移动
(define-key ac-completing-map "\M-p" 'ac-previous)
(setq ac-auto-start 2)
(setq ac-dwim t)
(define-key ac-mode-map (kbd "M-j") 'auto-complete)





;;;;;;;;;;;;;;;;;;;;
;cedet,ecb,等都没有设置,一个是因为对python的支持不够好,第二个是因为emacs就是编辑器,不想弄成ide,能舒服写个代码就ok。

;; 配置Semantic的检索范围:
;(setq semanticdb-project-roots
;    (list
;            (expand-file-name "/")))
;
;; 自定义自动补齐命令,如果在单词中间就补齐,否则就是tab。
;(defun my-indent-or-complete ()
;   (interactive)
;   (if (looking-at "\\&gt;")
;       (hippie-expand nil)
;       (indent-for-tab-command))
;)
;(global-set-key [(control tab)] 'my-indent-or-complete)
;; 补全优先级
;(autoload 'senator-try-expand-semantic "senator")
;(setq hippie-expand-try-functions-list
;     '(
;      senator-try-expand-sematic
;      try-expand-dabbrev
;      try-expand-dabbrev-visible
;      try-expand-dabbrev-all-buffers
;      try-expand-dabbrev-from-kill
;      try-complete-file-name-partially
;      try-complete-file-name
;      try-expand-all-abbrevs
;      try-expand-list
;      try-expand-line
;      try-complete-lisp-symbol-partially
;      try-complete-lisp-symbol))
;


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;erc,webblog设置
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 用erc上irc聊天
(require 'erc-settings)

;; 用weblogger写WordPress博客,没有搞定,郁闷
;(require 'weblogger-settings)
;(require 'weblogger)

;(custom-set-variables
  ;; custom-set-variables was added by Custom.
  ;; If you edit it by hand, you could mess it up, so be careful.
  ;; Your init file should contain only one such instance.
  ;; If there is more than one, they won't work right.
; '(weblogger-config-alist (quote (("default" "http://vicwjb.ixiezi.com/xmlrpc.php" "vicwjb" "" nil)))))
;(custom-set-faces
  ;; custom-set-faces was added by Custom.
  ;; If you edit it by hand, you could mess it up, so be careful.
  ;; Your init file should contain only one such instance.
  ;; If there is more than one, they won't work right.
; )
Written by vicwjb in: vim,emacs | 标签:

22
2010
4

python学习笔记(二)

这一章,主要说一下python的基本数据类型。
一、数字
python中的数字包括五种:有符号整型,长整型,布尔型,浮点型,复数型。
有符号整型就是传说中的int型,相当于C的长整型。
长整型就是只要你的内存空间允许,就可以无限长。可以加上后缀L,也可不用,python解释器会自动调整。
布尔型就是True和False。
浮点型就是float,相当于C中的双精度浮点型。
最后就是复数型,1+2j,2-0.5J等等,用于表示复数。
python中的数字类型是不可变类型,就是说只要在python中创建了一个数字常量,那么就没有任何的操作可以改变它本身,任何操作的结果就是产生一个他的副本

1
2
3
4
5
6
7
8
9
In [1]: a=1

In [2]: a+2
Out[2]: 3

In [3]: a
Out[3]: 1

In [4]:

二、字符串
python中的字符串就是一对 ‘ ‘ 或者 ” ” 之间的部分。python中没有char类型,也就是说只要是一对单引号或者双引号之间的部分都视为字符串,即便那部分是一个字符。’a’ ,”a”都是字符串。
python还提供了一个特殊的字符串,就是”’ ”’ 或者 “”" “”" 之间的部分,通常用做文档字符串。这种字符串通常用来做为一个函数,方法,类的文档说明。他还有一个更犀利的应用就是生成代码。

1
2
3
4
5
 print """ for i in range(10):
print i
"""

 for i in range(10):
    print i

三、列表和元组
python中的列表和元组类似于C中的数组,它们能保存任意数量任意类型的python对象。
三者之间的区别在于,C的数组是有上限的,不可越界的,只能存储一种数据类型;列表的个数和元素的值是可以更改的;元组是不可更改的。
列表的元素用[]包裹,元组用()。他们都支持切片操作。
列表示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
In [1]: a = [1, 2, 3, 4]

In [2]: a
Out[2]: [1, 2, 3, 4]

In [3]: a[1]
Out[3]: 2

In [4]: a[2]
Out[4]: 3

In [5]: a[2:]
Out[5]: [3, 4]

In [6]: a[2] = 5

In [7]: a
Out[7]: [1, 2, 5, 4]

元组示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
In [12]: b = (1,4,2,5)

In [13]: b
Out[13]: (1, 4, 2, 5)

In [14]: b[:3]
Out[14]: (1, 4, 2)

In [15]: b[3] = 6

TypeError  Traceback (most recent call last)

TypeError: 'tuple' object does not support item assignment

四、字典
字典类似于perl中的关联数组或者哈希表,由一个或多个“键-值”对构成。键和值可以是任意的python对象。字典元素用{}包裹。字典是可更改的。

1
2
3
4
5
6
7
8
9
10
11
12
In [16]: cc = {'a':1, 'b':2, 'c':3}

In [17]: cc['a']
Out[17]: 1

In [18]: cc['c']
Out[18]: 3

In [19]: cc['d'] = 4

In [20]: cc
Out[20]: {'a': 1, 'b': 2, 'c': 3, 'd': 4}
Written by vicwjb in: python and pyqt4 | 标签:

17
2010
0

python学习笔记(一)

参考《python核心编程第二版》和python手册以及《python tutorial》。
python的历史,优缺点,特性等等就不说了。直接开始快速的入门,也就是基本语法的简单概述。
先来一个经典的“hello world”。

1
print "hello world"

是不是很简单,既不用像C一样要定义一个main函数,也不用像Java一样要先把类构建好了才能在static main里打印字符串。
print 语句很像C中的printf()函数,接受格式化字符串操作。最常用的有%s表示字符串替换,%d表示整型替换,%f表示浮点型替换。

1
print "hello %s %d %f" %("pyrhon",1,1.0)

以上就是python的hello经典程序,很简单把,就一行。python的简单和优美让我沉醉。
解释一下这个“hello world”程序。
print 是一个操作符,作用是在屏幕上打印一行字符串,字符串的末尾自动加上换行符,如果想不换行可以在print语句有加上“,”,类似这样:

1
2
print "hello",
print "world"

“hello world”是指一个字符串,和C一样,但是在python中没有常规意义上的字符,也就是说’a'也被认为是一个字符串,’ ‘ 和” “是等价的。
最后一个概念就是“ (“python”,1,1.0) ”,本来不想加入新东西的,可是多说一句print语句的格式输出就加了新东西。一对圆括号表示一个元组,也可以表示一个逻辑集合。元组的概念后面会讲到,逻辑集合主要是在语句中容易发生逻辑错误的地方人为的加上括号,增加可读性。类似于(5+4)*6。

Written by vicwjb in: python and pyqt4 | 标签:

16
2010
0

python学习笔记 前言

python是一个优美的语言,虽然避免不了这样或者那样的缺点,但是并不能掩盖她的优美,是的我认为python就是一个优美的处子,等待我。。。
想好好的学习一下python,pyqt4,希望我能坚持下来。
至于为什么选择qt,而不是gtk或者wx或者其他。。
因为我在用kde,就这么简单。。。

Written by vicwjb in: python and pyqt4 | 标签:

13
2010
1

开通

试试看,能不能用呢

1
2
if a:
    print b
Written by vicwjb in: 未分类 |

Powered by WordPress | Aeros Theme | TheBuckmaker.com WordPress Themes

本WordPress博客由爱写字提供技术支持