10 形參和實參

2021-10-22 13:56:02 字數 4205 閱讀 7028

2.5 \*和\**混合使用

2.6 重點知識點

2.7 命名關鍵字引數(了解)

2.8 混合使用

三、一種特殊的用法

1、形參:在定義函式階段定義的引數, 叫形式引數, 簡稱形參(相當於變數名)

2、實參:再呼叫函式的階段傳入的值, 叫實際引數, 簡稱實參(相當於變數值)

3、關係:在呼叫的時候實參的值會繫結給形參, 這種繫結關係只能在函式體內使用

4、實參和形參的繫結關係只有在函式呼叫時生效, 呼叫函式結束後接觸繫結關係

5、實參實際是乙個值,可以是什麼形式?如下:

def

func

(x, y)

:# 形參

return x, y

func(2,

4)# 實參

# 形式一

func(2,

4)# 形式二

a =2

b =4

func(a, b)

# 形式三

func(

int(

'2'),4

)# 形式四

func(func(2,

3), func(3,

4))

2.1 位置引數

按照從左到右的順序依次定義的引數是位置引數

def

func

(x, y)

:print

(x, y)

func(1,

2)

2.2 關鍵字(實)引數
def

func

(x, y)

:print

(x, y)

func(x=

1, y=2)

func(y=

2, x=

1)

2.3 預設(行)引數
def

func

(x, y=2)

:print

(x, y)

func(3)

func(x=

3, y=

4)

2.4 可變長度的引數(*與**)

可變長度: 在呼叫函式時,傳入的(實參)值不固定個數, 而實參是為了形參賦值的, 所以對應著,針對溢位的實參必須有對應的形參來接收

2.4.1 可變長度的位置引數

# 一、* 用在形參中

deffunc

(x, y,

*args)

:print

(x, y, args)

func(1,

2,3,

4,5,

6)# 結果

# 1 2 (3, 4, 5, 6)

# 二、* 用在實參中(實參中帶*,先將*後的值打散)

deffunc

(x, y, z)

:print

(x, y, z)

func(*[

11,22,

33])# 三、*用在形參和實參上

deffunc

(x, y,

*args)

:print

(x, y, args)

func(1,

2,[3

,4,5

])# 結果1 2 ([3, 4, 5],)

func(1,

2,*[

3,4,

5])# 結果1 2 (3, 4, 5)

2.4.2 可變長度的關鍵字引數
# 一、** 用在形參中

deffunc

(x, y,

**kwargs)

:print

(x, y, kwargs)

func(x=

1, y=

2, z=

3, m=

5, n=6)

# 結果 1 2

# 二、** 用在實參中(實參中帶*,先將*後的值打散成關鍵字實參)

deffunc

(x, y, z)

:print

(x, y, z)

func(**)

# 結果:1 2 3

# 三、**用在形參和實參上

deffunc

(x, y,

**kwargs)

:print

(x, y, kwargs)

func(**)

# 結果:1 2

2.5 *和**混合使用
def

func

(*args,

**kwargs)

:print

(args, kwargs)

func(1,

2,3,x=

1,y=2)

# 結果:(1,2,3)

2.6 重點知識點
func(x=1,

2)# 錯的

func(

1, y=1)

# 對的

func(

1, y=

2, x=1)

# 錯的

func(1,

2,y=

2, x=1)

# 錯的

# 示範一

# 定義階段

m =2

deffunc

(x, y=m)

:# y是2的記憶體位址

print

(x, y)

# 呼叫階段

m=3333

func(1)

# 結果1, 2

# 示範二

m =[1]

deffunc

(x, y)

:print

(x, y)

# 呼叫階段2)

func(1)

# 結果1,[1,2]

def

func

(x, l=

none):

if l is

none

: l=

return l

func(2)

func(2,

[1,2

,3])

2.7 命名關鍵字引數(了解)
# 特點1

deffunc

(x, y,

*, a, b)

:# 其中a、b就是命名關鍵字引數

print

(x, y)

print

(a, b)

func(1,

2,11,

22)# 錯誤

func(1,

2, a=

11, b=22)

# 正確

2.8 混合使用
def

func

(x, y=11,

*args, z,

**kwargs)

:print

(x, y, args, z, kwargs)

def

func

(x, y, z, a, b, c)

:print

(x)print

(y)print

(z)print

(a)print

(b)print

(c)func(

1, y=2,

*(1,

2),**

)# 錯誤

func(1,

*(1,

2), a=2,

**)# 正確

def

index_

(x, y)

:print

(x, y)

def(

*args,

**kwargs)

:# args=(1,) kwargs=

index(

*args,

**kwargs)

# index_(*(1,), **)

# index_(1, y=2)

1, y=2)

# 根據index_來變

形參和實參

函式的引數分為形參和實參兩種。形參 出現在函式定義中,在整個 函式體內都可以使用,離開該函式則不能使用。實參出現在主調函式中,進入被調函式後,實參變數也不能使用。形參和實參的功能是作 資料傳送 發生函式呼叫 時,主調函式把實參的值傳送給被調函式的形參從而實現主調函式向被調函式的 資料傳送 函式的形參...

形參和實參

形參 全稱為 形式引數 是在定義函式名和函式體的時候使用的引數,目的是用來接收呼叫該函式時傳遞的引數。形參的作用是實現主調函式與被調函式之間的聯絡,通常將函式所處理的資料,影響函式功能的因素或者函式處理的結果作為形參。沒有形參的函式在形參表的位置應該寫void.main 函式也可以有形參和返回值,其...

形參和實參

形參和實參的區別 1 值傳遞 實參是變數,表示式等值。find int x y find z 上面的例子中,z是實參,x是形參。x變z不變。在值傳遞過程中,實參和形參位於記憶體中兩個不同位址中,實參先自己複製一次拷貝,再把拷貝複製給形參。所以,在值傳遞過程中,形參的變化不會對實參有任何的影響。2 位...