1.函數的動態參數: 1.*args 位置參數動態傳參 結果:1 2 3 4 5 順序:位置參數=>*args=>預設值參數 *在這裡表示接收位置參數的動態傳參,接收到的是元組 結果為:1 2 3 4 5 將第一個值賦值給a,後面的值都給b 2.**kwargs 關鍵字參數動態傳參 結果為: 1 { ...
1.函數的動態參數:
1.*args 位置參數動態傳參
1 def fun(a,b,c,d,e): 2 print(a,b,c,d,e) 3 fun(1,2,3,4,5)
結果:1 2 3 4 5
順序:位置參數=>*args=>預設值參數
*在這裡表示接收位置參數的動態傳參,接收到的是元組
1 def fun(a,*b,c=5): #參數名是b,*表示動態傳參 2 print(a) 3 print(b) 4 print(c) 5 fun(1,2,3,4)
結果為:1
2 3 4
5
將第一個值賦值給a,後面的值都給b
2.**kwargs 關鍵字參數動態傳參
1 def fun(a,**kwargs): 2 print(a) 3 print(args) 4 fun(1,b=2,c=3)
結果為:
1
{'b':1,'c':2}
**在這裡表示的是接收關鍵字的動態傳參,接收到的是字典
順序:位置參數,*args,預設值參數,**kwargs
以上參數可以隨意搭配使用
1 def fun(a, *args, c="哈哈", **kwargs): 2 print(a, args, c, kwargs) 3 fun(1, 2, 3, 4,5, 6)
結果為:
1,(2,3,4,5,6),哈哈,{}
單行註釋#
多行註釋''' '''
1 def fun(a,b): 2 """ 3 #這個函數是用來計算a和b的和 4 :param a:#第一個數據 5 :param b:#第二個數據 6 :return:#返回的是兩個數的和 7 """ 8 return a+b 9 fun(1,2)
接收所有參數
def fun(*args,**kwargs):
print(args,kwargs)
fun(1,2,3,a=4,b=5)
*在形參位置:聚合(位置參數)
1 def fun(*lst): 2 print(lst) 3 4 lst = [1,2,3,4,5] 5 fun(lst)
結果為:([1,2,3,4,5])
*在實參位置:打散
1 def fun(*lst): 2 print(lst) 3 4 lst = [1,2,3,4,5] 5 fun(*lst)#把list,tuple,set,str進行迭代打散
結果為:(1,2,3,4,5)
**在形參位置(聚合成關鍵字參數)
1 def fun(**kwargs): 2 print(kwargs) 3 dic = {"name":"abc","age":18} 4 fun(**dic)#**在實參位置打散成關鍵字參數
結果為:
{"name":"abc","age":18}
2.命名空間
1.內置名稱空間
2.全局名稱空間
3.局部名稱空間
1 a = 10#全局名稱空間 2 def fun():#fn也在全局名稱空間 3 b = 20#局部名稱空間 4 print(a) 5 fun()
globals()可以查看全局作用域中的內容
locals()可以查看當前作用域中的內容
3.global和nonlocal
global:
1 a = 10#全局變數,本身不安全,不能隨意修改 2 def fun(): 3 global a# 1.可以把全局中的內容引入到函數內部,2.在全局創建一個變數 4 a = 20 5 a += 10 6 print(a) 7 fun()
nonlocal:
1 a = 10 2 def outer(): 3 def inner(): #在inner中改變a的值 4 nonlocal a #尋找外層函數中離他最近的那個變數 5 a = 20 6 inner() 7 outer()
函數可以互相嵌套