Python系列之函數基本知識

之前我們學完了變量,學完了運算符,還有數據類型等等基礎知識,接下來我們要來一起看下函數,說起函數我想大家都不陌生,我們就先來了解下函數的基本知識
什麼是函數呢?
函數是組織好的,可重複使用的,用來實現單一,或相關聯功能的代碼段。
函數的作用是什麼呢?
函數能提高應用的模塊性,和代碼的重複利用率
我們再來看下
1、函數定義

def functionname(parameters):
   "函數_文檔字符串"
   function_suite
   return [expression]

上面這是示例代碼,大家可以在自己的開發工具上試試,很簡單的。
說完函數定義我們再來看下
2、對象創建
在 python 中,類型屬於對象,變量是沒有類型的:

a=[1,2,3] #賦值後這個對象就已經創建好了
a="Runoob"

以上代碼中,[1,2,3] 是 List 類型,“Runoob” 是 String 類型,而變量 a 是沒有類型,她僅僅是一個對象的引用(一個指針),可以是 List 類型對象,也可以指向 String 類型對象。
對象其實還分爲兩種,我們接着往下看:
3、可更改對象和不可更改對象
在 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沒有動,只是其內部的一部分值被修改了。
4、可更改對象和不可更改對象的參數傳遞
python函數的參數傳遞:
(1)不可變類型:類似 c++的值傳遞,如 整數、字符串、元組。如fun(a),傳遞的只是a的值,沒有影響a對象本身。比如在fun(a)內部修改 a 的值,只是修改另一個複製的對象,不會影響 a本身。

def ChangeInt(a):
a = 10
b = 2
ChangeInt(b)
print(b)   #結果是 2

int2對象指向變量b,而調用changeInt函數時,變量a就是變量b,此時的變量a和變量b都對應int 2對象,但是在之後a被重新賦值爲10,此時變量a指向對象int 10,產生了一個新的int型對象,而變量b所指向的對象不變。
(2)可變類型:類似 c++的引用傳遞,如 列表,字典。如 fun(la),則是將 la真正的傳過去,修改後fun外部的la也會受影響
python 中一切都是對象,嚴格意義我們不能說值傳遞還是引用傳遞,我們應該說傳不可變對象和傳可變對象。

def changeme( mylist): 
	mylist.append([1,2,3,4]);  #"修改傳入的列表"
    print("函數內取值: ", mylist)
    return
    # 調用changeme函數
mylist = [10,20,30];
changeme(mylist);
print("函數外取值: ", mylist)

因爲上面的代碼傳遞的是可變對象,因此在函數內取值和函數外取值都是同樣的結果。
5、調用函數時的參數使用
(1)必備參數
必須與函數聲明時一致的順序來傳遞參數。
(2)關鍵字參數
傳參數時可與函數聲明的順序不一樣,因爲Python解釋器可以用參數名來匹配參數值。
(3)缺省參數
傳入參數時未給參數賦值,則保持默認值。
#可寫函數說明

def printinfo( name, age=35):
print("Name: ", name);  #"打印任何傳入的字符串"
    print("Age ", age);
    return;
#調用printinfo函數
printinfo(age=50,name="miki");
printinfo(name="miki");

這裏第二句的age沒有輸入值,則輸出默認值35。
(4)不定長參數(也就是包含非必備參數的參數定義)
當不確定會傳入參數的個數時,可以對可以不輸入的參數名前面加“*”號,按順序輸入時進行對應即可。

def printinfo( arg1,*vartuple):
print("輸出: ",arg1)  #"打印任何傳入的參數"
    for var in vartuple:
      print var
    return; 
    # 調用printinfo函數
printinfo(10);
printinfo(70,60,50);

好了,到這裏函數的基本知識我們就介紹完了,接下來我們會介紹具體的函數類型以及各個數據類型所對應的函數方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章