函式: 程式中可以復用的**塊!1.定義和使用
def 函式名名(引數1
,引數2,.
..):
函式體return 返回結果!
變數名 = 函式名(值1
,值2,..
..)#值和引數個數一一對應!
實現兩個數的,四則運算
# 函式1
defdemo1
(a,b)
:print
(f'結果為'
)#函式2
defdemo2
(a,b)
:return a+b
jieguo = demo2(3,
4)print
(jieguo+10)
#或:result = demo2(3,
4)+10
## 函式3:
defdemo3
(a,b,fuhao)
: result =
0if fuhao==
"+":
result = a+b
elif fuhao==
'-':
result=a-b
elif fuhao==
'*' result = a*b
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.解包裹
# 拆分元祖
defdemo
(a,b,c)
pass
args=(1
,2,3
)demo(
*args)
==>自動把元祖拆分為 a,b,c 三個變數
# 拆分字典
defdemo
(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
deffn2
(fn1)
:print
(fn1())
fn2(fn1(3,
4))==
=>
#相當於 fn2("7")
6.lambda函式
匿名函式!就是沒有名字的函式!
# 定義求兩個數的和
deffn1
(a,b)
reutrn a+b
# 簡寫
fn2 =
lambda a, b: a + b # 方法體只能有1行表示式!
print
(fn2(3,4))
7.map函式 列表中的每個值都執行某個函式!
fn1=
lambda x: x*
2jieguo =
map(fn1,[1
,2,3
])# 會自動把1,2,3三個值都乘以2
8.filter函式 列表中每個元素的值都執行某個函式,只保留為true的
fn1=
lambda x: x%
2jieguo =
filter
(fn1,[1
,2,3
,4,5
])# 會自動把1,2,3三個值都乘以2
print
(jieguo)
# 1,3,5 # 只保留
10.函式中變數作用域
內部函式自動執行外部函式!
特點: 裝飾器優先於函式先執行!
作用:經常用於給某個函式實現功能擴充套件! 實現:不該原來**,的情況下,新增額外功能!
裝飾器可以寫多個!
#擴充套件的驗證功能
defcheck_login
(func)
:print
('開始驗證是否登陸.........'
)def
inner
(name)
:print
('各種判斷,從sessin中獲取'
)if name==
'admin'
:print
('登陸成功,可以看購物車'
)else
:print
('請先登陸,跳轉到的呢牢固'
) func(name)
return inner
'''擴充套件: 不修改原**!擴充套件驗證name是否登陸!'''
@check_login
defgouwueche
(name)
:print
(f'檢視購物資訊'
)
函式式程式語言python 函式式程式設計
函式是python內建支援的一種封裝,我們通過把大段 拆成函式,通過一層一層的函式呼叫,就可以把複雜任務分解成簡單的任務,這種分解可以稱之為面向過程的程式設計。函式就是面向過程的程式設計的基本單元。而函式式程式設計 請注意多了乙個 式 字 functional programming,雖然也可以歸結...
函式式程式設計 基礎操作符
終端操作符 foreach slf4j public class basicoperatortests private listuserlist beforeeach void setup test public void foreachstream findfirst 第乙個物件 test pub...
函式式程式設計
最近在看一些關於js方面的東東,除了些ajax的基本應用,還了解了些函式式程式設計 fp 的東東。雖然以前也玩過幾天lisp的,不過因為當時完全對fp的東西沒有概念,壓根就不知道原來這是list那一族最大的特性之一 另外我知道的還有個是gc,orz.光注意那些詭異的 表 去了。總結一下,傳統上認為f...