函數的動態參數,命名空間
阿新 • • 發佈:2018-08-09
關鍵字 查看 args 調用 動態參數 默認 位置 nonlocal out
1 函數的動態參數
1 *args位置參數動態傳參 *在這裏表示接收位置傳參的動態傳參,接收到的是元組
def chi(*food): #參數名:food *表示動態傳參 print(food) chi("菜花","饅頭","花卷","小吃") 結果:(菜花,饅頭,花卷,小吃)
2 **kwargs關鍵字參數動態傳參
def chi(**food) **關鍵字傳參 food是參數名 print(food) chi(冰淇淋="哈根達斯",零食="辣條",小吃="香腸") 結果:{冰淇淋:"哈根達斯",零食:"辣條",小吃:"香腸"} 結果是形成字典
順序:位置參數,*args,默認值,**kwargs
def func(a,*args,c=6,**kwargs) print(a,args,c,kwargs) fun(2,12,23,c=4,哈哈="呵呵",多的="道德") 結果:2 (12,23),{哈哈:"呵呵",多的:"道德"}
形參的位置*,**,聚合
def func(*food): 形參 聚合,位置參數 print(food) lst =["雞蛋","黃瓜","蘋果"]
fun(*lst) 實參 打散 把list,tuple,set,str進行叠代打散
形參: 位置參數 按位置傳參
默認參數 放在後面
動態參數 *args(形成元組) **kwargs(形成字典)
實參的位置*,**,打散
def func(**kwargs): 形參 聚合成關鍵字實參 print(kwargs) dic ={name:"alex",age:18} func(**dic) 實參 打散成關鍵字
實參: 位置參數 按形參的位置傳值
關鍵字參數 按形參的關鍵字傳值
混合參數(位置在前,關鍵字在後)
2 命名空間
1 內置名稱空間
2 全局名稱空間
3 局部名稱空間
a =10 全局名稱空間中的內容 def fn(): fn 也在全局名稱空間 b=20 局部名稱空間 print(a) def gn(): print(a) fn() gn()
作用域
1 全局作用域:內置+全局
2 局部作用域 局部(函數被調用時)
globals()查看全局中的內容
a=110 def fn(): b =20 局部 def gn(): 局部 print(globals()) 可以查看全局作用域中的內容 print(locals()) 查看當前作用域中的內容 gn() fn()
locals()查看當前作用域中的內容
3 函數的嵌套
def outer(): print("哈哈") def inner_1(): print("呵呵") def inner_1_1(): print("嘻嘻") inner_1_1() print("哄哄") def inner_2(): print("嘿嘿") inner_2() inner_1() outer()
結果:哈哈
嘿嘿
呵呵
嘻嘻
哄哄
函數可以相互嵌套
4 global和nonlocal關鍵
global:在局部訪問全局中的內容
nonlocal:在局部尋找外層函數中裏他最近的那個變量
a=10 def global a 作用:1 可以把全局中的內容引入到函數內部 2 在全局創建一個變量 a=10 a+=10 print(a)
a =10 def outer(): def inner():#inner中改變a的值
nonlocal a 尋找外層函數中離他最近的那個變量 a=20 inner() outer()
函數的動態參數,命名空間