python(動態傳參、命名空間、函數嵌套、global和nonlocal關鍵字)
阿新 • • 發佈:2018-08-09
local pri hide 為我 one pytho locals 作用 屬於
一、函數的動態傳參
1.*args位置參數動態傳參
def chi(*food): print(food) chi("燒烤","火鍋","蝦吃蝦涮","烤魚")View Code
多個位置參數傳遞進去,收到的內容是元組tuple,動態參數的位置必須要在位置參數後面
2**kwargs 關鍵字參數動態傳參
def chi(**food): print(food) chi(zhangqing="吃點好的",lianda="吃不辣的",徐建="方便面") #{‘zhangqing‘: ‘吃點好的‘, ‘lianda‘: ‘吃不辣的‘, ‘徐建‘: ‘方便面‘}View Code#輸出結果是以字典的形式
順序:位置參數、*args、默認值、**kwargs
def func(*args,**kwargs): 這個樣式的函數比較強大,能滿足的需求很多。
pass
形參的位置*,**:聚合
實參的位置*,**:打散
位置參數的動態傳參:把list、tuple、set、str 進行叠代打散
關鍵字動態傳參: 打散成字典
二、命名空間
1.內置命名空間:存放在python解釋器為我們提供名字的如list、tuple、str等這些都是內置命名空間。
2.全局命名空間:我們在py文件中,函數外生命的變量都屬於全局命名空間。
3.局部命名空間:在函數中生命的變量會放在局部命名空間。
作用域:
1.全局作用域:內置+全局
2.局部作用域:局部(函數被調用)
globals() 查看全局中的內容
locals() 查看當前作用域中的內容
三、函數嵌套
*只要遇見了()就是函數的調用,如果沒有()就不是函數的調用。
*函數可以互相的嵌套,無限的嵌套。
四、global和nonlocal關鍵字
global:在局部訪問全局中的內容
a = 100 def func(): global a # 加了了個global表示不不再局部創建這個變量量了了. ?而是直 接使?用全局的aView Codea = 28 print(a) func() print(a) #global表?示. 不再使?用局部作?用域中的內容了了. ?而改?用全局作?用域中的變量量
nonlocal:在局部尋找外層函數中離他最近的那個變量,但是不會到全局中尋找。
a = 10 def func1(): a = 20 def func2(): nonlocal a a = 30 print(a) func2() print(a) func1() 結果: 加了nonlocal 30 30 不不加nonlocal 30 20View Code
python(動態傳參、命名空間、函數嵌套、global和nonlocal關鍵字)