今天這篇文章我們就來了解python函數呼叫與參數傳遞相關的知識。當我們了解了什麼是函數之後需要了解的是python如何電用函數。 畢竟只知道什麼是函數而不知道python怎麼呼叫呼叫函數的話那麼只知道函數的定義也是沒有什麼作用的,廢話不多說我們開始學習呼叫函數吧。
函數呼叫:定義一個函數只給了函數一個名稱,指定了函數裡包含的參數,和程式碼區塊結構。這個函數的基本結構完成以後,你可以透過另一個函數呼叫執行,也可以直接從Python提示字元執行。如下實例呼叫了printme()函數:
#!/usr/bin/python # -*- coding: UTF-8 -*- # 定义函数 def printme( str ): "打印任何传入的字符串" print str; return; # 调用函数 printme("我要调用用户自定义函数!"); printme("再次调用同一函数");
以上實例所輸出的結果如下所示:
我要调用用户自定义函数! 再次调用同一函数
這是相當的簡單,只需要動動手去試驗一下就可以了解。
接下來我們來說一下參數傳遞:在 python 中,類型屬於對象,變數是沒有類型的。
參考如下的編碼:
a=[1,2,3] a="Runoob"
(以上程式碼中,[1,2,3] 是List 類型,"Runoob" 是String 類型,而變數a 是沒有類型,她只是一個對象的引用(一個指針),可以是List 類型對象,也可以指向String 類型對象。)
可更改(mutable)與不可更改(immutable)物件
(在python 中,strings, tuples, 和numbers 是不可更改的對象,而list,dict 等則是可以修改的物件。)
1.不可變類型:變數賦值 a=5 後再賦值 a=10,這裡實際是新產生一個int 值物件10,再讓a 指向它,而5 被丟棄,不是改變a的值,相當於新生成了a。
2.可變型別:變數賦值 la=[1,2,3,4] 後再賦值 la[2]=5 則是將list la 的第三個元素值更改,本身la沒有動,只是其內部的一部分值被修改了。
python 函數的參數傳遞:
1.不可變型別:類似 c 的值傳遞,如 整數、字串、元組。如fun(a),傳遞的只是a的值,沒有影響a物件本身。例如在 fun(a)內部修改 a 的值,只是修改另一個複製的對象,不會影響 a 本身。
2.可變型別:類似 c 的引用傳遞,如 列表,字典。如fun(la),則是將la 真正的傳過去,修改後fun外部的la也會受影響
(python 中一切都是對象,嚴格意義我們不能說值傳遞還是引用傳遞,我們應該說傳不可變物件和傳輸可變物件。)
Python傳不可變物件實例:
#!/usr/bin/python # -*- coding: UTF-8 -*- def ChangeInt( a ): a = 10 b = 2 ChangeInt(b) print b # 结果是 2
(實例中有int 對象2,指向它的變數是b,在傳遞給ChangeInt 函數時,以傳值的方式複製了變數b,a 和b 都指向了同一個Int 對象,在a =10 時,則新產生一個int 值物件10,並讓a 指向它。)
python傳可變物件實例:
#!/usr/bin/python # -*- coding: UTF-8 -*- # 可写函数说明 def changeme( mylist ): "修改传入的列表" mylist.append([1,2,3,4]); print "函数内取值: ", mylist return # 调用changeme函数 mylist = [10,20,30]; changeme( mylist ); print "函数外取值: ", mylist
實例中傳入函數的和在末尾添加新內容的物件用的是同一個引用,故輸出結果如下:
函数内取值: [10, 20, 30, [1, 2, 3, 4]] 函数外取值: [10, 20, 30, [1, 2, 3, 4]]
以上就是今天所要說明的內容,如何呼叫函數,以及python參數傳遞。雖然以上的知識點舉了實例,但是還是需要自己來試一試,畢竟自己不動手的話就如同紙上談兵一樣,動手實踐才是驗證所學的最好的方法與途徑。最後我也希望這篇文章能為正在學習python的你帶來一點幫助
#更多相關知識,請造訪php中文網Python教程欄位。
以上是python函數呼叫與參數傳遞(實例解析)的詳細內容。更多資訊請關注PHP中文網其他相關文章!