自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

設(shè)計(jì)Python目標(biāo)何在?

開發(fā) 后端
Python是一種簡(jiǎn)單易學(xué),功能強(qiáng)大的解釋型編程語(yǔ)言,它有簡(jiǎn)潔明了的語(yǔ)法,高效率的高層數(shù)據(jù)結(jié)構(gòu),能夠簡(jiǎn)單而有效地實(shí)現(xiàn)面向?qū)ο缶幊蹋?/div>

開發(fā)人員首先在進(jìn)行對(duì)Python開發(fā)時(shí),有一個(gè)明確的目標(biāo),所謂Python目標(biāo)為:Python可以使用戶避免過分的語(yǔ)法的羈絆而將精力主要集中到所要實(shí)現(xiàn)的程序任務(wù)上。

如果有人問我最喜歡django什么,我會(huì)耗不猶豫的告訴你是django的orm,這個(gè)想法的產(chǎn)生完全來自于我長(zhǎng)時(shí)間來積累的對(duì)hibernate的“不滿”。雖然從理智的角度來看,hibernate做的是非常的正確的,因?yàn)樗⒉皇侵会槍?duì)互連網(wǎng)而產(chǎn)生的,它的主要市場(chǎng)應(yīng)該還是在企業(yè)應(yīng)用上。

不過把它用在互聯(lián)網(wǎng)并非不可以,只不過大家更多的時(shí)候會(huì)選擇ibatis之類,因?yàn)椴恢纇ibernate的人總是會(huì)說hibernate沒有ibatis快(其實(shí)我最煩這個(gè),片面的比較是沒有意義的)。正是Python目標(biāo)是打造成java界一個(gè)全方位,全能的orm框架,所以的它學(xué)習(xí)曲線和使用的復(fù)雜度日益的提升。

要完全掌握好hibernate不是一件容易的事情(不要告訴我你會(huì)點(diǎn)crud,知道點(diǎn)lazy load你就掌握好hibernate了)。再回頭來看django的orm,如果說要把hibernate說清楚需要800頁(yè)的書,那么要把django的orm說清楚,200頁(yè)就夠了(事實(shí)上它的官方文檔只有十幾頁(yè)的樣子)。

下面我舉一個(gè)我正在做的例子,這里有一個(gè)自關(guān)聯(lián)的對(duì)象(事實(shí)上django的orm是基于model,這點(diǎn)和ror不太一樣,有人跟我講過ror是數(shù)據(jù)庫(kù)驅(qū)動(dòng)),這個(gè)對(duì)象有一個(gè)父對(duì)象,通常我們的菜單會(huì)定義成這樣的對(duì)象,這樣的菜單可以無限級(jí)向下擴(kuò)展:

  1. class Category(models.Model):     
  2.     id = models.AutoField('id', primary_key=True)     
  3.     name = models.CharField(maxlength=50)     
  4.     code = models.CharField(maxlength=50)     
  5.     parentCategory = models.ForeignKey('self', 'id', null=True)     
  6.     enable = models.BooleanField()     
  7.          
  8.     def __str__(self):     
  9.         return self.name     
  10.          
  11.     class Admin:     
  12.         list_display = ('id', 'name', 'code', 'parentCategory')   

Python目標(biāo)中又定義的Admin是為django的Admin模塊服務(wù)的。 瞧,我們定義的域模型只需要這些代碼就夠了,models.Model是父對(duì)象。所有的model對(duì)象都需要繼承這個(gè)對(duì)象,這個(gè)對(duì)象提供了很多常用的數(shù)據(jù)庫(kù)方法,不過不是基于sql的,還是基于對(duì)象的,如同Criteria一樣。下面列出常用的一些查詢Category的方法。

當(dāng)然django的orm提供了很多很常用的功能,這里不一一舉例了,注意,這里我說的是提供了很多很常用的功能,至于hibenate中比較復(fù)雜的映射策略,在django中我并沒有看到。

但是我反而高興我沒有在django中找到這個(gè)功能,因?yàn)閐jango本身的定位是快速的互連網(wǎng)開發(fā),它不需要太多的關(guān)注這個(gè)領(lǐng)域很少出現(xiàn)的東西,這樣帶來的優(yōu)點(diǎn)是學(xué)習(xí)曲線的降低和開發(fā)效率的提高。

【編輯推薦】

  1. 如何使Python嵌入C++應(yīng)用程序?
  2. 深入探討Ruby與Python語(yǔ)法比較
  3. Python學(xué)習(xí)資料介紹分享
  4. Python學(xué)習(xí)經(jīng)驗(yàn)談:版本、IDE選擇及編碼解決方案
  5. 淺析Python的GIL和線程安全
責(zé)任編輯:chenqingxiang 來源: 清華大學(xué)出版社
相關(guān)推薦

2021-07-02 20:37:19

Python代碼SRP

2010-01-26 13:36:27

C++設(shè)計(jì)

2010-01-21 16:45:02

C++設(shè)計(jì)目標(biāo)

2011-04-11 09:23:27

設(shè)計(jì)目標(biāo)原則C++

2011-05-31 17:59:48

C++

2009-12-21 15:43:05

路由基礎(chǔ)算法

2009-06-25 16:47:30

EJB技術(shù)

2010-02-04 15:20:50

Android SDK

2023-10-04 17:44:27

系統(tǒng)設(shè)計(jì)目標(biāo)

2010-01-11 17:34:37

C++語(yǔ)言

2022-04-20 15:55:29

容器架構(gòu)設(shè)計(jì)

2024-11-08 14:27:52

系統(tǒng)設(shè)計(jì)數(shù)據(jù)庫(kù)

2011-04-19 10:45:44

路由算法

2009-02-25 09:05:09

路由算法路由器

2022-10-09 10:02:09

Python3.12

2014-04-23 13:13:59

OpenShift

2020-03-31 21:50:41

JavaScript前端技術(shù)

2016-02-17 09:44:45

谷歌機(jī)器學(xué)習(xí)語(yǔ)義搜索

2012-04-29 16:03:28

蘋果

2024-12-03 08:00:00

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)