本人是大二的學生,平時無聊用Python給Mac寫了一個小的天氣預報的項目, 發到了github上了,
https://github.com/jamesxu182/MyWeather 。
非常好奇大型軟體是怎麼開發的,複雜的UI是如何設計的。
敢問大神github上有哪些簡單的,適合我這個水平的Python項目。
回複內容:
Ultimaker 3D印表機的上位機軟體Cura的UI是Python寫的,用的Wxpython。當然,引擎是C++寫的。我個人覺得挺有趣的。軟體規模適中,功能完整,包含了跨平台配置的知識,和C++引擎通訊的知識,OpenGL等。涉及一些3D列印方面的專業知識但是並不複雜,重點還是在UI和功能設計
daid/Cura · GitHub
gleitz/howdoi · GitHub
一個很有趣的命令列小工具,代碼不多,寫的非常 Pythonic。
再推薦幾個適合閱讀的好項目,不過可能比較大,要花點功夫去讀。
- kennethreitz/requests · GitHub
- mitsuhiko/flask · GitHub
- kennethreitz/tablib · GitHub
- mitsuhiko/werkzeug · GitHub
tornado算麼。bottle.pyshadowsocks就不錯啊,好像作者去知乎了
具體還看想學些那方面了,也要看自身的基礎如何,同時也建議分階段來看。
不過具體的話還是依題主的情況來說好了,不然這個問題也就沒有具體的答案。
首先可以說點不想乾的話題,比如:
- 題主的代碼倉庫裡好像沒有ignore掉pyc檔案...
- 在看到題主用了bs4的同時我還看到了urllib2... https://github.com/Jamesxu182/MyWeather/blob/master/getWeathers.py#L6
- 以及從這裡可以看出題主的前端水平似乎... https://github.com/Jamesxu182/skedody/blob/master/index.html#L32
由此似乎可見:
- 題主git還沒玩熟 or 有點不拘小節
- 對python的生態圈還不是很瞭解 or 不屑於用requests那樣的裝逼庫
- ... ( ╯□╰ )
然後,作為一名從web開發起步的老菜鳥,先分享下大概的學習經曆好了。
鄙人大概也是大二的時候(2012年秋)真正開始用python的,當然前面有玩flash的背景,所以對同類的指令碼語言,上手還算比較習慣。比如當時的ActionScript2.0的水平大概是這樣子的(300行左右代碼):http://koalangelion.deviantart.com/art/Restend-379547522
中間的過程還是從略好了,畢竟是業餘玩家。到現在零零碎碎也有兩年了吧,現在的python水平… 還真不好說,簡單舉個粒子大概是這樣的:https://gitcafe.com/restait/buffer/tickets/22
所以回答這個問題的話,首先我覺得這些編程的東西,對於題主來說,需要學習的還有很多。。。
當然能在大二就用python寫個mac上用的小工具還知道放到github上,且不說代碼水平,至少這種意識還是挺不錯的。然而人和人之間,時代與時代之間自然是有差別,自然同為大學生,我還買不起mac,自然同為大學生,我也不能和那些初二就混IRC還發pull request的中學生相比…
所以我覺得題主可能更在意的是怎麼組織一個大型的軟體項目,以及如何造一個複雜的UI。而這些東西,其實github上面不是很多,能作為學習參考的就不多了,而使用python作為主力語言的就更少了... 原因大家懂的,至少開源出來的不是很多。
而且這裡有兩點提示:一是python不太適合用來構造一個完整的大型項目,二是python在圖形介面這邊確實還是短板。
然後有了上面這些鋪墊,感覺再推薦些好的github項目也不遲。這裡我覺得其實可以避免一個誤區,就是很多好的python項目,恰恰不在github上面,比如SQLAlchemy(bitbucket,你懂的),比如BeautifulSoup(lauchpad)。所以這兩個雖然也是適合研讀的好項目,不過因為不符合github這個約束,類似的也就不涉及了。
先說些個人覺得對自己學習python比較有益的且在github上託管的項目好了(web開發向top6,下面的條目不含http://github.com/首碼):
- pylons/pyramid
- kennethreitz/requests
- defnull/bottle
- andymccurdy/redis-py
- douban/douban-client
- mitsuhiko/jinja2
這些項目大多是看過源碼的,不過主要還是有文檔的看文檔。不過要說簡單的,適合題主水平的,可以看下redis-py、requests和douban-client,pyramid這種結構比較龐大的,一開始上手看源碼可能會有點吃力(依賴zope.interface的項目大多都這樣,比如twisted,scrapy)。bottle的話雖然簡單,但是沒有什麼太多實際可以借鑒的地方,畢竟把全部代碼揉在一起,在IDE還沒有智能到可以自動分頁的時代,看起來實在是太噁心了...
其他有些項目也是不錯的,不過本人畢竟沒有細看過源碼(比如shadowsocks),這裡也就不做推薦了。所以真要推薦的話,題主可以在上面的六個裡面隨機選兩個瞭解下。有時候上手痛點也無所謂,只要不是太噁心的項目,也還是能摸透的(實不相瞞,pyramid從入門到玩轉大概有一年的時間間隔)。
而django之流,拿來用還可以,深入的話其實也是個巨坑,當然這裡我還是不黑django了...
最後留點相關提示,有時候學習一個項目,具體的代碼實現不是重點,而是如何一步步演化且維護到現在,那些最初留下來的,以及後來被捨棄掉的,這些決策,其實也可以理解為一種潛在的設計模式,而所有這些潛藏在項目之下的,才是更值得學習的地方。至於為什麼前面說六選二呢,因為單從一個項目去認知整個python世界,也是片面的,於是乎這裡就不嘲諷django和tornado了。所以進而推廣,題主要是有志於做點大項目,有空應該多瞭解些工業上常用的語言,參與些實戰項目攢攢經驗,畢竟單從python去瞭解這個編程世界也是片面的,於是乎這裡我就不黑js了。
n0tr00t/Sreg · GitHub
這個,可以查看指定Email或手機號碼或使用者名稱都註冊過哪些網站。
也就200行左右哦。
還可以擴充網站註冊查詢外掛程式
一看嚇一跳,原來那些個聽都沒聽過的網站我都註冊過?Django強烈推薦mininet,搞網路的mininet源碼是必讀的。代碼結構清晰易讀,基本上一兩個小時就能夠完全讀懂mininet,但要理解裡面的精髓,還是需要時日的。我推薦requests,可以學習Python代碼和注釋的風格