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

有關(guān)Python代碼學(xué)習(xí)介紹

開(kāi)發(fā) 后端
對(duì)特定程序進(jìn)行有效轉(zhuǎn)換將帶來(lái)一些額外的考慮,但我們已經(jīng)知道內(nèi)置函數(shù)是常規(guī)而完整的,希望本文能給您帶來(lái)先關(guān)幫助。

在學(xué)習(xí)研究Python代碼之前,我們先要了解下什么是Python,所謂的Python就是一種面向?qū)ο蟆⒅弊g式計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言,也是一種功能強(qiáng)大而完善的通用型語(yǔ)言,已經(jīng)具有十多年的發(fā)展歷史。

在除去***的、有意義的語(yǔ)句不用而代之以晦澀的、嵌套的表達(dá)式的工作后,一個(gè)很自然的問(wèn)題是:“為什么?!”我對(duì) FP 的所有描述都是使用 Python 做到的。但最重要的特性 -- 可能也是具體情況中最有用的特性 -- 是它消除了副作用(或者至少對(duì)一些特殊領(lǐng)域,例如單一體,有一些牽制作用)。

絕大部分程序錯(cuò)誤 -- 和促使程序員求助于調(diào)試來(lái)解決的問(wèn)題 -- 之所以會(huì)發(fā)生,是因?yàn)樵诔绦驁?zhí)行過(guò)程期間,變量包含了意外的值。函數(shù)程序只不過(guò)根本就不為變量分配值,從而避免了這一特殊問(wèn)題。

讓我們看一段相當(dāng)普通的命令Python代碼。它的目的是打印出乘積大于 25 的幾對(duì)數(shù)字的列表。組成各對(duì)的數(shù)字本身是從另外兩個(gè)列表中挑選出的。這種操作與程序員在他們程序段中實(shí)際執(zhí)行的操作差不多。實(shí)現(xiàn)這一目的的命令方法如下:

  1. # imperative version of "echo()"   
  2. def echo_IMP():   
  3. while 1:   
  4. x = raw_input("IMP -- ")   
  5. if x == 'quit':   
  6. break   
  7. else   
  8. print x   
  9. echo_IMP()   
  10.  
  11. # utility function for "identity with side-effect"   
  12. def monadic_print(x):   
  13. print x   
  14. return x   
  15.  
  16. # FP version of "echo()"   
  17. echo_FP = lambda: monadic_print(raw_input("FP -- "))=='quit' or echo_FP()   
  18. echo_FP()  

這個(gè)項(xiàng)目太小,以至于沒(méi)有什么可能出錯(cuò)。但我們的目的可能嵌在要同時(shí)實(shí)現(xiàn)許多其它目的的代碼中。用 "more stuff" 注釋的那些部分是副作用可能導(dǎo)致錯(cuò)誤發(fā)生的地方。

在這些地方中的任何一處,變量 xs、ys、bigmuls、x、y 有可能獲得假設(shè)節(jié)略代碼中的意外值。而且,在執(zhí)行完這一段代碼后,所有變量都可能具有稍后代碼可能需要也可能不需要的一些值。

很明顯,可以使用函數(shù)/實(shí)例形式的封裝和有關(guān)作用域的考慮來(lái)防止出現(xiàn)這種類(lèi)型的錯(cuò)誤。而且,您總是可以在執(zhí)行完變量后 del 它們。但在實(shí)際中,這些指出類(lèi)型的錯(cuò)誤非常普遍。

目標(biāo)的函數(shù)方法完全消除了這些副作用錯(cuò)誤。以下是可能的一段Python代碼

  1. # imperative version of "echo()"   
  2. def echo_IMP():   
  3. while 1:   
  4. x = raw_input("IMP -- ")   
  5. if x == 'quit':   
  6. break   
  7. else   
  8. print x   
  9. echo_IMP()   
  10.  
  11. # utility function for "identity with side-effect"   
  12. def monadic_print(x):   
  13. print x   
  14. return x   
  15.  
  16. # FP version of "echo()"   
  17. echo_FP = lambda: monadic_print(raw_input("FP -- "))=='quit' or echo_FP()   
  18. echo_FP()  

在示例中,我們將匿名 (lambda) 函數(shù)對(duì)象與名稱(chēng)進(jìn)行綁定,但這不是一定必要的。我們可以只嵌套定義。這樣做是出于可讀性目的;但也是因?yàn)?combine() 是一種隨處可得的很好實(shí)用程序函數(shù)(從兩個(gè)輸入列表中產(chǎn)生所有元素對(duì)的列表)。

隨后的 dupelms() 主要只是幫助 combine() 發(fā)揮作用的一種方法。即使這一函數(shù)示例比命令示例更冗長(zhǎng),但一旦考慮到實(shí)用程序函數(shù)可以重用,那么 bigmuls() 中的新代碼本身可能比命令版本中的Python代碼數(shù)量還要少一些。

【編輯推薦】

  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和線(xiàn)程安全
責(zé)任編輯:chenqingxiang 來(lái)源: 計(jì)世網(wǎng)
相關(guān)推薦

2010-02-02 14:54:28

Python語(yǔ)法

2010-02-24 17:22:59

Python項(xiàng)目

2010-02-23 14:41:28

Python模塊

2010-02-01 17:11:45

Python 解釋器

2010-02-22 14:42:19

Python 控制語(yǔ)句

2010-02-03 16:03:44

Python系統(tǒng)文件

2010-02-26 11:20:53

Python應(yīng)用

2010-02-01 16:32:49

Python腳本

2010-03-01 10:39:18

Python源代碼

2010-03-02 09:13:55

Android手機(jī)系統(tǒng)

2009-12-07 10:27:51

WCF分頁(yè)

2010-03-01 15:57:59

Python開(kāi)發(fā)工具

2010-02-26 09:55:22

Python應(yīng)用程序

2010-02-26 15:43:02

Python線(xiàn)程

2010-03-01 15:23:24

Python操作語(yǔ)言

2009-09-15 18:41:08

Python學(xué)習(xí)資料

2009-12-25 17:11:40

ADO方法

2010-02-06 10:04:10

Android啟動(dòng)模式

2010-03-03 17:50:45

Android圖形界面

2010-02-23 16:06:58

Python 命令行
點(diǎn)贊
收藏

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