最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python函數(shù)學習筆記

 更新時間:2008年10月07日 23:49:40   作者:  
Python探測局部作用域的時候:是在python編譯代碼時檢測,而不是通過他們在運行時的賦值。
局部名字靜態(tài)檢測
Python探測局部作用域的時候:是在python編譯代碼時檢測,而不是通過他們在運行時的賦值。
正常的情況下,沒在函數(shù)中復(fù)制的名字將在包含它的模塊中查找:
>>> x=99
>>> def selector():
... print x
...
>>> selector()
99
但是:
>>> def selector():
... print x
... x=100
...
>>> selector()
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "<stdin>", line 2, in selector
UnboundLocalError: local variable 'x' referenced before assignment
會得到未定義名字的錯誤。
當 交互式輸入或從一個模塊中導(dǎo)入時,python讀取并編譯這段代碼,當編譯時python查看x的賦值,并決定在函數(shù)中任何地方x都將是個局部名字。到后 來函數(shù)真的運行,print執(zhí)行時,賦值還沒有發(fā)生,python會說你正在使用一個未定義的名字。根據(jù)他的名字規(guī)則,應(yīng)該是局部的x在賦值前被使用了。
解決辦法:
如果你想打印全局x,你應(yīng)該在global語句中聲明:(這意味著該賦值也改變?nèi)謝,而不是局部x)
>>> def selector():
... global x
... print x
... x=88
...
>>> selector()
99
如果你想打印出全局賦值,在設(shè)定一個局部的,導(dǎo)入包含它的模塊并用限定得到這個全局的版本:
>>> x=99
>>> def selector():
... import __main__
... print __main__.x
... x=88
... print x
...
>>> selector()
99
88
限定(.x部分)從一個名字空間對象中得到一個值。交互環(huán)境的名字空間是一個叫做__main__的模塊。
嵌套函數(shù)可以嵌套作用域(在新版本中和老版本中不同)
>>> def outer(x):
... def inner(i):
... print i,
... if i: inner(i-1)
... inner(x)
...
>>> outer(3)
3 2 1 0
使用默認值保存引用
>>> def outer(x):
... def inner(i,self=inner):
... print i,
... if i:self(i-1)
... inner(x)
...
>>> outer(3)
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "<stdin>", line 2, in outer
UnboundLocalError: local variable 'inner' referenced before assignment
解決原則:最簡單的方式總是最正確的方式
>>> def inner(i):
... print i,
... if i:inner(i-1)
...
>>> def outer(x):
... inner(x)
...
>>> outer(3)
3 2 1 0
默認的可變對象
>>> def saver(x=[]):
... x.append(1)
... print x
...
>>> saver([2])
[2, 1]
>>> saver()
[1]
>>> saver()
[1, 1]
>>> saver()
[1, 1, 1]
問題是,這里只有一個列表對象——def執(zhí)行時生成的一個。在每一次函數(shù)被調(diào)用時,你不會得到新的列表對象,而是原列表對象的增長。
解決辦法:如果那不是你想要的行為,簡單的移動默認值到函數(shù)體中。只要代碼里的值在每一次函數(shù)運行時都執(zhí)行,你每次將得到一個新的對象:
>>> def saver(x=None):
... if x is None:
... x=[]
... x.append(1)
... print x
...
>>> saver([2])
[2, 1]
>>> saver()
[1]
>>> saver()
[1]
>>> saver()
[1]
上 面的if語句幾乎可以被賦值x=x or []代替,因為python的or將返回他的操作對象中的一個:如果沒有參數(shù)被傳遞,x默認為None,所以or在右側(cè)返回一個生成的空列表。但這不完全 一樣,當傳遞的是空列表時,函數(shù)將擴展并返回一個新生成的列表,而不是向前面的版本那樣擴展并返回一個被傳遞的列表(表達式變成[] or [],這將計算出新的列表)

相關(guān)文章

  • python中networkx函數(shù)的具體使用

    python中networkx函數(shù)的具體使用

    本文主要介紹了python中networkx函數(shù)的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • 關(guān)于python如何生成exe文件

    關(guān)于python如何生成exe文件

    這篇文章主要介紹了關(guān)于python如何生成exe文件,exe全稱“executable”,中文意思為“可執(zhí)行的”,是一種文件格式,是指一種可在操作系統(tǒng)存儲空間中浮動定位的可執(zhí)行程序,需要的朋友可以參考下
    2023-04-04
  • 淺談opencv自動光學檢測、目標分割和檢測(連通區(qū)域和findContours)

    淺談opencv自動光學檢測、目標分割和檢測(連通區(qū)域和findContours)

    這篇文章主要介紹了淺談opencv自動光學檢測、目標分割和檢測(連通區(qū)域和findContours),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • python 實現(xiàn)對文件夾中的圖像連續(xù)重命名方法

    python 實現(xiàn)對文件夾中的圖像連續(xù)重命名方法

    今天小編就為大家分享一篇python 實現(xiàn)對文件夾中的圖像連續(xù)重命名方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • Python數(shù)據(jù)可視化之matplotlib.pyplot繪圖的基本參數(shù)詳解

    Python數(shù)據(jù)可視化之matplotlib.pyplot繪圖的基本參數(shù)詳解

    matplotlib.pyplot模塊是一個功能強大的畫圖模塊,可以對畫圖的多個參數(shù)進行調(diào)整,下面這篇文章主要給大家介紹了關(guān)于Python數(shù)據(jù)可視化之matplotlib.pyplot繪圖基本參數(shù)的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • python中的reduce內(nèi)建函數(shù)使用方法指南

    python中的reduce內(nèi)建函數(shù)使用方法指南

    python中的reduce內(nèi)建函數(shù)是一個二元操作函數(shù),他用來將一個數(shù)據(jù)集合(鏈表,元組等)中的所有數(shù)據(jù)進行下列操作:用傳給reduce中的函數(shù) func()(必須是一個二元操作函數(shù))先對集合中的第1,2個數(shù)據(jù)進行操作,得到的結(jié)果再與第三個數(shù)據(jù)用func()函數(shù)運算,最后得到一個結(jié)果
    2014-08-08
  • Python多線程同步---文件讀寫控制方法

    Python多線程同步---文件讀寫控制方法

    今天小編就為大家分享一篇Python多線程同步---文件讀寫控制方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • Python?Requests?基本使用及Requests與?urllib?區(qū)別

    Python?Requests?基本使用及Requests與?urllib?區(qū)別

    在使用Python爬蟲時,需要模擬發(fā)起網(wǎng)絡(luò)請求,主要用到的庫有requests庫和python內(nèi)置的urllib庫,一般建議使用requests,它是對urllib的再次封裝,今天通過本文給大家講解Python?Requests使用及urllib區(qū)別,感興趣的朋友一起看看吧
    2022-11-11
  • 教你使用python畫一朵花送女朋友

    教你使用python畫一朵花送女朋友

    這篇文章主要為大家講解如何使用python畫一朵花,送女朋友,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • python字符串替換re.sub()方法解析

    python字符串替換re.sub()方法解析

    這篇文章主要介紹了python字符串替換re.sub()方法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-09-09

最新評論

仪征市| 洪洞县| 高雄市| 博兴县| 津市市| 梁平县| 秭归县| 南安市| 涟水县| 门源| 保定市| 通渭县| 勐海县| 峡江县| 虎林市| 泸西县| 松溪县| 蒲城县| 兴业县| 张北县| 察隅县| 阳江市| 杭锦旗| 永福县| 社会| 梓潼县| 河西区| 蓬溪县| 天津市| 黄冈市| 马龙县| 鞍山市| 濮阳县| 扶风县| 河东区| 霞浦县| 湘阴县| 龙陵县| 皮山县| 交城县| 靖宇县|