偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

如何正確的使用Python函數(shù)

開發(fā) 后端
如果在一個(gè)內(nèi)部函數(shù)里,對(duì)在外部作用域Python函數(shù)的變量進(jìn)行引用,那么內(nèi)部函數(shù)就被認(rèn)為是閉包。

本文主要講述Python函數(shù)的問題,怎樣創(chuàng)建Python函數(shù)等問題,這些內(nèi)容都是一些門戶網(wǎng)站和技術(shù)論壇找到的,中間可能有不少錯(cuò)誤是我沒有挑出的,歡迎大家指正。

語法上看比較簡(jiǎn)單,但是用處卻是相當(dāng)廣泛的。在Python 2.1版本以前,只有全局域和局部作用域,而在2.1以后的版本中我們可以使用靜態(tài)嵌套域,如像下面這樣的嵌套函數(shù)中,在以前,內(nèi)部函數(shù)是不能訪問外部Python函數(shù)作用域中的變量。

PyDev 選項(xiàng)窗口

 

Python 2.1版本以前,只有全局域和局部作用域,而在2.1以后的版本中我們可以使用靜態(tài)嵌套域,如像下面這樣的嵌套Python函數(shù)中,在以前,內(nèi)部Python函數(shù)是不能訪問外部函數(shù)作用域中的變量的,def foo():

  1. def foo():  
  2.     m = 3 
  3.     def bar():  
  4.         n = 4 
  5.         print m + n  
  6.     print m  
  7.  bar() 

而在現(xiàn)在的版本中可以***運(yùn)行,而bar()中的 m 就是一個(gè)既不屬于全局域又不屬于局部域的閉包變量,它存活在一個(gè)Python函數(shù)的名稱空間和作用域---嵌套作用域。而在閉包中對(duì)嵌套作用域中的訪問規(guī)則與上面討論的Global是一樣的。即在對(duì)閉包變量 m 的重新聲明之前引用 m 都會(huì)引發(fā)異常。

為什么會(huì)這樣呢?其實(shí)是因?yàn)閙的類型有關(guān),我們知道Pyhton中的基本數(shù)據(jù)類型分為可變和不可變,對(duì)于不可變類型的賦值,其實(shí)是重新定義一個(gè)新的變量對(duì)象。并深拷貝原對(duì)象到新對(duì)象,參考str類型說明。 如果將上面的 m 聲明成可變類型list,那就不會(huì)產(chǎn)生這個(gè)異常了。

關(guān)于可變類型與不可變類型的說明,這里就不展開說了,大家可以看API Document下面舉一個(gè)閉包的實(shí)際例子:

  1. def hellocounter (name):  
  2.     count=[0]  
  3.     def counter():  
  4.         count[0]+=1  
  5.         print 'Hello,',name,',',str(count[0])+' access!'  
  6.     return counter  
  7.  
  8. hello = hellocounter('ysisl')  
  9. hello()  
  10. hello()  
  11. hello()  
  12.  
  13. Console output:   
  14.  Hello, ysisl , 1 access!  
  15.  Hello, ysisl , 2 access!  
  16.  Hello, ysisl , 3 access!  

【編輯推薦】

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

2010-01-18 17:23:55

函數(shù)

2010-01-18 17:23:55

函數(shù)

2021-03-15 12:23:24

Pythonyield代碼

2019-11-14 16:23:07

MySQL索引數(shù)據(jù)庫(kù)

2010-02-03 17:42:30

2020-12-29 05:34:48

Scrapy網(wǎng)頁源代碼

2015-03-31 14:15:12

JavaJava事件通知

2010-06-13 15:00:23

MySQL統(tǒng)計(jì)函數(shù)

2018-12-05 09:00:00

RedisRedis Strea數(shù)據(jù)庫(kù)

2022-09-07 08:58:58

Node.js框架

2010-05-21 17:14:18

MySQL 數(shù)字類型

2009-12-02 16:38:26

PHP發(fā)送郵件函數(shù)

2009-12-04 09:41:25

PHP函數(shù)flush(

2009-11-26 18:49:54

PHP函數(shù)preg_s

2010-07-07 10:25:00

SQL Server索

2010-02-03 14:37:10

Python 開發(fā)環(huán)境

2010-02-02 14:11:14

Python 進(jìn)行編程

2010-03-15 10:49:57

Python函數(shù)變量

2023-12-26 11:56:14

Go通道編程

2022-11-23 08:00:00

開發(fā)Regulator調(diào)試
點(diǎn)贊
收藏

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