2015-12-07 124 views
0
p = input(":") 
def c (p): 
    p = "cat" 
    return p 

print(c(p)) 

print(p) #how do i make this p be cat 

有沒有辦法做到這一點?我如何改變一個變量的值,但是從一個函數內部?

+2

你必須設置':P = C(P)'捕捉到你的函數的返回值。 –

+0

以及確定這是正確的方法@Rar ...但不是唯一的方法:P –

+0

這是一個範圍問題。 p已經指的是方法內的東西。 –

回答

1

您在這裏有一個範圍問題。你有這樣的代碼:

p = input(":") 
def c(p): 
    p = "cat" 
    return p 

雖然你可以選擇用全局的,你可能只是更簡單地更改您在傳遞給別的變量的名稱。目前,當您執行p = "cat"時,您所引用的是您的方法框架中的一個INSIDE,而不是全局框架中的一個。如果您將參數的名稱更改爲「z」,那麼您將引用正確的p。因此,這會工作:

p = input(":") 
def c(z): 
    p = "cat" 
    return p 

你可以閱讀有關框架和了解的Python如何與對CS入門課程加州大學伯克利分校的偉大網上購書不同的幀交互:http://composingprograms.com/

我推薦閱讀第1章第5節 - 它涉及到解決這個問題的方法。

0

的另一種方式,你可以用global定義或改變這樣的函數中的全局變量:

p = input(":") 
def c (p): 
    global p 
    p = "cat" # now the `p` become 'cat' 
    return p 

print(c(p)) 
print(p) # it's 'cat' 
相關問題