python開發 函式的引數傳遞

2021-09-06 11:52:36 字數 2199 閱讀 2312

在這個用例中,我們要討論的是關於函式的傳參問題

我所使用的python版本為3.3.2

對於函式:

1

deffun(arg):

2print

(arg)34

defmain():

5 fun('

hello,hongten')

67if__name__ == '

__main__':

8 main()

當我們傳遞乙個引數給fun()函式,即可列印出傳遞的引數值

資訊。這裡列印的資訊為:

hello,hongten

對於下面的用例:

1

def fun(a=1, b=none, c=none, *args):

2print('

,,,'

.format(a, b, c, args))34

defmain():

5 fun(a='

one'

)6 fun('

one')7

8if__name__ == '

__main__':

9 main()

當傳遞的引數為:fun(a='one')和fun('one')這樣的傳參都是把值複製給引數a,所有兩種傳參的效果是一樣的:

one,none,none,()

one,none,none,()

當然我們也可以給引數:b,c,*args賦值

如:

1

def fun(a=1, b=none, c=none, *args):

2print('

,,,'

.format(a, b, c, args))34

defmain():

5 fun('

one',1,2,('

hongten'))

67if__name__ == '

__main__':

8 main()

這樣我們就給引數:b,c,args賦上了值

執行效果:

one,1,2,('

hongten

',)

在上面的列子中,我們不能繞開引數*args前面的引數a,b,c給*args複製:

如:

1

def fun(a=1, b=none, c=none, *args):

2print('

,,,'

.format(a, b, c, args))34

defmain():

5 fun(args=('

hongten'))

67if__name__ == '

__main__':

8 main()

執行效果:

traceback (most recent call last):

file

"e:/python33/python_workspace/test_fun.py

", line 21, in

main()

file

"e:/python33/python_workspace/test_fun.py

", line 18, in

main

fun(args=('

hongten'))

typeerror: fun() got an unexpected keyword argument

'args

'

但是對於引數:a,b,c來說,是可以使用這樣的方式進行賦值

如:

1

def fun(a=1, b=none, c=none, *args):

2print('

,,,'

.format(a, b, c, args))34

defmain():

5 fun(c=('

hongten

'), b=2, a=[1,2,3])67

if__name__ == '

__main__':

8 main()

執行效果:

[1, 2, 3],2,hongten,()

python開發函式高階 匿名函式

簡單的需要用函式去解決的問題 匿名函式的函式體 只有一行 也叫lambda表示式 cal2 函式名 lambda n 引數 n n 引數怎麼處理,並且返回值 引數可以有多個,用逗號隔開 匿名函式不管邏輯多複雜,只能寫一行,且邏輯執行結束後的內容就是返回值 返回值和正常的函式一樣可以是任意資料型別 1...

Python的函式引數傳遞

原址 我想,這個標題或許是很多初學者的問題。尤其是像我這樣的對c c 比較熟悉,剛剛進入python殿堂的朋友們 c c 的函式引數的傳遞方式根深蒂固的影響這我們的思維 引用?傳值?究竟是那種呢。呵呵,語言的特性決定了是使用的方法,那麼,現在我們來 一下python的函式引數傳遞方式。在開始之前,我...

Python的函式引數傳遞

看兩個例子 a 1 deffun a a 2 fun a print a 1a deffun a fun a print a 1 所有的變數都可以理解是記憶體中乙個物件的 引用 或者,也可以看似c中void 的感覺。a 1 deffun a print func in id a func in 41...