2017-05-20 152 views
1

我該如何去實現這個功能?我已經搜索,但我不能讓它繼續工作。我應該把a()函數放在b函數中,即使我添加了更多變量?在函數中調用函數 - Python

counter = 1 

def a(): 
    az = 1 
    bz = 2 
    cz = 3 

def b(): 
    a() 
    if counter > 0 : 
     print az, bz, cz 

b() 
+0

函數'a()'中的變量是函數'a()'的* local *,不能在函數'b()'中訪問。 – zhenguoli

+2

這應該是對你有用:http://stackoverflow.com/questions/291978/short-description-of-the-scoping-rules – fileyfood500

+0

關鍵是,'a()'在b中被正確調用,但是b中的變量不存在。 – fileyfood500

回答

1

好吧,您需要了解scope的概念。 azbzcz僅在您的功能a()中已知。所以你不能在函數b()中打印它們的值。你可以這樣做:

counter = 1 

def a(): 
    az = 1 
    bz = 2 
    cz = 3 
    if counter > 0 : 
     print az, bz, cz 

def b(): 
    a() 

b() 

正如@ fileyfood500在他的評論中說,你可能需要閱讀this

0

一個潛在的問題是從a返回值。

counter = 1 

def a(): 
    az = 1 
    bz = 2 
    cz = 3 
    return(az,bz,cz) 

def b(): 
    (az,bz,cz) = a() 
    if counter > 0 : 
     print az, bz, cz 

b()