2015-12-02 47 views
-4

我有以下代碼:如何從函數中返回一個值並將其打印在python的while循環中?

A = 3 

def Calculation(): 
    global A 
    B = 2 * A 
    return B 

print B 

我得到的錯誤:

NameError: name 'B' is not defined 

如何解決這個問題?什麼是正確的代碼?提前致謝!

+2

我不認爲downvoting新人的用戶是個不錯的主意。教他們如何工作更好。 – felipsmartins

+0

請閱讀:http://stackoverflow.com/help/mcve – felipsmartins

回答

1

你可以簡單地打印您的函數調用,像這樣::

A = 3 

def Calculation(a): 
    B = 2 * A 
    return B 

print Calculation(A) 

你得到那個B在沒有定義錯誤的原因是因爲你的變量B是一個局部變量的函數計算。其範圍僅在該方法中可見。

+0

解釋這裏的答案:這就是所謂的「範圍」。每個函數都有自己的範圍,B在該範圍內定義,因此不在父範圍內。 – Draco18s

0
A = 3 

def Calculation(): 
    global A 
    B = 2 * A 
    return B 

B = Calculation() 

print B 
+0

你能解釋一下你的代碼嗎?! – Cleb

+0

A = 3,定義了一個聲明語句,您可以在其中修復A的值並將其用作全局變量。在此之後,您將沒有參數的方法Calculation()定義爲輸入,此函數將始終返回您B(在函數內定義)。爲了使用方法計算,您需要使用返回變量B = Calculation()來調用它。接下來,您將使用打印方法檢查變量B. –

2

你的例子沒有任何意義。

無論是打印函數的返回值...

A = 3 

def Calculation(): 
    global A 
    B = 2 * A 
    return B 

print Calculation() 

或者不使用功能:

A = 3 
B = 2 * A 
print B 

或者在全球化的功能B以及之前調用該函數打印B

A = 3 

def Calculation(): 
    global A, B 
    B = 2 * A 

Calculation() 
print B 

儘管您不需要使用全局變量A,但應該將其作爲參數傳遞給Calculation。例如:

A = 3 

def Calculation(a): 
    B = 2 * A 
    return B 

print Calculation(A) 

你也應該使用功能「蛇案」的名字(全部小寫,單獨的詞用下劃線「_」)。

如何使你的代碼示例可以寫成最好的(在我看來)是:

a = 3 

def calculation(factor): 
    return = 2 * factor 

print calculation(a) 
相關問題