2015-09-11 37 views
1

我根據反饋編輯了我的線程。 基本上,我需要使用函數1的幾個變量,並且需要在函數2中打印它。無法從另一個函數調用變量

我該如何去做這件事?

希望聽到你的消息。

蛋糕。

def function_one(): 
    number_one = 5 
    number_two = 6 
    number_three = 7 

def function_two(): 
    print(number_one) 
    print(number_two) 
    print(number_three) 

function_one() 
function_two() 
+1

寫一些新的簡單代碼來提問。儘量減少你遇到的最簡單的幾行代碼的問題。 –

+1

參見例如[mcve] – jonrsharpe

+1

謝謝彼得,我改變了主意。 – Cake

回答

1

好的,所以你的變量被捕獲到函數的範圍內。要使用這些範圍之外的,你需要返回出來,例如:

def function_one(): 
    number_one = 5 
    number_two = 6 
    number_three = 7 
    return number_one,number_two, number_three 

def function_two(number1, number2, number3): 
    print(number1) 
    print(number2) 
    print(number3) 

one, two, three = function_one() 
function_two(one, two, three) 

,並在其在各自不同領域的命名在這裏我已經做了各種不同的瓦爾,使這一切更明顯。

+0

非常感謝您的回覆。是否返回一個數組中最優雅的解決方案? – Cake

+1

有很多事情要做,使其優雅。我正在採取什麼希望是一個非常簡單的方法來清楚:)步行,然後運行:) –

+0

@Cake這是一個元組,當您返回並分配時,它是自動打包和解包的。 – saarrrr

2

肖恩的回答非常好,很直接,幾乎可以肯定你在找什麼。他建議你通過返回函數將變量帶出function_one範圍。解決這個問題的另一種方法是通過閉包將function_two帶入function_one的作用域。

def function_one(): 
    num_one = 5 
    num_two = 6 
    num_three = 7 

    def function_two(): 
    print(num_one) 
    print(num_two) 
    print(num_three) 

    return function_two 

func_two = function_one() 
func_two() 

編輯以解決您的評論。你也可以直接調用function_two。但是,這是不太可讀的和unpythonic國際海事組織。

function_one()()

+0

完美,我用你的方法。我把我的函數放在函數的一個範圍內。然而,我不確定你的意思是什麼func_two = function_one() – Cake

+0

@Cake仔細看看function_one的定義。最後,它返回function_two,並且該函數必須分配給一個變量以便稍後調用。這使func_two成爲一個函數,所以你可以通過add()來調用它。 – saarrrr

0

只使用return語句它會工作般的魅力

def function_one(): 
    num=5 
    return num 

def function_two(): 
    print(function_one()) 

function_two() 
0

方法1:使用全局變量。 - Using global variables in a function other than the one that created them(例子)

選項2:返回值

離。

def func_one(): 
    var1 = 1 
    var2 = 2 
    return var1, var2 

def func_two(a,b): 
    print a 
    print b  

# you can return to multiple vars like: 
one, two = func_one() 
func_two(one, two) 

# this would print 1 and 2 

# if you return multiple values to one var, they will return as a list 
# returning one value per function may keep your code cleaner 
the_vars = func_one() 
func_two(the_vars[0], the_vars[1]) 

# this would print 1 and 2 also 
相關問題