簡體   English   中英

Python Bokeh的功能范圍

[英]Python Bokeh scope of functions

我對Bokeh不了解(我認為Matplotlib具有類似的行為):

看來,如果函數在執行操作figure ,不要緊是否該figure已作為一個參數被傳遞或返回。 本地/全局范圍障礙似乎不適用。 例如:

p = figure(plot_width=400, height=400)
d= pd.DataFrame(np.random.rand(10,2), columns = ['x', 'y']) 

def add_circles():
    p.circle(x=d['x'], y=d['y'], color='black', size=5)

add_circles()
show(p)

這段代碼將顯示在功能add_cirles創建並沒有返回的圓,這些圓將在圖表上顯示。 另外,圖形p和DataFrame d都沒有傳遞給函數。

為什么會這樣呢? 在這種情況下,最佳做法是什么? 通過/返回參數和return語句中的figure ,還是讓它如上所示?

這並非特定於bokeh或matplotlib。 您不需要返回/傳遞任何內容,因為您正在函數中使用函數。 如果p = Figure(),則一旦執行p.circle(),它就會將glyphrenderer添加到該圖形中。

它的行為就像

a=3
b=[]

def test():
    b.append(a)

test()
b

它與功能append一起使用,但不適用於+ =

a=3
b=[]

def test():
    b+=[a]

test()
b

您不需要返回任何內容,因為您的函數add_circles()只是在做.circle()在做的事情。 而且您不需要傳遞p,因為函數已經知道在外部聲明的變量:

a = 5

def test():
    c = a + 2
    print c

test()

這只是不好的做法,因為您編寫的函數在使用特定變量名時應該是通用/可重用的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM