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