函式中引數傳遞的5種方式

2022-08-10 19:39:10 字數 1709 閱讀 6881

1、必須引數(位置引數)

必需引數:先用形式引數定義,然後在呼叫時對應位置使用實參(具體的數值)呼叫,定義的形式引數和呼叫的實際引數必需一一對應(順序、數量)。

def sum(a, b):

return a + b

sum(5, 6)

2、關鍵字引數

關鍵字引數:先使用形式引數定義,然後呼叫時以關鍵字的形式(形式引數 = 實際引數)傳入引數,函式呼叫時不關心引數的順序。

def sub(a, b):

return a - b

s1 = sub(a=6, b=3)

s2 = sub(b=3, a=0)

s3 = sub(9, b=3)

3、預設引數

預設引數:預設引數是指函式在定義時,引數被預先賦予相應的預設值。這樣在呼叫時,可以重新賦值,也可以(對預設引數)不用賦值而使用預設的值。特別注意,預設引數只能定義在後面。

def mul(a, b=3, c=2):

print("a:, b:, c:".format(a, b, c))

return a*b*c

print(mul(2))

print(mul(2, b=4))   #若要對預設值引數重新賦值,需要使用 關鍵字=值 的形式傳參

print(mul(2, b=4, c=6))

4、不定長引數

不定長引數:數需求傳入的引數數量不明確的情況下,一般使用 *args或者 **kwargs形式宣告引數的形式

(1)以*args形式宣告引數在函式內使用args獲取傳入的引數(args的值是由引數構成的元組)

def fun(*args):

print(args)

#呼叫示例1

fun(1, 2, 3, 4, 'a')

fun()

fun(4,'a')

#呼叫示例2

l = [1, 2, 3, 4]

t = ('a', 'b', 'c')

d =

#當傳入引數為列表、元組、或者字典的時候,引數名字前需要加*

fun(*l)

fun(*t)

fun(*d)

(2)**kwargs形式的可變引數,在函式內部kwargs是乙個字典,字典的key是我們傳入的形式引數的名字,值為實際引數的值,若以字典形式傳入時,注意字典的key必須時字串

def fun(**kwargs):

print(kwargs)

#呼叫形式1:

fun(a = 1, b = 2, c = 3)

fun()

#呼叫形式2

d =

fun(**d)

5、必須關鍵字引數

必須關鍵字引數:對於必須關鍵字引數 在傳入時必須以關鍵字形式傳入,一般需要寫在所有引數的最後部分,與其他形式的引數之間用 * 隔開。

def funkw(a, k=0, *, city, age):

print(a)

print(k)

print(city)

print(age)

#正確的呼叫

funkw(20, city='西安', age=30)

#錯誤的呼叫

#funkw(20, k=23, '西安', 30)

函式引數傳遞的3種方式

先看三種方式實現函式中引數傳遞的例項程式 輸入描述 兩個待交換的整數 程式輸出 交換後得兩個整數 includevoid myswap int x,int y int main includevoid myswap int p1,int p2 int main includevoid myswap ...

C C 中函式引數的三種傳遞方式

一 值傳遞 這種傳遞方式中,實參和形參是兩個不同的位址空間,引數傳遞的實質是將原函式中變數的值,複製到被呼叫函式形參所在的儲存空間中,這個形參的位址空間在函式執行完畢後,會被 掉。整個被呼叫函式對形參的操作,只影響形參對應的位址空間,不影響原來函式中的變數的值,因為這兩個不是同乙個儲存空間。二 引用...

C C 中函式引數的三種傳遞方式

一 值傳遞 這種傳遞方式中,實參和形參是兩個不同的位址空間,引數傳遞的實質是將原函式中變數的值,複製到被呼叫函式形參所在的儲存空間中,這個形參的位址空間在函式執行完畢後,會被 掉。整個被呼叫函式對形參的操作,只影響形參對應的位址空間,不影響原來函式中的變數的值,因為這兩個不是同乙個儲存空間。二 引用...