python中延遲函數(shù) python如何設(shè)置延遲

python惰性求值有哪些函數(shù)

Copyright ? 1999-2020, CSDN.NET, All Rights Reserved

創(chuàng)新互聯(lián)建站主營深澤網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,app軟件開發(fā)公司,深澤h5微信小程序開發(fā)搭建,深澤網(wǎng)站營銷推廣歡迎深澤等地區(qū)企業(yè)咨詢

惰性計(jì)算的序列

打開APP

Python 的惰性求值與惰性序列 翻譯

2018-07-23 14:57:48

2點(diǎn)贊

東師小鎮(zhèn)

碼齡5年

關(guān)注

惰性求值

在編程語言理論中,惰性求值(英語:Lazy Evaluation),又譯為惰性計(jì)算、懶惰求值,也稱為傳需求調(diào)用(call-by-need),是一個(gè)計(jì)算機(jī)編程中的一個(gè)概念,它的目的是要最小化計(jì)算機(jī)要做的工作。它有兩個(gè)相關(guān)而又有區(qū)別的含意,可以表示為“延遲求值”和“最小化求值”。

避免不必要的計(jì)算,帶來性能的提升(最小化求值)。

對于Python中的條件表達(dá)式 if x and y,在x為false的情況下y表達(dá)式的值將不再計(jì)算。而對于if x or y,當(dāng)x的值為true的時(shí)候?qū)⒅苯臃祷?,不再?jì)算y的值。因此編程中可以利用該特性,在 and邏輯中,將小概率發(fā)生的條件放在前面或者在or邏輯中,將大概率發(fā)生的時(shí)間放在前面,有助于性能的提升。

2. 節(jié)省空間,使得無線循環(huán)的數(shù)據(jù)結(jié)構(gòu)成為可能(延遲求值)。

延遲求值特別用于函數(shù)式編程語言中。在使用延遲求值的時(shí)候,表達(dá)式不在它被綁定到變量之后就立即求值,而是在該值被取用的時(shí)候求值。延遲求值的一個(gè)好處是能夠建立可計(jì)算的無限列表而沒有妨礙計(jì)算的無限循環(huán)或大小問題。例如,可以建立生成無限斐波那契數(shù)列表的函數(shù)(經(jīng)常叫做“流”)。第n個(gè)斐波那契數(shù)的計(jì)算僅是從這個(gè)無限列表上提取出這個(gè)元素,它只要求計(jì)算這個(gè)列表的前n個(gè)成員。

惰性序列

Python的惰性序列多數(shù)指 iterator,其特點(diǎn)正如同上文所述,具有惰性計(jì)算特點(diǎn)的序列稱為惰性序列。

Python的iterator是一個(gè)惰性序列,意思是表達(dá)式和變量綁定后不會(huì)立即進(jìn)行求值,而是當(dāng)你用到其中某些元素的時(shí)候才去求某元素對的值。 惰性是指,你不主動(dòng)去遍歷它,就不會(huì)計(jì)算其中元素的值。

一句話理解:

迭代器的一個(gè)優(yōu)點(diǎn)就是它不要求你事先準(zhǔn)備好整個(gè)迭代過程中所有的元素。

迭代器僅僅在迭代至某個(gè)元素時(shí)才計(jì)算該元素,而在這之前或之后,元素可以不存在或者被銷毀。

這個(gè)特點(diǎn)使得它特別適合用于遍歷一些巨大的或是無限的集合,比如幾個(gè)G的文件,或是斐波那契數(shù)列等等。

python中from time import sleep是什么意思

from time import sleep就是從time模塊中引入sleep函數(shù),使用sleep函數(shù)可以讓程序休眠(推遲調(diào)用線程的運(yùn)行)。

具體方法:

1,sleep(時(shí)間)。

2,#如果之前引入了time模塊,使用time.sleep(時(shí)間)語句即可,不需要import這個(gè)語句。

3,#具體用法見下其中“時(shí)間”以秒為單位,可以是小數(shù),0.1秒則代表休眠100毫秒。

擴(kuò)展資料:

使用Python編程時(shí)的注意事項(xiàng):

1,初始變化量:

在Python里,一個(gè)表達(dá)式中的名字在它被賦值之前是沒法使用的。這是有意而為的:這樣能避免一些輸入失誤,同時(shí)也能避免默認(rèn)究竟應(yīng)該是什么類型的問題(0,None,””,[],?)。記住把計(jì)數(shù)器初始化為0,列表初始化為[],以此類推。

2,從第一列開始:

確保把頂層的,未嵌套的代碼放在最左邊第一列開始。這包括在模塊文件中未嵌套的代碼,以及在交互提示符中未嵌套的代碼。Python使用縮進(jìn)的辦法來區(qū)分嵌套的代碼段,因此在代碼左邊的空格意味著嵌套的代碼塊。除了縮進(jìn)以外,空格通常是被忽略掉的。

3,縮進(jìn)一致:

在同一個(gè)代碼塊中避免講tab和空格混用來縮進(jìn),除非知道運(yùn)行自己的代碼的系統(tǒng)是怎么處理tab的。否則的話,在自己的編輯器里看起來是tab的縮進(jìn)也許Python看起來就會(huì)被視作是一些空格。保險(xiǎn)起見,在每個(gè)代碼塊中全都是用tab或者全都是用空格來縮進(jìn);用多少由自己決定。

4,在函數(shù)調(diào)用時(shí)使用括號:

無論一個(gè)函數(shù)是否需要參數(shù),必須要加一對括號來調(diào)用它。即,使用function(),而不是function。Python的函數(shù)簡單來說是具有特殊功能的對象,而調(diào)用是用括號來觸發(fā)的。像所有的對象一樣,它們也可以被賦值給變量,并且間接的使用它們:x=function:x()。

python如何微秒級延時(shí)?

Python中的sleep函數(shù)可以傳小數(shù)進(jìn)去,就可以進(jìn)行毫秒級的延時(shí)了,代碼如下:

#?例1:循環(huán)輸出休眠1秒

import?time

i?=?1

while?i?lt;=?3:

print?i?#?輸出i

i?+=?1

time.sleep(1)?#?休眠1秒

#?例2:循環(huán)輸出休眠100毫秒

import?time

i?=?1

while?i?lt;=?3:

print?i?#?輸出i

i?+=?1

time.sleep(0.1)?#?休眠0.1秒

python怎么用延時(shí)函數(shù),python小白求求幫忙(哭)

用定時(shí)器做,1秒鐘喚醒一次響應(yīng)函數(shù),不要用延時(shí)函數(shù) sleep

# 定義時(shí)間顯示

self.timer = QtCore.QTimer(self)

self.timer.timeout.connect(self.act_displayTM) #綁定響應(yīng)函數(shù)

self.timer.setInterval(1000) #設(shè)置時(shí)間間隔

self.timer.start()

# 定時(shí)響應(yīng)事件對應(yīng)邏輯

def act_displayTM(self):

s_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())

self.ui.label_Date.setText(s_time)

return

網(wǎng)頁名稱:python中延遲函數(shù) python如何設(shè)置延遲
分享鏈接:http://muchs.cn/article30/hhecpo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)、服務(wù)器托管、用戶體驗(yàn)電子商務(wù)、網(wǎng)站設(shè)計(jì)公司、域名注冊

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)