函數參數
1.形參變量只有在被調用時才分配內存單元,在調用結束時,即刻釋放所分配的內存單元。因此,形參只在函數內部有效。函數調用結束返回主調用函數后則不能再使用該形參變量
2.實參可以是常量、變量、表達式、函數等,無論實參是何種類型的量,在進行函數調用時,它們都必須有確定的值,以便把這些值傳送給形參。因此應預先用賦值,輸入等辦法使參數獲得確定值
a傳給了x。b傳給了y。
3.位置參數和關鍵字(標準調用:實參與形參位置一一對應;關鍵字調用:位置無需固定)
#位置參數,必須一一對應,否則報錯,缺一個或者多一個不行
def test1(x,y,z):
print(x)
print(y)
print(z)
test1(1,3,5)
結果:
1
3
5
#關鍵字參數,不需要一一對應,缺一個或者多一個不行
def test1(x,y,z):
print(x)
print(y)
print(z)
test1(y=1,z=3,x=5)
結果:
5
1
3
位置參數和關鍵字混搭
#位置參數必須在關鍵字參數左邊
def test1(x,y,z):
print(x)
print(y)
print(z)
test1(1,3,z=5)
#z=5換成y=5會報錯,因為按照順序,5會覆蓋3,但是z值沒有
結果:
1
3
5
4.默認參數
def handle(x,type="None"):
print(x,type)
handle("hello")
handle("hi",type="how are you")
handle("ll","ii")
結果:
hello None
hi how are you
ll ii
5.參數組
**跟字典有關系
*跟列表有關系
**,*args在最后放著表示可擴展性!!!!
*
def test(x,*args):
print(x)
print(x,args)
print(args)
print(args[0])
print(*args[0])
test(1,["c","v","b"],5,6,7,8)
結果:
1
1 (['c', 'v', 'b'], 5, 6, 7, 8)
(['c', 'v', 'b'], 5, 6, 7, 8)
['c', 'v', 'b']
c v b
**
def test01(x,**kwargs):
print(x)
print(kwargs)
test01(1,name="charon",age=10)
結果:
1
{'name': 'charon', 'age': 10}
結合:*args千萬不能在后面,否則報錯,位置參數必須在關鍵字參數前面
def test01(x,*args,**kwargs):
print(x)
print(args,args[1])
print(kwargs)
test01(1,"vv",2,"bb",name="charon",age=10)
結果:
1
('vv', 2, 'bb') 2
{'name': 'charon', 'age': 10}