p = input(":")
def c (p):
p = "cat"
return p
print(c(p))
print(p) #how do i make this p be cat
有沒有辦法做到這一點?我如何改變一個變量的值,但是從一個函數內部?
p = input(":")
def c (p):
p = "cat"
return p
print(c(p))
print(p) #how do i make this p be cat
有沒有辦法做到這一點?我如何改變一個變量的值,但是從一個函數內部?
您在這裏有一個範圍問題。你有這樣的代碼:
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節 - 它涉及到解決這個問題的方法。
的另一種方式,你可以用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'
你必須設置':P = C(P)'捕捉到你的函數的返回值。 –
以及確定這是正確的方法@Rar ...但不是唯一的方法:P –
這是一個範圍問題。 p已經指的是方法內的東西。 –