1.OOP 面向對象編程,萬物皆對象,以class爲主,抽象化編程
2.POP 面向過程變成,萬事皆過程,def定義過程app
3.函數式編程,將某種功能封裝起來,用的時候直接調用函數名,def定義函數,也叫function/方法/過程/子程序函數式編程
函數定義:函數是指將一組語句的集合經過一個名字(函數名)封裝起來,要想執行這個函數,只須要調用其函數名便可 --Alex函數
特性:ui
語法定義:spa
def 函數名(): 函數執行語句
>>> def func_name1(): ... print("hello world") ... >>> func_name1() hello world
>>> def func_name1(name): ... print("my name is :",name) ... >>> func_name1('alex') my name is : alex >>> name = 'oldboy' >>> func_name1(name) my name is : oldboy >>>
>>> def func_name2(a,b): ... c=a*b ... print(c) ... >>> func_name2(2,3) 6 >>> x,y=5,5 >>> func_name2(x,y) 25 >>> func_name2(a=2,b=3) 6 >>> func_name2(a=2,5) File "<stdin>", line 1 SyntaxError: positional argument follows keyword argument >>> func_name2(2,b=5) 10
>>> func_name2(a=2,b=3,c=4)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: func_name2() got an unexpected keyword argument 'c'
>>> func_name2(a=2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: func_name2() missing 1 required positional argument: 'b'
>>> def with_return(a,b): ... return(a * b) ... return(a + b) ... >>> def without_return(a,b): ... print(a*b) ... print(a+b) ... >>> with_return(2,3) 6 >>> without_return(2,3) 6 5 >>> x=with_return(2,3) >>> print(x) 6 >>> y= without_return(2,3) 6 5 >>> print(y) None >>>
name,age = 'alex',18 print(name,age) def func_name0(): name = 'oldboy' age = 100 print(name,age) print(age+1) func_name0() print(name,age) alex 18 oldboy 100 101 alex 18
>>> def func_name5(name,age,*args): ... print(name,age,args) ... >>> func_name5('alex',18) alex 18 () >>> func_name5('alex',18,'oldboy') alex 18 ('oldboy',) >>> func_name5('alex',18,'oldboy',100) alex 18 ('oldboy', 100) >>> func_name5('alex',18,'oldboy',100,[1,2]) alex 18 ('oldboy', 100, [1, 2]) >>> func_name5('alex',18,'oldboy',100,[1,2],{'key1':'v1','k2':'v2'}) alex 18 ('oldboy', 100, [1, 2], {'key1': 'v1', 'k2': 'v2'})
>>> def func_name6(name,age,**kwargs): ... print(name,age,kwargs) ... >>> func_name6('alex',18) alex 18 {} >>> func_name6('alex',18,'oldboy') Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: func_name6() takes 2 positional arguments but 3 were given >>> func_name6('alex',18,oldboy=100) alex 18 {'oldboy': 100} >>> func_name6('alex',18,oldboy=100,salary=1,address='beijing') alex 18 {'address': 'beijing', 'salary': 1, 'oldboy': 100}
>>> def func_name7(name,age,*args,**kwargs): ... print(name,age,args,kwargs) ... >>> func_name7('yzw',28,18,'man',address='guanghzou',mail='xxx@com.cn') yzw 28 (18, 'man') {'address': 'guanghzou', 'mail': 'xxx@com.cn'} >>> func_name7('zvy',18) zvy 18 () {}
>>> list1=[0,1] >>> for i in range(2,10): ... list1.append(list1[i-1]+list1[i-2]) ... >>> print(list1) [0, 1, 1, 2, 3, 5, 8, 13, 21, 34] >>> def func_fib(x): ... if x == 0: ... return 0 ... elif x == 1 or x == 2: ... return 1 ... return func_fib(x-1)+func_fib(x-2) ... >>> func_fib(10) 55
>>> def func_high(a,b,f): ... return f(a),f(b) ... >>> num1=10 >>> str1='hello' >>> func_high(num1,str1,id) (10911456, 140199339463320)