1. 程式人生 > >1.3.1 Python中的名詞和引數收集

1.3.1 Python中的名詞和引數收集

1,引數和變數在定義函式的時候(def來定義函式,稱為def語句),函式名後面的括號裡如果有變數,它們通常被稱為“形參”。呼叫函式的時候,給函式提供的值叫作“實參”,或者“引數”。>>> def test(x): #x是引數,準確說是形參 a=2 #a是變數 return a+x #x就是那個形參作為變數,其本質是要傳遞賦給這個函式的值>>> x=3 #x是變數,只不過在函式之外>>> test(x) #這裡的x是引數,但是它由前面的變數x傳遞物件352,全域性變數和區域性變數全域性變數和區域性變數必須要弄清楚,因為關係到函式內外有別的大事。>>> x = 2 #這個x就是全域性變數
>>> def funcx(): x = 9 #該處x就是區域性變數 print "x=",x>>> funcx()x= 9>>> x2從輸出看出,執行funcx(),輸出了funcx()裡面的變數x=9;然後執行程式碼中的最後一行,print"x=",x要特別關注的是,前一個x輸出的是函式內部的變數x;後一個x輸出的是函式外面的變數x。兩個變數彼此沒有互相影響,雖然都是x。從這裡看出,兩個x各自在各自的領域內起到作用。把那個只在函式體內(某個範圍內)起作用的變數稱之為區域性變數。有區域性就應該有對應的全部,這裡叫全域性,不是全部,所以又來了一個名詞:全域性變數
要注意,全域性變數一定要慎重使用,因為往往容易帶來變數的混亂。內外有別,在程式中一定要注意。3,引數收集Python用這樣的方式解決引數個數的不確定性:>>> def func(x,*arg): print x result = x print arg for i in arg: result += i return result>>> func(1,2,3,4,5,6,7,8,9)1(2, 3, 4, 5, 6, 7, 8, 9)45從上面例子可以看出,如果輸入的引數個數不確定,其他引數全部通過*arg,以元組的形式由arg收集起來。上面可以總結出:值1傳給了引數x。值2、3、4、5、6、7、8、9被塞入一個tuple裡面,傳給了arg。為了能夠更明顯地看出arg(名稱可以不一樣,但是符號*必須要有),可以用下面的一個簡單函式來演示:>>> def aaa(*ale
): #ale自己設定 print ale>>> aaa(1,2,3,4)(1, 2, 3, 4)>>> aaa("hello","zhangsan","python")('hello', 'zhangsan', 'python')>>> aaa("hello")('hello',)不管是什麼,都一股腦地塞進了tuple中。即使只有一個值,也是用tuple收集它。特別注意,在tuple中,如果只有一個元素,後面要有一個逗號。還有一種鍵值對的傳參方式:>>> def cc(**kar): #kar自己設定 print kar>>> cc(a=1,b=2,c=3){'a': 1, 'c': 3, 'b': 2}如果用**kargs的形式收集值,會得到字典型別的資料,但是,需要在傳值的時候說明“鍵”和“值”,因為在字典中是以“鍵值”對形式出現的。