// 函數(shù)使用期間:變量的作用域一定要注意,主要體現(xiàn)在 1. 變量作用域內(nèi)是否被定義 2. 可變對象傳參是否會被修改
概念:內(nèi)存中變量名和對象的對應關系 // 字典
// 每個命名空間都是獨立的存在,可以存在相同名字的變量
分類:
1. 局部命名空間:函數(shù)所擁有的命名空間,記錄了函數(shù)中定義的變量、入?yún)⒌? 2. 全局命名空間:模塊級的命名空間 // 模塊加載時創(chuàng)建
3. 內(nèi)置命名空間:放置內(nèi)置函數(shù)和異常 // 任何地方都可以使用
生命周期:
1. 函數(shù)調(diào)用時創(chuàng)建、執(zhí)行結(jié)束或拋異常刪除
2. 模塊加載時創(chuàng)建,一直在python解釋器退出
3. python解釋器創(chuàng)建時創(chuàng)建
*注意*
python解釋器加載期間,會加載出內(nèi)置命名空間和全局命名空間,局部命名是在調(diào)用時創(chuàng)建,函數(shù)調(diào)用結(jié)束自動退出。
作用域:針對變量,指的是變量的可用范圍 // 其實作用域就是指的命名空間內(nèi)變量的作用范圍
分類:
只有函數(shù)、類、模塊有作用域,代碼塊沒有作用域
// 變量查找范圍 LEGB
1. 局部作用域
2. 嵌套作用域
3. 全局作用域
4. 內(nèi)置作用域
兩個特殊參數(shù):
1. global // 使得內(nèi)部作用域內(nèi)的變量可以修改全局變量
2. nolocal // 使用內(nèi)部作用域內(nèi)的變量可以修改嵌套作用域內(nèi)的變量
工廠函數(shù)和嵌套作用域 // 內(nèi)層函數(shù)都是可以記住頂層函數(shù)的狀態(tài)
"""
def func():
x = 1
def action():
x = 1
pass
return action // 此處的action函數(shù)會記住外層函數(shù)func的變量
"""
可變對象傳參和不可變對象傳參
1. 不可變對象:值傳遞,內(nèi)部不可修改
2. 可變對象:指針傳遞,內(nèi)部可以修改
避免可變對象傳參的修改
1. 調(diào)用時拷貝,避免在函數(shù)內(nèi)部修改外部可變對象
func(a,b[:])
2. 函數(shù)內(nèi)部進行拷貝
func(a,b):
b = b [:]
可變參數(shù)類型
# 函數(shù)頭部:收集任意數(shù)量的參數(shù)
*args ==> args會是一個元祖
**args ==> args會是一個字典
1. map函數(shù)
list(map(lambda x:x + 2,[1,2,3,4])) => [3,4,5,6] // map對序列中每個元素執(zhí)行相同的操作
2. filter函數(shù)
list(map(lambda x:x > 3,[1,2,3,4,5])) => [4,5] // 返回結(jié)果為True的元素
3. reduce函數(shù)
from functools import reduce
reduce(lambda x,y:x+y,[1,2,3,4]) => 10 // python3 reduce已經(jīng)移到內(nèi)置命名空間里面
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
網(wǎng)頁題目:【python函數(shù)】函數(shù)-創(chuàng)新互聯(lián)
路徑分享:http://www.chinadenli.net/article6/dgisig.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設、網(wǎng)站維護、用戶體驗、網(wǎng)站策劃、云服務器、網(wǎng)站營銷
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)