函式式程式設計
函式定義和使用
函式:程式中可以復用的**塊
1.定義和使用
def 函式名名(引數1,引數2,...):
函式體return 返回結果!
變數名 = 函式名(值1,值2,....) #值和引數個數一一對應!
·函式呼叫時值和引數個數必須一一對應
·函式返回結果關鍵字:return
·呼叫帶返回結果的函式時,會返回乙個結果
·一般都會定義乙個變數接受返回結果
·也可以直接當成值被使用
2.案例演示
實現兩個數的,四則運算
·函式1:實現求任意兩個數的和
·函式2:實現求任意兩個數的和,在結果基礎上再加10
·函式3:實現求任意兩個數的四則運算,並判斷結果是否為偶數
函式1def demo1(a,b):
print(f'結果為')
函式2def demo2(a,b):
return a+b
jieguo = demo2(3,4)
print(jieguo+10)
或:result = demo2(3,4)+ 10 #
函式3:
def demo3(a,b,fuhao):
result = 0
if fuhao"+":
result = a+b
elif fuhao'-':
result=a-b
elif fuhao''
result = ab
elif fuhao'/':
result = a/b
return result
demo3(10,2,'/') # 執行了一遍! 結果未儲存!
jieguo = demo3(10,2,'/')
if jieguo % 2==0:
print('偶數')
else:
print('奇數')
函式特性
1.引數預設值
def demo3(a,b,fuhao="+"):
pass
demo3(3,4) # 可只傳遞兩個變數! 符號有預設值!
2.可變引數args接收任意的元組
def demo3(args): # 接受元祖
pass
a = (1,2,3) #元祖
demo3(a)
3.可變引數kwargs接收任意的字典
def demo3(kwargs): # 接受字典!
pass
a = #字典
demo3(a)
4.解包裹
拆分元祖
def demo(a,b,c)
pass
args= (1,2,3)
demo(*args) ==>自動把元祖拆分為 a,b,c 三個變數
拆分字典
def demo(a,b,c)
pass
kwargs=
demo(**args) >自動把元祖拆分為 a,b,c 三個變數, 結果: aaa,bbb,ccc
4.遞迴
函式內部,自己呼叫自己
注意:一定要有出口
·求累加,階乘
def leijia(n):
if n <=1:
return 1 #函式遇到reutrn 表示結束了!
return n + leijia(n-1)
呼叫print(leijia(100)) #結果 5050
·面試題:使用遞迴讀取某個目錄下的所有檔案
判斷條件 是否為目錄,不是目錄就退出
5.函式引數為另乙個函式(相當於使用函式的結果)
def fn1(a,b):
return a+b
def fn2(fn1):
print(fn1())
fn2(fn1(3,4))=> #相當於 fn2("7")
6.lambda函式
匿名函式,就是沒有名字的函式
·lambda引數1,引數2...:表示式
定義求兩個數的和
def fn1(a,b)
reutrn a+b
函式式程式語言python 函式式程式設計
函式是python內建支援的一種封裝,我們通過把大段 拆成函式,通過一層一層的函式呼叫,就可以把複雜任務分解成簡單的任務,這種分解可以稱之為面向過程的程式設計。函式就是面向過程的程式設計的基本單元。而函式式程式設計 請注意多了乙個 式 字 functional programming,雖然也可以歸結...
函式式程式設計
最近在看一些關於js方面的東東,除了些ajax的基本應用,還了解了些函式式程式設計 fp 的東東。雖然以前也玩過幾天lisp的,不過因為當時完全對fp的東西沒有概念,壓根就不知道原來這是list那一族最大的特性之一 另外我知道的還有個是gc,orz.光注意那些詭異的 表 去了。總結一下,傳統上認為f...
函式式程式設計
維基百科 函式式程式設計 英語 functional programming 或者函式程式設計,又稱泛函程式設計,是一種程式設計范型,它將計算機運算視為數學上的函式計算,並且避免使用程式狀態以及易變物件。函式程式語言最重要的基礎是 演算 lambda calculus 而且 演算的函式可以接受函式當...