Python 如何更改函数中的全局变量内容
我创建了以下示例程序来演示我正在尝试做的事情:Python 如何更改函数中的全局变量内容,python,variables,Python,Variables,我创建了以下示例程序来演示我正在尝试做的事情: name = "d" def namechange (name): global name name = "Henry" return name print name 产生的错误包括: SyntaxError: name 'name' is local and global 我知道name变量是局部变量和全局变量,但我不熟悉这一点,不知道如何解决这个问题。请帮忙 def namechange (name): 这将
name = "d"
def namechange (name):
global name
name = "Henry"
return name
print name
产生的错误包括:
SyntaxError: name 'name' is local and global
我知道name变量是局部变量和全局变量,但我不熟悉这一点,不知道如何解决这个问题。请帮忙
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
这将引入一个局部变量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
的参数,Python现在将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
>>>
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
修复方法是从函数参数中删除名称。这样,Python将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
>>>
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
但是,如果可以的话,应该避免使用globals。在这种情况下,更好的解决方案是将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
>>>
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
Python将函数参数视为局部变量。因此,由于函数接受一个名为
name
的参数,Python现在将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
>>>
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
修复方法是从函数参数中删除名称。这样,Python将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
>>>
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
但是,如果可以的话,应该避免使用globals。在这种情况下,更好的解决方案是将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
>>>
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
,使其成为本地变量。从namechange
的参数中删除name
。这是Python引用的本地变量name
。您的函数正在接受参数name
,使其成为本地变量。