”面向過(guò)程“核心是“過(guò)程”二字,“過(guò)程”指的是解決問(wèn)題的步驟,即先干什么再干什么......,基于面向過(guò)程開(kāi)發(fā)程序就好比在設(shè)計(jì)一條流水線,是一種機(jī)械式的思維方式,這正好契合計(jì)算機(jī)的運(yùn)行原理:任何程序的執(zhí)行最終都需要轉(zhuǎn)換成cpu的指令流水按過(guò)程調(diào)度執(zhí)行,即無(wú)論采用什么語(yǔ)言、無(wú)論依據(jù)何種編程范式設(shè)計(jì)出的程序,最終的執(zhí)行都是過(guò)程式的。
創(chuàng)新互聯(lián)公司2013年至今,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元宿遷做網(wǎng)站,已為上家服務(wù),為宿遷各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18982081108
1、優(yōu)點(diǎn)
將復(fù)雜的問(wèn)題流程化,進(jìn)而簡(jiǎn)單化
2、缺點(diǎn)
程序的可擴(kuò)展性極差,
3、應(yīng)用場(chǎng)景
面向過(guò)程的程序設(shè)計(jì)一般用于那些功能一旦實(shí)現(xiàn)之后就很少需要改變的場(chǎng)景, 如果你只是寫一些簡(jiǎn)單的腳本,去做一些一次性任務(wù),用面向過(guò)程去實(shí)現(xiàn)是極好的,但如果你要處理的任務(wù)是復(fù)雜的,且需要不斷迭代和維護(hù), 那還是用面向?qū)ο笞顬榉奖恪?
函數(shù)式編程并非用函數(shù)編程這么簡(jiǎn)單,而是將計(jì)算機(jī)的運(yùn)算視為數(shù)學(xué)意義上的運(yùn)算,比起面向過(guò)程,函數(shù)式更加注重的是執(zhí)行結(jié)果而非執(zhí)行的過(guò)程,代表語(yǔ)言有:Haskell、Erlang。而python并不是一門函數(shù)式編程語(yǔ)言,但是仍為我們提供了很多函數(shù)式編程好的特性,如lambda,map,reduce,filter
對(duì)比使用def關(guān)鍵字創(chuàng)建的是有名字的函數(shù),使用lambda關(guān)鍵字創(chuàng)建則是沒(méi)有名字的函數(shù),即匿名函數(shù),語(yǔ)法如下
lambda 參數(shù)1,參數(shù)2,...: expression
案例:
# 1、定義
lambda x,y,z:x+y+z
#等同于
def func(x,y,z):
return x+y+z
# 2、調(diào)用
# 方式一:
res=(lambda x,y,z:x+y+z)(1,2,3)
# 方式二:
func=lambda x,y,z:x+y+z # “匿名”的本質(zhì)就是要沒(méi)有名字,所以此處為匿名函數(shù)指定名字是沒(méi)有意義的
res=func(1,2,3)
print(res)
匿名函數(shù)與有名函數(shù)有相同的作用域,但是匿名意味著引用計(jì)數(shù)為0,使用一次就釋放,所以匿名函數(shù)用于臨時(shí)使用一次的場(chǎng)景,匿名函數(shù)通常與其他函數(shù)配合使用
案例
salaries={
'siry':3000,
'tom':7000,
'lili':,
'jack':2000
}
要想取得薪水的最大值和最小值,我們可以使用內(nèi)置函數(shù)max和min(為了方便開(kāi)發(fā),python解釋器已經(jīng)為我們定義好了一系列常用的功能,稱之為內(nèi)置的函數(shù),我們只需要拿來(lái)使用即可)
print(max(salaries))
print(min(salaries))
#默認(rèn)根據(jù)字符比較大小
"""結(jié)果如下"""
tom
jack
內(nèi)置max和min都支持迭代器協(xié)議,工作原理都是迭代字典,取得是字典的鍵,因而比較的是鍵的最大和最小值,而我們想要的是比較值的最大值與最小值,于是做出如下改動(dòng)
max1=max(salaries,key=lambda k:salaries[k])
print(max1)
min1=min(salaries,key=lambda k:salaries[k])
print(min1)
"""結(jié)果如下"""
lili
jack
直接對(duì)字典進(jìn)行排序,默認(rèn)也是按照字典的鍵去排序的
print(sorted(salaries))
"""結(jié)果如下"""
['jack', 'lili', 'siry', 'tom']
根據(jù)值的最大值與最小值排序
res=sorted(salaries,key=lambda k:salaries[k])
print(res)
"""結(jié)果如下"""
['jack', 'siry', 'tom', 'lili']
特點(diǎn)
缺點(diǎn)
#匿名函數(shù)
m=lambda x,y:x+y
#通過(guò)變量去調(diào)用匿名函數(shù)
print(m(23,19))
M=lambda a,b,c:a*b*c
print(M(1,2,3))
age =15
print('可以繼續(xù)參軍,'if age>18 else'繼續(xù)上學(xué)')
C=lambda x,y:x if x>y else y
print(C(1,5))
re=(lambda x,y:x if x<y else y)(16,12)
print(re)
Rs=lambda x:(x**2)+890
print(Rs(10))
l = ['zhoa', 'lisi', 'wangwu ']
res = map(lambda name: name + '_dsb', l)
print(res) # 生成器
res1 = filter(lambda name: name.endswith('u'), l)
print(res1)
from functools import reduce
res3=reduce(lambda x, y: x + y, [1, 2, 3],10)
print(res3)
"""結(jié)果如下"""
<map object at 0x0000014D2CDF7E80>
<filter object at 0x0000014D2CDF7D60>
16
新聞名稱:python-面向過(guò)程與函數(shù)式
本文鏈接:http://m.kartarina.com/article24/dsogsce.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、品牌網(wǎng)站設(shè)計(jì)、移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈、定制網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)