函式之形參與實參

2022-06-24 17:39:14 字數 4251 閱讀 4485

def

fn(a, b, c):

print

(a)

print

(b)

print

(c)

print

(x)

print

(y)

print

(z)x = 100y = 1000z = 10000 #

x, y ,z 是外界實際存在的值

呼叫函式時,實參可以有常量,變數,表示式或三種組合。

在函式的外部不能直接使用函式的形參,原因:函式呼叫完畢後,形參被銷毀了

fn(10, 20, 30)

fn(x, y, z)

fn(x + 10, y * 2, z / 5)

def

fn1(a, b, c):

print

(a, b, c)

fn1(10, 20, 30) #

必須按照順序

def

fn1(a, b, c):

print

(a, b, c)

fn1(a=10, b=20, c=30)

fn1(c=30, b=20, a=10) #

可以不用按照順序

關鍵字實參必須出現在位置實參後

多個位置實參還是按照位置傳參

關鍵字實參為沒有從位置實參拿到值的形參傳值,可以不用按照指定順序

def

fn2(a, b, c, d, e, f):

print

(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被多次傳值

def

fn(a, b, c):

print

(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,):

print

(a, b,)

fn(20, 30) #

位置實參

fn(a=200, b=300) #

關鍵字實參

fn(100) #

沒傳值fn(b=100)

#位置形參與預設形參同時存在,預設形參必須在後

def fn(a, b, d=1000, c=5000):

print

(a, b, c, d)

fn(100, 200, d=1000) #

位置形參必須傳值,預設形參分情況傳值 # 結果為 100 200 5000 1000

可變長形參會以元組形式接收,位置形參與預設形參沒有接收完的,所有傳入的位置實參,用索引來取第幾個

def fn(a, b=500, *args):

print

(a, b)

print

(args)

fn(1, 20, 100, 200)

#結果為

1 20(100, 200)

fn(100)

#結果為

100 500()

def fn(*args):

print

(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):

print

(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):

print

(a, b, c, d, e)

def fn(*, a, b=10, c):

print

(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):

print

(kwargs)

fn1(**dic) #

結果為

dd =}

fn1(**dd) #

結果為 }

def fn2(*args):

print

(args)

ll = [1, [1, 2], ]

fn2(*ll) #

結果為 (1, [1, 2], )

1、位置形參與預設形參: 能用 位置實參 關鍵字實參 傳值

2、可變長位置形參:只能 位置實參 傳值

3、所以關鍵字形參:只能 關鍵字實參 傳值

def fn(a, b=10, *args, d, f=20, **kwargs):

print

(a)

print

(b)

print

(args)

print

(d)

print

(f)

print

(kwargs)

有位置實參傳值: args和kwargs如果都能接收到值:

b必須傳值且只能用位置實參傳值,f可以不用傳值

fn(1,2,3,4,d=5,g=6,k=7)

#結果為

1

2(3, 4)520

全部用關鍵字實參傳值

fn(x=100, y=200, d=300, b=400, a=500)

#結果為

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 ...

形參與實參

學習了引數那麼我們最先了解就是引數,而引數分為兩種,形參與實參,形參變數只有在被呼叫時才分配記憶體單元,在呼叫結束時,即刻釋放所分配的記憶體單元。因此,形參只在函式內部有效。函式呼叫結束返回主呼叫函式後則不能再使用該形參變數。實參可以是常量 變數 表示式 函式等,無論實參是何種型別的量,在進行函式呼...