我已經創建了下面的示例程序來證明什麼,我試圖做一個函數內的全局變量內容:如何更改
name = "d"
def namechange (name):
global name
name = "Henry"
return name
print name
所產生的錯誤:
SyntaxError: name 'name' is local and global
我明白,名稱變量是本地和全球的,但我是新來的,不知道如何解決這個問題。請幫助
我已經創建了下面的示例程序來證明什麼,我試圖做一個函數內的全局變量內容:如何更改
name = "d"
def namechange (name):
global name
name = "Henry"
return name
print name
所產生的錯誤:
SyntaxError: name 'name' is local and global
我明白,名稱變量是本地和全球的,但我是新來的,不知道如何解決這個問題。請幫助
def namechange (name):
這引入了本地變量name
。
global name
然而,這還介紹了在同一範圍內全球變量name
。
因此,name
是本地和全局的語法錯誤。爲了解決這個問題,你必須刪除局部變量或全局變量。在你的情況下,你可以做到這一點。
你可以或者刪除局部變量,只是讓函數修改全局變量,像這樣:
def namechange():
global name
name = "Henry"
在這種情況下,你實際上並不需要任何回報,因爲這已經改變了全局變量。
或者你可以刪除全局變量,使這個函數只是返回新值:
def namechange (name):
name = "Henry"
return name
在這種情況下,這將是調用者負責更新來自外部範圍的變量:
name = "d"
new_name = namechange(name)
print(new_name) # Henry
Python將函數參數視爲局部變量。如此以來,你的函數接受一個參數,也叫name
,巨蟒現在認爲name
是一個局部變量:
>>> global_variable = 0
>>> def foo(global_variable): # your creating a local variable here.
global global_variable
SyntaxError: name 'global_variable' is parameter and global
>>>
解決方法是從你的函數參數刪除名稱。這樣一來,Python會看到name
作爲一個全局變量:
name = "d"
def namechange(): # remove name
global name
name = "Henry"
print name
然而,你應該避免時,你可以使用全局變量。在這種情況下,這將是一個更好的解決方案,以通過名稱作爲參數傳遞給你的函數,然後讓調用處理更新變量:
name = "d"
def namechange (name):
name = "Henry"
return name
new_name = namechange(name)
print new_name
刪除從''的的namechange'參數name'。這是Python引用的本地'name'變量。 –
你的函數接受'name'參數,使它成爲本地的。 –