新聞中心
Python 函數(shù) - 返回生成器
如果函數(shù)要返回一系列結(jié)果,我們常見的方法就是將結(jié)果放到一份列表中,然后返回給調(diào)用者。比如下面的函數(shù),返回字符串中每個單詞的首字母在真?zhèn)€字符串中的索引:
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:主機(jī)域名、雅安服務(wù)器托管、營銷軟件、網(wǎng)站建設(shè)、立山網(wǎng)站維護(hù)、網(wǎng)站推廣。
運(yùn)行結(jié)果:
上述的結(jié)果完全符合我們的預(yù)期,但 get_word_index 函數(shù)不夠簡潔。下面我們嘗試使用生成器來實(shí)現(xiàn):
運(yùn)行結(jié)果:
改寫之后,不僅運(yùn)行結(jié)果符合要求,由于不需要和 result 列表交互,函數(shù)也變得非常簡潔。下面我們就來詳細(xì)學(xué)習(xí)下生成器吧~
生成器是指使用 yield 表達(dá)式的函數(shù),調(diào)用生成器函數(shù)時,它并不會真的運(yùn)行,而是會返回迭代器。每次在這個迭代器上面調(diào)用內(nèi)置的 next 函數(shù)時,迭代器就會把生成器推進(jìn)到下一個 yield 表達(dá)式那里。生成器傳給 yield 的值均會由迭代器返回給調(diào)用者。
此外,如果輸入量非常大,使用列表作為返回值,那么程序就有可能耗盡內(nèi)存并崩潰。相反,使用生成器之后,則可以應(yīng)對任意長度的輸入數(shù)據(jù)。
例如,下面這個生成器函數(shù)可以獲取文件中單詞的索引,而不管文件內(nèi)容多大,該函數(shù)執(zhí)行時消耗的內(nèi)存,只由單行的文本長度決定:
其中 test_generator.txt 中的內(nèi)容如下:
運(yùn)行結(jié)果:
下面這句話特別重要: 生成器函數(shù)返回的迭代器,是由狀態(tài)的,及調(diào)用者不應(yīng)該反復(fù)使用它 。我們那 word_index_iter 來說明:
如果想重復(fù)調(diào)用,請將其封裝成容器:
運(yùn)行結(jié)果:
關(guān)于上述自定義容器的實(shí)現(xiàn)原理,我的另外一篇文章做了詳細(xì)介紹,鏈接奉上:
python+函數(shù)的返回值能不能直接輸出?
在Python中,一個函數(shù)的返回值可以直接輸出,示例代碼如下:
# 定義一個函數(shù)
def add(a, b):
return a + b
# 調(diào)用函數(shù)并輸出返回值
print(add(1, 2))
在這段代碼中,我們首先定義了一個名為add的函數(shù),該函數(shù)接收兩個參數(shù)a和b,并通過return語句返回它們的和。接著,我們調(diào)用該函數(shù)并傳入?yún)?shù)1和2,并使用print函數(shù)輸出函數(shù)的返回值,即3。
請注意,上面的代碼只是一個示例,實(shí)際應(yīng)用中可能需要根據(jù)實(shí)際情況進(jìn)行更多的處理,比如考慮函數(shù)沒有返回值等情況。
Python繪圖之(1)Turtle庫詳解
Turtle庫是Python語言中一個很流行的繪制圖像的函數(shù)庫,想象一個小烏龜,在一個橫軸為x、縱軸為y的坐標(biāo)系原點(diǎn),(0,0)位置開始,它根據(jù)一組函數(shù)指令的控制,在這個平面坐標(biāo)系中移動,從而在它爬行的路徑上繪制了圖形。
畫布就是turtle為我們展開用于繪圖區(qū)域,我們可以設(shè)置它的大小和初始位置。
設(shè)置畫布大小
turtle.screensize(canvwidth=None, canvheight=None, bg=None),參數(shù)分別為畫布的寬(單位像素), 高, 背景顏色。
如:turtle.screensize(800,600, "green")
turtle.screensize() #返回默認(rèn)大小(400, 300)
turtle.setup(width=0.5, height=0.75, startx=None, starty=None),參數(shù):width, height: 輸入寬和高為整數(shù)時, 表示像素; 為小數(shù)時, 表示占據(jù)電腦屏幕的比例,(startx, starty): 這一坐標(biāo)表示矩形窗口左上角頂點(diǎn)的位置, 如果為空,則窗口位于屏幕中心。
如:turtle.setup(width=0.6,height=0.6)
turtle.setup(width=800,height=800, startx=100, starty=100)
2.1 畫筆的狀態(tài)
在畫布上,默認(rèn)有一個坐標(biāo)原點(diǎn)為畫布中心的坐標(biāo)軸,坐標(biāo)原點(diǎn)上有一只面朝x軸正方向小烏龜。這里我們描述小烏龜時使用了兩個詞語:坐標(biāo)原點(diǎn)(位置),面朝x軸正方向(方向), turtle繪圖中,就是使用位置方向描述小烏龜(畫筆)的狀態(tài)。
2.2 畫筆的屬性
畫筆(畫筆的屬性,顏色、畫線的寬度等)
1) turtle.pensize():設(shè)置畫筆的寬度;
2) turtle.pencolor():沒有參數(shù)傳入,返回當(dāng)前畫筆顏色,傳入?yún)?shù)設(shè)置畫筆顏色,可以是字符串如"green", "red",也可以是RGB 3元組。
3) turtle.speed(speed):設(shè)置畫筆移動速度,畫筆繪制的速度范圍[0,10]整數(shù),數(shù)字越大越快。
2.3 繪圖命令
操縱海龜繪圖有著許多的命令,這些命令可以劃分為3種:一種為運(yùn)動命令,一種為畫筆控制命令,還有一種是全局控制命令。
(1) 畫筆運(yùn)動命令
(2) 畫筆控制命令
(3) 全局控制命令
(4) 其他命令
3. 命令詳解
3.1 turtle.circle(radius, extent=None, steps=None)
描述:以給定半徑畫圓
參數(shù):
radius(半徑):半徑為正(負(fù)),表示圓心在畫筆的左邊(右邊)畫圓;
extent(弧度) (optional);
steps (optional) (做半徑為radius的圓的內(nèi)切正多邊形,多邊形邊數(shù)為steps)。
舉例:
circle(50) # 整圓;
circle(50,steps=3) # 三角形;
circle(120, 180) # 半圓
實(shí)例:
1、太陽花
2、五角星
3、時鐘程序
標(biāo)題名稱:python繪圖函數(shù)返回 用python繪制函數(shù)圖像
URL網(wǎng)址:http://www.dlmjj.cn/article/hgsooh.html