deffn(a, b, c):
(a)
(b)
(c)
(x)
(y)
(z)x = 100y = 1000z = 10000 #
x, y ,z 是外界實際存在的值
呼叫函式時,實參可以有常量,變數,表示式或三種組合。
在函式的外部不能直接使用函式的形參,原因:函式呼叫完畢後,形參被銷毀了
fn(10, 20, 30)fn(x, y, z)
fn(x + 10, y * 2, z / 5)
deffn1(a, b, c):
(a, b, c)
fn1(10, 20, 30) #
必須按照順序
deffn1(a, b, c):
(a, b, c)
fn1(a=10, b=20, c=30)
fn1(c=30, b=20, a=10) #
可以不用按照順序
關鍵字實參必須出現在位置實參後
多個位置實參還是按照位置傳參
關鍵字實參為沒有從位置實參拿到值的形參傳值,可以不用按照指定順序
deffn2(a, b, c, d, e, f):
(a, b, c, d, e, f)
fn2(10, 20, 30, e=100, f=500, d=200) #
結果為 10 20 30 200 100 500
fn1(10, c=20, a=30) #
10按位置傳參給a,a=30給a傳參,c可以拿到20,但b沒人傳參
#typeerror:fn1() got multiple values for argument 'a' a被多次傳值
deffn(a, b, c):
(a, b, c)
fn(10, 20, 30) #
結果為10 20 30
fn(a=10, b=20, c=30) #
結果為10 20 30
def fn(a=10, b=20,):(a, b,)
fn(20, 30) #
位置實參
fn(a=200, b=300) #
關鍵字實參
fn(100) #
沒傳值fn(b=100)
#位置形參與預設形參同時存在,預設形參必須在後
def fn(a, b, d=1000, c=5000):
(a, b, c, d)
fn(100, 200, d=1000) #
位置形參必須傳值,預設形參分情況傳值 # 結果為 100 200 5000 1000
可變長形參會以元組形式接收,位置形參與預設形參沒有接收完的,所有傳入的位置實參,用索引來取第幾個
def fn(a, b=500, *args):(a, b)
(args)
fn(1, 20, 100, 200)
#結果為
1 20(100, 200)
fn(100)
#結果為
100 500()
def fn(*args):(args)
fn(1, 2, 3, 4, 5) #
結果為 (1, 2, 3, 4, 5)
a = 'ab'
b = [1, 2]
c = (1, 2)
d =
fn(a)
#結果為 ('ab', )
fn(b) #
結果為 ([1, 2], )
fn(c) #
結果為 ((1, 2), )
fn(d) #
結果為 (, )
#問就拿a,b,c,d進行傳值,如何得到
#('a', 'b')
#(1, 2)
#fn(*a) #
結果為 ('a', 'b')
fn(*b) #
結果為 (1, 2)
fn(*c) #
結果為 (1, 2)
fn(*d) #
結果為 (1, 2)
#打散傳值
def fn(*args):
(args)
ls = [1, 2, 3, 4, 5]
fn(ls)
#結果為 ([1, 2, 3, 4, 5],)
fn(*ls) #
結果為 (1,2,3,4,5) # 將ls打散為1,2,3,4,5再進行傳值
前提:出現在 * 之後的形參 。*為分割線,可以有變數名 *args, 也可以只用來做分隔
def fn(a, b=10, *, c, d=20, e):pass
a 位置形參
b 預設形參
c,e 無值關鍵字形參
d 有值關鍵值形參
注意:a和b有先後順序,c,d,e無先後順序
c,d,e都是出現在*之後,都是關鍵字形參,
由於必須由 關鍵字實參 來傳值,沒有順序的強行要求
def tt(a, b=10, *, c, d=10, e):
(a, b, c, d, e)
def fn(*, a, b=10, c):
(a, b, c)
fn(b=300, c=100, a=200) #
結果為 200 300 100 # 沒有順序的強行要求
用字典來存放資料{}
def fn(*, a, b=20, c, **kwargs):print(a, b)
print(kwargs)
fn(d=40, e=50, a=10, c=30)
#結果為10 20
dic =def fn1(**kwargs):
(kwargs)
fn1(**dic) #
結果為
dd =}
fn1(**dd) #
結果為 }
def fn2(*args):
(args)
ll = [1, [1, 2], ]
fn2(*ll) #
結果為 (1, [1, 2], )
1、位置形參與預設形參: 能用 位置實參 關鍵字實參 傳值
2、可變長位置形參:只能 位置實參 傳值
3、所以關鍵字形參:只能 關鍵字實參 傳值
def fn(a, b=10, *args, d, f=20, **kwargs):1(a)
(b)
(args)
(d)
(f)
(kwargs)
有位置實參傳值: args和kwargs如果都能接收到值:
b必須傳值且只能用位置實參傳值,f可以不用傳值
fn(1,2,3,4,d=5,g=6,k=7)
#結果為
2(3, 4)520
全部用關鍵字實參傳值500fn(x=100, y=200, d=300, b=400, a=500)
#結果為
400()
30020
函式的形參與實參
函式的引數分為形參 形式引數 和實參 實際引數 形參又分為,位置引數 預設引數 可變引數 關鍵字引數 形參使在定義函式的時候給出的 實參使在呼叫函式的時候給出的 1.位置引數 實參和形參的個數必須保持一致,最好按位置傳參,如果位置部隊硬就指定說明 2.預設引數 形參和實參可以不一致,如果不想使用預設...
形參與實參
形參與實參 函式的形參與實參 引數概念 a abcdef print len a 什麼是形參 def function1 a,b if a b print a else print b 什麼是實參 function1 1,3 引數的傳遞 第一種,最簡單的傳遞 def function a,b if ...
形參與實參
學習了引數那麼我們最先了解就是引數,而引數分為兩種,形參與實參,形參變數只有在被呼叫時才分配記憶體單元,在呼叫結束時,即刻釋放所分配的記憶體單元。因此,形參只在函式內部有效。函式呼叫結束返回主呼叫函式後則不能再使用該形參變數。實參可以是常量 變數 表示式 函式等,無論實參是何種型別的量,在進行函式呼...