最近正在研究Flash RIA,经人推荐到sf上面下载了一个开源免费的AS IDE,叫做SEPY,不经意之间发现SEPY竟然是用Python写的!于是又下载了SEPY的源代码观摩了一下,结果更吃惊,惊叹Python做图形 桌面应用程序代码竟然如此简洁,表现力竟然如此丰富,如果不是特别留意,绝想不到SEPY竟然不是Windows本地代码编写的软件。就此关注了一下 Python的桌面应用程序开发,这一下更加吃惊,发现现在使用python写的桌面应用程序已经非常丰富了,sf上面一抓一大把。然后还找到了 Python的几个IDE,其中BOA给我极大的震撼,安装跑起来一看,俨然就是Delphi!可视化的托拽方式放置桌面控件,完全面向对象的编程。
(more…)
January 8, 2010
[轉]被Python震撼
Python HTML Parser Performance
In preparation for my PyCon talk on HTML I thought I’d do a performance comparison of several parsers and document models.
vi指令說明(簡易版)
vi指令說明(簡易版)
vi 有兩個 mode , command mode 與 insert mode 。平常我們在輸入時所使用的 是 insert mode , 而下特殊指令如複製和刪除則是採用 command mode 。
由 command mode 進入 insert mode 有四個常用的指令: i , a , o , 跟 O 。 i 是由游標的前面開始做 insert text 的動作。 a 是由游標的後面開始做 insert text 的動作。 o 則是在游標下方開啟新的一行來編輯,同樣的,O 是由游標的上 方來開啟新的一行來編輯。結束一個編輯動作可以用 Escap 來回到 command mode , 此時可以做移動,刪除,複製,搜尋等編輯指令。
vi 的移動一般用上下左右鍵便可達到,然而它也有其自己的指令鍵:
h : 向左移一個字元
j : 向上移一個字元
k : 向下移一個字元
l : 向右移一個字元
0 : 移至行首
$ : 移至行尾
vi 的刪除指令有幾種,如下:
x : 刪除游標上的字元。
X : 刪除游標的前一個字元。
dd: 刪除該行。
dw: 刪除游標所在之單字。
d0: 刪除自行首至游標所在之所有字元。
d$: 刪除自游標至行尾之所有字元。
vi 可以使用 yy 來將游標所在行存起來,然後將游標移至所要貼的行之處按 p , 則剛才 mark 的行會被複製出現在游標之下。( 如果使用 P 則會出現在 游標之上。)
在指令模式中,你可以在任何前面提到的指令前面加上大於零的數字 n,則你 所做的動做將會被重覆 n次,如要刪除十行可以按 10 dd , 要複製十行可以用 10 yy , 要將同樣的文字重覆寫十次可以用 10 i ,然後離開 insert mode 之 後就會將剩下的九次重覆寫出來。
在 command mode 要存入一個已寫好的檔案可以使用'ZZ' , 則它將會把你編好 的檔案寫入後離開 vi .
在 vi 中搜尋一個字串可以使用 / , 在斜線後跟上你所要搜尋的字串,它就會 找到你所要的字串,如要在搜尋相同字串按 n 即可。使用? 來搜尋可以使vi往 回找出你所需要的字串。 ex 的指令
在 vi 中亦可使用 ex 的指令,只要在 command mode 時以冒號 : 做開頭, 即可使用 ex 的指令。常用 ex 指令如下:
:l1 , l2 d 刪除自行l1至行l2的文字。
:l1 , l2 s /patern1/patern2/[g] 將自行l1至行l2的文字中,有 patern1 的字
串改為 patern2 的字串,如無 g 則僅更換每一行所 match 的第一
個字串。如有 g 則將每一個字串均做更換。
:l1 , l2 co l3 將自行l1至行l2的文字 copy 到行 l3 。 :l1 , l2 mo l3 將自行l1至行l2的文字 move 到行 l3 。 :w [file] 將編輯的文字存入檔案中。 :n [file] 引入下一個檔案。 :q 離開
[轉]用python解析html
因为要用python做学校网络的认证程序,需要解析服务器传回的html,本以为会像javascript里操作DOM那样简单,结果发现并不是这样,被搞了一下。
[Python]Python學習筆記13-locals 及 globals的區別
在 locals 与 globals 之间有另外一个重要的区别,您应该在它困扰您之前就了解它。它无论如何都会困扰您的,但至少您还会记得曾经学习过它。
例 8.12. locals 是只读的,globals 不是
def foo(arg): x = 1 print locals() 1 locals()["x"] = 2 2 print "x=",x 3 z = 7 print "z=",z foo(3) globals()["z"] = 8 4 print "z=",z 5 |
1 因为使用 3 来调用 foo,会打印出 {‘arg’: 3, ‘x’: 1}。这个应该没什么奇怪的。
2 locals 是一个返回 dictionary 的函数,这里您在 dictionary 中设置了一个值。您可能认为这样会改变局部变量 x 的值为 2,但并不会。locals 实际上没有返回局部名字空间,它返回的是一个拷贝。所以对它进行改变对局部名字空间中的变量值并无影响。
3 这样会打印出 x= 1,而不是 x= 2。
4 在有了对 locals 的经验之后,您可能认为这样不会 改变 z 的值,但是可以。由于 Python 在实现过程中内部有所区别 (关于这些区别我宁可不去研究,因为我自已还没有完全理解) ,globals 返回实际的全局名字空间,而不是一个拷贝:与 locals 的行为完全相反。所以对 globals 所返回的 dictionary 的任何的改动都会直接影响到全局变量。
5 这样会打印出 z= 8,而不是 z= 7。
[Python]Python學習筆記12-from module import 和 import module 之間的不同
回想一下 from module import 和 import module 之间的不同。使用 import module,模块自身被导入,但是它保持着自已的名字空间,这就是为什么您需要使用模块名来访问它的函数或属性:module.function 的原因。但是使用 from module import,实际上是从另一个模块中将指定的函数和属性导入到您自己的名字空间,这就是为什么您可以直接访问它们却不需要引用它们所来源的模块。使用 globals 函数,您会真切地看到这一切的发生。
[Python]Python學習筆記11-Python Namespace
Python 使用叫做名字空间的东西来记录变量的轨迹。名字空间只是一个 dictionary ,它的键字就是变量名,它的值就是那些变量的值。实际上,名字空间可以像 Python 的 dictionary 一样进行访问,一会儿我们就会看到。
在一个 Python 程序中的任何一个地方,都存在几个可用的名字空间。每个函数都有着自已的名字空间,叫做局部名字空间,它记录了函数的变量,包括函数的参数和局部定义的变量。每个模块拥有它自已的名字空间,叫做全局名字空间,它记录了模块的变量,包括函数、类、其它导入的模块、模块级的变量和常量。还有就是内置名字空间,任何模块均可访问它,它存放着内置的函数和异常。
当一行代码要使用变量 x 的值时,Python 会到所有可用的名字空间去查找变量,按照如下顺序:
1. 局部名字空间――特指当前函数或类的方法。如果函数定义了一个局部变量 x,或一个参数 x,Python 将使用它,然后停止搜索。
2. 全局名字空间――特指当前的模块。如果模块定义了一个名为 x 的变量,函数或类,Python 将使用它然后停止搜索。
3. 内置名字空间――对每个模块都是全局的。作为最后的尝试,Python 将假设 x 是内置函数或变量。
如果 Python 在这些名字空间找不到 x,它将放弃查找并引发一个 NameError 异常,同时传递 There is no variable named ‘x’ 这样一条信息,回到 例 3.18 “引用未赋值的变量”,您会看到一路上都有这样的信息。但是您并没有体会到 Python 在给出这样的错误之前做了多少的努力。
Sem Break 前應完成計劃
雖然Sem break 只剩下 2日, 但應完成下列最後計劃
1. 開始讀AS design pattern 這書 進度一般
2. Python server 采集 進度滿意
3. Form hash 研究 無…
4. Flash Word 開始
5. CU FYP 完成PHP part 無….
6. Sapphire pageflilp 進度滿意
35 个你也许不知道的 Google 开源项目
Google是支持开源运动的最大公司之一,它们现在总共发布有超过500个的开源项目(大部分都是利用它们的API来完成),本文将列举一些有趣的开源项目,其中很可能有不少你不知道。
(more…)