2013-07-10 74 views
5

下面的代碼:訂購輸出

def a 
    print "Function 'a' called\n" 
    99 
end 

print "a=", a, "\n" 

生產:

Function 'a' called 
a=99 

爲什麼function 'a' called顯示第一?我預計首先會顯示a=

回答

8

首先,您定義方法a;還沒有打印。

然後,當你到了最後一行時,參數print首先是語句打印任何東西之前評估。第一個和最後一個參數是字符串文字。中間的說法是對的方法a,這回99

然後打印前一個"Function 'a' called\n"調用,print語句開始這一切終於準備,現在每個參數進行了評估打印。

11

在將參數傳遞給方法之前,將對它們進行評估(以便您有要傳遞的值)。對功能a的調用的評估具有印刷"function 'a' called的副作用。這就是它首先被打印的原因。

3

首先,該方法a被完全執行,包括print "Function 'a' called\n"。只有在方法返回99後,才能執行行print "a=", a, "\n"

認爲它是這樣的:需要,纔可以在最後一行打印被稱爲的a返回值。

1

聲明

print "a=", a, "\n" 

被處理爲

print("a=", a(), "\n") 

因此它被稱爲前的各項參數調用print必須進行評估。這意味着首先撥打a

如果聲明是首先輸出a=,則在致電a()之前,它必須包含三個獨立調用print