Flowpython, 讓Python變得好一點
在兼容原生Python的情況下,讓Python變得更舒服和自由一點。
這就是我寫flowpython的初衷了。地址如下可見。
thautwarm/flowpython
flowpython旨在讓寫python代碼變得像流動一樣,你可以用一個表達式寫出一個文件,就像下面這種樣子(臨時隨便想的一個場景,當然這個代碼並不是flowpython,不過會很像未來的版本):
ret = container1 merge container2 n then .sort().reduce(f1)n wheren f1 = ...n matchn int => ...n float => .fsplit(x->x//10) n .connectWith(n (x-> x>10, x-> ... ),n ... #省略一些情況n (x-> x<0 , x->...)n (x-> ...)n )n callable => ...n
這段代碼呢,如果用原生python大概是這樣:
f1 = ...ntest = reduce(f1, merge(container1,container2).sort())nif isinstance(test,int):n ret = ...nelif isinstance(test,float):n test2 = test//10n if test2>10:n ret = (x->...)(test)n ... #省略一些情況n elif test2<0:n ret = (x->...)(test)n else:n ret = (x->...)(test) nelif iscallable(test):n ret = ...n
其實當工程很小時,原生python的代碼量似乎並不冗長,也簡單,雖然不像前者那種一眼過去就能知道意思。
但是由於不符合人的思維習慣(比如f1如果是複合句函數,則需要在reduce的前邊定義),以及if-else,無論是使用表達式 test if else test 還是 複合句 if test : suite else suite ,都還是看起來很催眠。
就是說不夠靈活,這件事情是非常有害的。
敲代碼是佔了生命很大一部分比重的事情,我不願我的生命逐漸變成漫長而單調的行程,不願變成每天坐10小時車的自駕游。
我希望這一切還會有彩色,有驚喜,正如我接觸編程以來所感受到的,那些想法被滿足、被實現的歡樂。
所以就有了flowpython,希望從此寫python能寫出流動的感覺。
當然從c層面去了解語言,去創造語言,本身就是非常快樂的事情。當我成功寫出where子句通過test後,是肉眼可見的傻笑了起來,還是很逗的...
下面放一個用where提升可讀性的例子。
# 圓柱面積 / surface area of a cylindernfrom math import pinr = 1 # the radiusnh = 10 # the heightnnS = (2*S_top + S_side) where:n S_top = pi*r**2n S_side = C * h where:n C = 2*pi*rn
再放一遍地址,要不來看看?
thautwarm/flowpython
項目本身,除了管理工具是我用python寫的外,其他都是c語言的。
project.filter(x->x.type!=管理工具).all(x->x.lang==c) == Truen>> Truen
本人不才, python的grammar, ast, complie等模塊滾瓜爛熟(一周時間每天看18+小時C碼源讓我裝個逼好嘛...
推薦閱讀: