對某一類操作進行封裝既可以獲得函數,在java中成爲方法。函數是抽象的基本語法。
1. 系統函數
python提供了許多已經定義好的函數,只需要調用方便人們使用。如獲取絕對值(abs)、長度(len)、最大(max)/最小(min)值等。
>>> abs(-11.2)
11.2
>>> abs(1)
1
>>> max(3,1,2,4,7,3,5)
7
>>> min(3,1,2,4,7,3,5)
1
>>> len('abcd')
4
>>> divmod(7,3)
(2, 1)
>>> round(11)
11
>>> int('a')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'a'
>>> int('1')
1
2. 自定義函數
函數定義
Python中函數使用“def”關鍵字定義,然後爲函數名、括號、括號裏的參數、“:”,換行後縮進中定義函數的具體代碼塊,如果有返回值使用“return”關鍵字(無返回值時會返回None)。
1)、參數可以爲無參數、一個或者多個參數。
如下,定義一個無參數的printHello函數、和一個做加法的add函數。>>> def printHello(): ... print('hello python') ... >>> printHello() hello python >>> >>> def add(a,b): ... return a+b ... >>> add(1,3) 4
2)、參數默認值。參數可以設置默認值,設置後該參數可以不傳,在函數中使用默認值,也可以使用參數名=值傳遞默認值(調用函數有多個默認值不全部傳時)。
>>> def printMy(name,age=12): ... print('Hello, My name is ',name,', age is ',age) ... >>> printMy('zhangsan') Hello, My name is zhangsan , age is 12 >>> printMy('zhangsan',20) Hello, My name is zhangsan , age is 20 >>> printMy('zhangsan',age=13) Hello, My name is zhangsan , age is 13
3)、可變參數。可變長度參數可以傳入一個list或tuple,也可以使用 “*參數名”傳入參數。循環參數列表的方法相同。如下:
>>> def testList(list): ... sum=0 ... for num in list: ... sum = sum+num ... return sum ... >>> list=[1,2,3,4] >>> testList(list) 10 >>> list=[1,2,3,4,5,6] >>> testList(list) 21 >>> >>> def test(*nums): ... sum=0 ... for num in nums: ... sum=sum+num ... return sum ... >>> test(1,2) 3 >>> test(1,2,3,4,5) 15
4)、關鍵字參數使用 “**參數名”傳入參數。傳入參數在函數中自動轉換爲dict。
>>> def test3(name,**ss): ... print('name:',name) ... print('ss:',ss) ... >>> test3('zhangsan') name: zhangsan ss: {} >>> test3('zhangsan',s1='zhangsan') name: zhangsan ss: {'s1': 'zhangsan'} >>> test3('zhangsan',s1='zhangsan',s2='lisi') name: zhangsan ss: {'s1': 'zhangsan', 's2': 'lisi'} >>>
函數使用
1)、使用函數名、參數值調用。
2)、將變量指向函數,並且使用變量執行。ss = abs(-11)
ss
11
ss = abs
ss(-10)
11
3)、匿名函數lambda x:x*x,匿名函數參數爲x,函數內容爲x*x。
4)、裝飾器 @函數名(參數)