Python 引數傳遞

2021-06-27 17:28:10 字數 1858 閱讀 4136

python的引數傳遞很有趣的樣子,記一下。

#位置引數,通過位置對應傳遞引數

>>>def try(name,age):

... first,second=name,age

... print 'first=%s,second=%d' % (first,second)

>>>try('sam',3)

>>>first=sam,second=3

#位置引數,若有預設引數而呼叫時沒有給出,則使用預設值,若給出,則把預設值覆蓋

>>>def try(name,age=12)

... first,second=name,age

... print 'first=%s,second=%d' % (first,second)

>>>try('sam')

>>>first=sam,second=12

>>>try('sam',21)

>>>first=sam,second=21

#關鍵字引數,通過位置對應傳遞引數

>>>def try(name,age):

... first,second=name,age

... print 'first=%s,second=%d' % (first,second)

>>>try(age=3,name='sam')

first=sam,second=3

#關鍵字引數,若有預設引數而呼叫時沒有給出,則使用預設值,若給出,則把預設值覆蓋

>>>def try(name,age=12):

... first,second=name,age

... print 'first=%s,second=%d' % (first,second)

>>>try(name='sam')

first=sam,second=12

>>>try(age=21,name='sam')

first=sam,second=21

當然推薦是使用關鍵字引數,否則如果使用位置引數,誰都不知道會給函式引數傳入什麼值。同時使用位置引數和關鍵字引數也行,這時就必須注意要把位置引數放在關鍵字引數前。

接下來就是非常有趣的語法了,在python中只要像下面這樣定義函式時

>>>def try(*parameter):

... print parameter

>>>try(1,2,3)

(1,2,3)

突然發現怎麼可以傳入多個引數了?就是因為引數前的星號可以將所有值打包為乙個元組,然後作為乙個引數傳入進入函式,所以列印出來的就是乙個元組形式。

>>>def try(*parameter):

... print parameter

>>>try(x=1,y=2,z=3)

traceback :

file"",line 1,in typeerror:try<> got an expected keyword argument'x'

不是可以傳入多個值的嗎,怎麼又出錯誤了,其實仔細觀察就會發現前面的例子都只是傳入位置引數,那麼傳入關鍵字引數就不行了麼?放心,這個問題早就給你解決好了。你只需要使用兩個星號就ok了。

>>>def try(*parameter):

... print parameter

>>>try(x=1,y=2,z=3)

這下就行了,只是返回的不再是元組而是字典了。

python 引數傳遞 Python 引數傳遞

python中的變數 乙個變數是區域性還是全域性,在編譯函式的時候就已經決定,因此讀變數值的時候也不會逐層向外查詢。變數是全域性還是局域,根據如下3條 1.如果函式內部有global語句,那麼它宣告的變數是全域性的。2.如果函式內部有對變數的賦值語句,那麼它是局域的。3.除此之外都是全域性的。注意1...

python 引數傳遞 python引數傳遞

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

python變數傳遞 Python引數傳遞

在 python 中,型別屬於物件,變數是沒有型別的 a 1,2,3 a runoob 以上 中,1,2,3 是 list 型別,runoob 是 string 型別,而變數 a 是沒有型別,她僅僅是乙個物件的引用 乙個指標 可以是指向 list 型別物件,也可以是指向 string 型別物件。可更...