Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何更改函数中的全局变量内容_Python_Variables - Fatal编程技术网

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
,使其成为本地变量。