2012-04-06 35 views
0

我如何將r的內容從main存儲並傳遞給兩個?如果我使r =固定,它會打印r,但是如何將可變內容傳遞並保存到r中。我嘗試了random.getstate/setstate,但它說「函數對象不可下載」。python 3.2如何通過函數之間的變量傳遞數據

import random 
from random import randrange 

def main(): 
    r = random.randrange(1,13,1) 
    print (r) 

r = random.randrange(1,13,1) 


def two(): 
    if r==7 or r==11: 
     print (r) 
    else: 
     print (r) 

    main() 
    two() 
+0

你是怎麼知道'random.getstate'的?這完全不相關。不管函數做什麼,在函數間傳遞信息的方式都是一樣的,並且與使用「隨機」模塊的事實完全無關,所以我不明白爲什麼要在那裏挖掘以找到這可能會有所幫助。在嘗試與其他人的代碼一起工作(通過導入模塊)之前,這些都是您應該首先學習的編程基礎知識。是的,這意味着首先寫入極其有限的東西。 – 2012-04-06 22:03:27

+0

@KarlKnechtel我自己寫了這段代碼,現在我正在開發一個Python編程類,所以我真的不明白假設我正在採用別人的代碼,所以我在python文檔中查看。下一次,在你假設之前進行思考。這是令人反感的。 – user1316212 2012-04-13 22:53:46

回答

1

那麼,視情況而定,你要麼想使一個類或返回數據,然後把它作爲一個參數,後者可能是你想要什麼給你的代碼,因此,例如:

def main(): 
    ... 
    r = do_something() 
    ... 
    return r 

def two(r): 
    ... 
    do_something_else(r) 
    ... 

r = main() 
two(r) 

如果這是什麼,你可以定義爲一個實體內發生的事情,你可以做一個類:

class Main(): 
    def main(self): 
    ... 
    self.r = do_something() 
    ... 

    def two(self): 
    ... 
    do_something_else(self.r) 
    ... 

main = Main() 
main.main() 
main.two() 

然而,在這種情況下,這是不必要的,因爲你正在創建交流沒有真正封裝任何東西的女士。

+0

感謝您的幫助和有關課程的評論! – user1316212 2012-04-06 21:52:57

+0

不用擔心,如果這回答你的問題,請隨時[接受](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235)。 – 2012-04-06 21:57:15

2

使用返回值和功能參數:

import random 
from random import randrange 

def main(): 
    r = random.randrange(1,13,1) 
    return r 

def two(r): 
    if r==7 or r==11: 
     print (r) 
    else: 
     print (r) 

r = main() 
two(r) 

功能main計算隨機值,然後返回到它被調用的地方。然後可以將返回值存儲在變量中(在這種情況下也稱爲rr = main())。不過,不需要叫r,你也可以將其命名爲別的。

要將值傳遞給two,可以將它作爲參數傳遞。正如您在def two(r):中看到的那樣,函數two現在需要一個參數(也稱爲r),並在該函數中使用該參數。再次,這不需要被稱爲r,但它似乎適合使用相同的名稱。

+0

@lattyware謝謝!它效果很好! – user1316212 2012-04-06 21:40:31

+0

並感謝您的解釋! – user1316212 2012-04-06 21:44:31