從一個喜歡編程的人的角度看,任何移動設備其實都只是“可編程計算器”。
iPad上也有一個Python的解釋器的應用Python for iOS。不過,讓人氣憤的是,這個應用竟然是收錢的(拿解釋器賣錢?!)
也有免費的python解釋器,但都有各自的問題:
1.營智python
這個應用太過花哨了。能夠編輯並運行腳本,不過,執行只能返回一個結果窗,不能用raw_input(),對很多庫的支持也不全。(連decimal都沒有)
2.Python Math
這個是一個交互的腳本解釋器。不支持多行的輸入!
他的庫還算是夠用的,例如os、sympy等。raw_input()可用。
有一些bug(從int到long的轉換有問題),decimal庫幾乎不可用(可以用sympy替代)。
這些事情讓我們這種較真的人不禁感慨:我真想自己寫一個免費的Python解釋器到iPad上!
且慢,Apple有奇葩政策:
1.只能在iPad上運行來自Store的程序。
2.不允許發布任何能夠從iPad外部獲得源代碼的解釋器。
所以,想自己編譯一個iPad版python解釋器,你先花$99注冊一個開發者帳號吧。。。
不想花錢,我們只能折中:
能否利用免費的python解釋器,我們自己再用python實現一個稍微好一點的python環境呢?
想做到這個,我們必須先能夠導入一些自己寫的模塊(例如實現一個能克服int到long轉換的bug的decimal庫)。在蘋果的眼中,這個應該是一個不可能的任務(你怎么確保你使用的沒有經過蘋果審核的代碼里沒有惡意的成分?!)
不過,這還是可能的。
Python Math中提供了os模塊,並且可以open文件。
於是乎,我們可以構造這樣的代碼:
open('decimal2.py','w').write('print "hello world"')
想執行的時候:
execfile('decimal2.py')
這樣,就可以實現代碼文件的導入了。
另外一個好事情是,Python Math里粘貼多行的文本是沒有問題的。
下面舉個具體的例子:先在pc端找到decimal.py,付出一點時間讓他能夠在int有bug的環境里工作。
把修改好的decimal.py改成decimal.txt,加上open和write的頭。
之后,通過iPad上的一些文字處理應用(例如PlainText),把pc端處理好的代碼上傳到iPad,之后在PlainText里面全選、復制(注意:PlainText處理超長的文本有巨大的性能問題!)。
然后粘貼到Python Math,回車。這樣,就把我們寫的庫“導入”進去了。
以后我們再想用decimal的時候,只用import decimal2就可以用我們自己寫的模塊了。
有了一個decimal,我們自然想要更多。
例如:
實現一個ed編輯器?
不過,這個就是一個很長的路了。。。
