python函式傳遞引數的幾種方法整理

2021-09-11 03:53:38 字數 4751 閱讀 7488

形參:函式定義使用的引數

實參:函式呼叫使用的引數

1、位置實參:引數的先後順序很重要

def

func

(first, last)

:print

("fisrt: "

+ first,

",last: "

+ last +

"\n"

)func(

'a',

'b')

func(

'b',

'a')

fisrt: a ,last: b

fisrt: b ,last: a

2、關鍵字實參:在傳引數的時候,將實參指定給形參,和引數順序無關

def

func

(first, last)

:print

("fisrt: "

+ first,

",last: "

+ last +

"\n"

)func(last =

'a', first =

'b')

func(first =

'b', last =

'a')

fisrt: b ,last: a

fisrt: b ,last: a

預設值:

在編寫函式的時候,可以給形參指定乙個預設值,當這個函式被呼叫時沒用傳遞該形參,那麼這個形參的值就是預設值。

def

func

(first, last=

'c')

:print

("fisrt: "

+ first,

",last: "

+ last +

"\n"

)func(first =

'b')

func(

'b')

func(

'a',

'b')

func(first =

'b', last =

'a')

fisrt: b ,last: c

fisrt: b ,last: c

fisrt: a ,last: b

fisrt: b ,last: a

3、傳遞可選的實參:將可選的那個形參放到引數最後並賦值為空字串

def

get_name

(first_name, last_name, middle_name='')

:if middle_name:

full_name = first_name+

" "+middle_name+

" "+last_name

else

: full_name = first_name+

" "+last_name

return full_name.title(

)name1 = get_name(

'wang'

,'xiao'

,'ming'

)name2 = get_name(

'wang'

,'ming'

)print

(name1 +

'\n'

+ name2)

wang ming xiao

wang ming

4、傳遞任意數量的實參

def

func

(*args)

:print

(args)

func(

'a')

func(

'b')

func(1)

func(

'a',

'b')

func(

'a',

'b',

'c')

func(

'a',

'b',

'c',

'd')

(

'a',)(

'b',)(

1,)(

'a',

'b')

('a'

,'b'

,'c')(

'a',

'b',

'c',

'd')

其中 *args 讓python建立乙個名為args的空元組,並將接受到的所有實參都放到這個元組中

5、位置實參&&任意數量實參

如果讓函式接受不同型別的實參,必須在 函式定義中將接納任意數量實參的形參放在最後

python先匹配位置實參和關鍵字實參,然後把其餘引數放到最後乙個形參裡

def

message

(age,

*other)

:print

("age: "

+str

(age)

)for i in other:

print

(i)message(18,

'c cup'

)message(

100)

message(20,

'red'

,'blue'

,'white'

)

age:

18c cup

#age:

100#

age:

20red

blue

white

6、關鍵字實參&&任意數量

當需要接受任意數量的實參,但是預先不知道傳遞給函式的是什麼資訊

接受帶有引數名的引數,組成乙個字典

def

person

(name, age,

**kw)

:print

('name: '

+name,

'age: '

+str

(age)

,'kw: '

+str

(kw)

)person(

'monica',18

)person(

'monica',19

, city=

'beijing'

)person(

'monica',20

, city=

'beijing'

, job=

'teacher'

)

name: monica age:

18 kw:

name: monica age:

19 kw:

name: monica age:

20 kw:

**形參kw 中的兩個 * 讓python建立乙個名為kw的空字典,並將所有的鍵值對都封裝到這個字典當中。

7、組合使用

def

person

(name, age, height=

170,

*args,

**kw)

:print

('name: '

+name,

'age: '

+str

(age)

,'args: '

+str

(args)

,'kw: '

+str

(kw)

)person(

'monica',15

)person(

'monica',16

,180

)person(

'monica',17

,'a'

,'b'

)person(

'monica',18

, city=

'beijing'

)person(

'monica'

, height=

160, age=19)

person(

'monica',20

,'a'

,'b'

,'c'

, city=

'beijing'

, job=

'teacher'

)

name: monica age:

15 args:

() kw:

name: monica age:

16 args:

() kw:

name: monica age:

17 args:

('b'

,) kw:

name: monica age:

18 args:

() kw:

name: monica age:

19 args:

() kw:

name: monica age:

20 args:

('b'

,'c'

) kw:

Python函式引數傳遞的幾種形式

莫聽穿林打葉聲,何妨吟嘯且徐行。竹杖芒鞋輕勝馬,誰怕?一蓑煙雨任平生。位置傳參 實際呼叫引數 實參 的對應關係與形式引數 形參 的對應關係是按位置來依次對應的。def fx a,b,c pass fx 1,2,3 序列傳參 在函式呼叫過程中,用 將序列拆解 或收集 後按位置進行傳遞的傳參方式,def...

python中函式引數傳遞的幾種方法

2008 06 19 13 06 48 python中函式引數的傳遞是通過 賦值 來傳遞的。但這條規則只回答了函式引數傳遞的 戰略問題 並沒有回答 戰術問題 也就說沒有回答怎麼賦值的問題。函式引數的使用可以分為兩個方面,一是函式引數如何定義,二是函式在呼叫時的引數如何解析的。而後者又是由前者決定的。...

python中函式引數傳遞的幾種方法

python中函式引數的傳遞是通過 賦值 來傳遞的。但這條規則只回答了函式引數傳遞的 戰略問題 並沒有回答 戰術問題 也就說沒有回答怎麼賦值的問題。函式引數的使用可以分為兩個方面,一是函式引數如何定義,二是函式在呼叫時的引數如何解析的。而後者又是由前者決定的。函式引數的定義有四種形式 1.f arg...