第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python中幾個有趣的語法糖?

Python中幾個有趣的語法糖?

收到一只叮咚 2019-05-18 15:11:35
Python中幾個有趣的語法糖
查看完整描述

4 回答

?
Cats萌萌

TA貢獻1805條經(jīng)驗 獲得超9個贊

當(dāng)然是函數(shù)式那一套黑魔法啦,且聽我細(xì)細(xì)道來。 lambda表達式也就是匿名函數(shù)。用法:lambda 參數(shù)列表 : 返回值例: +1函數(shù) f=lambda x:x+1 max函數(shù)(條件語句的寫法如下) f_max=lambda x,y:x if x>y else y 上述定義的函數(shù)與用def定義的函數(shù)沒有區(qū)別,而且左邊的f=在某些情況下并不是必要的。 filter,map,reduce filter函數(shù)接受兩個參數(shù),第一個是過濾函數(shù),第二個是可遍歷的對象,用于選擇出所有滿足過濾條件的元素,不同版本的filter的返回值稍有區(qū)別,我用的是python3.5,filter返回的是經(jīng)過過濾的可遍歷對象。例:去除小寫字母 s=filter(lambda x:not str(x).islower(),"asdasfAsfBsdfC") for ch in s: print(ch) map函數(shù)接受的參數(shù)類型與filter類似,它用于把函數(shù)作用于可遍歷對象的每一個元素。類似于數(shù)學(xué)中映射的概念。例:求y=2x+1(偷偷用了一下range函數(shù)生成定義域) s=map(lambda x:2*x+1,range(6)) for x in s: print(x) reduce函數(shù)對每個元素作累計操作,它接受的第一個參數(shù)必須是有兩個參數(shù)的函數(shù)。例:求和 from functools import reduce s=reduce(lambda x,y:x+y,range(1,6)) print(s) 求乘積(第三個可選參數(shù)表示累計變量的初值) from functools import reduce s=reduce(lambda x,y:x*y,range(1,6),1) print(s) 柯里化(curry)函數(shù)如果一個函數(shù)需要2個參數(shù),而你只傳入一個參數(shù),那么你就可以得到一個柯里化的函數(shù),這是函數(shù)式編程語言的重要特性之一,遺憾的是,python并不能在語法層面支持柯里化調(diào)用,但它在庫中提供了接口。例: *3函數(shù) f_mul=lambda x,y:x*y from functools import partial mul3=partial(f_mul,3) print(mul3(1)) print(mul3(6)) 打包與解包有點類似于函數(shù)式中的模式匹配,略牽強。 t=(1,2,3) x,y,z=t 列表生成式這個也有點牽強,不知道嚴(yán)格意義上講屬不屬于函數(shù)式風(fēng)格。例:生成奇數(shù)序列 l=[2*x+1 for x in range(10)] for i in l: print(i) 最后來一個彩蛋(以前某答主提到的用調(diào)分函數(shù)來美顏的算法,忘了出處了,侵刪) from PIL import Image from math import sqrt im = Image.open("a.jpg") ret= im.convert(mode="RGB") ret = ret.point(lambda x:sqrt(x)*sqrt(255)) ret.save("b.jpg")

查看完整回答
反對 回復(fù) 2019-05-27
?
Qyouu

TA貢獻1786條經(jīng)驗 獲得超11個贊

當(dāng)然是函數(shù)式那一套黑魔法啦,且聽我細(xì)細(xì)道來。
lambda表達式
也就是匿名函數(shù)。
用法:lambda 參數(shù)列表 : 返回值
例:
+1函數(shù)
f=lambda x:x+1

max函數(shù)(條件語句的寫法如下)
f_max=lambda x,y:x if x>y else y

上述定義的函數(shù)與用def定義的函數(shù)沒有區(qū)別,而且左邊的f=在某些情況下并不是必要的。
filter,map,reduce
filter函數(shù)接受兩個參數(shù),第一個是過濾函數(shù),第二個是可遍歷的對象,用于選擇出所有滿足過濾條件的元素,不同版本的filter的返回值稍有區(qū)別,我用的是python3.5,filter返回的是經(jīng)過過濾的可遍歷對象。
例:
去除小寫字母
s=filter(lambda x:not str(x).islower(),"asdasfAsfBsdfC")
for ch in s:
print(ch)

map函數(shù)接受的參數(shù)類型與filter類似,它用于把函數(shù)作用于可遍歷對象的每一個元素。類似于數(shù)學(xué)中映射的概念。
例:
求y=2x+1(偷偷用了一下range函數(shù)生成定義域)
s=map(lambda x:2*x+1,range(6))
for x in s:
print(x)

reduce函數(shù)對每個元素作累計操作,它接受的第一個參數(shù)必須是有兩個參數(shù)的函數(shù)。
例:
求和
from functools import reduce
s=reduce(lambda x,y:x+y,range(1,6))
print(s)

求乘積(第三個可選參數(shù)表示累計變量的初值)
from functools import reduce
s=reduce(lambda x,y:x*y,range(1,6),1)
print(s)

柯里化(curry)函數(shù)
如果一個函數(shù)需要2個參數(shù),而你只傳入一個參數(shù),那么你就可以得到一個柯里化的函數(shù),這是函數(shù)式編程語言的重要特性之一,遺憾的是,python并不能在語法層面支持柯里化調(diào)用,但它在庫中提供了接口。
例:
*3函數(shù)
f_mul=lambda x,y:x*y
from functools import partial
mul3=partial(f_mul,3)
print(mul3(1))
print(mul3(6))

打包與解包
有點類似于函數(shù)式中的模式匹配,略牽強。
t=(1,2,3)
x,y,z=t

列表生成式
這個也有點牽強,不知道嚴(yán)格意義上講屬不屬于函數(shù)式風(fēng)格。
例:生成奇數(shù)序列
l=[2*x+1 for x in range(10)]
for i in l:
print(i)

最后來一個彩蛋(以前某答主提到的用調(diào)分函數(shù)來美顏的算法,忘了出處了,侵刪)
from PIL import Image
from math import sqrt

im = Image.open("a.jpg")
ret= im.convert(mode="RGB")
ret = ret.point(lambda x:sqrt(x)*sqrt(255))
ret.save("b.jpg")

查看完整回答
反對 回復(fù) 2019-05-27
?
holdtom

TA貢獻1805條經(jīng)驗 獲得超10個贊

with的用法:

12345678class A:      def __enter__(self):          print 'in enter'      def __exit__(self, e_t, e_v, t_b):          print 'in exit'   with A() as a:      print 'in with'

運行輸出:

in enter  

in with  

in exit


也就是說在print 'in with'前自動執(zhí)行了A()構(gòu)造的實例的__enter__方法

with塊中的程序執(zhí)行完后,自動執(zhí)行了A()構(gòu)造的實例的__exit__方法

這里as a可以省略,因為with塊中沒有用到a


with app.test_request_context():
   print(url_for('index'))

直接翻譯的話就是

context = app.test_request_context()

context.__enter__()

print(url_for('index'))

context.__exit__(參數(shù)1,參數(shù)2,參數(shù)3)

這里可以理解為 為print(url_for('index'))創(chuàng)造一個環(huán)境,執(zhí)行完后清理環(huán)境


查看完整回答
反對 回復(fù) 2019-05-27
  • 4 回答
  • 0 關(guān)注
  • 1220 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號