这不是python中正确的全局变量用法吗?它不断出现语法错误。什么是真正的全局关键字用法 [重复]

Isn't this a proper global variable usage in python? It keeps on giving syntax error. What really is a global keyword usage [duplicate]

提问人:Kulangara Silpa Prabhu 提问时间:7/16/2023 最后编辑:quamranaKulangara Silpa Prabhu 更新时间:7/16/2023 访问量:61

问:

q=8
def example(q):
    global q
    q=q+2
    print(q)

example()
File "<ipython-input-35-0e5cbb9ebefd>", line 2
    global q
    ^
SyntaxError: name 'q' is parameter and global

这里的语法错误是什么? 如果我必须访问 q,我如何使用全局关键字?

python 变量 scope syntax-error global

评论

3赞 deceze 7/16/2023
您既要定义为参数 (),要定义为 .你不能两者兼而有之,因为这毫无意义。执行其中一项操作。qdef example(q)global
1赞 Tom Karzes 7/16/2023
它告诉您您已经用作函数的参数。更改函数行,即消除参数。qdef example():

答:

-1赞 Muhammad Ali 7/16/2023 #1

不能声明参数并将其声明为全局参数。参数是函数的本地参数。将您的参数名称更改为其他名称。

q=8
def example(a):
    global q
    q=q+2
    print(q)
    print(a)
example(3)
-1赞 Arman Ala 7/16/2023 #2

代码中出现语法错误是因为在将 q 作为参数传递后,您尝试在函数 example() 中将其声明为全局变量。在 Python 中,如果变量已定义为参数,则不能使用 global 关键字在函数中将变量声明为全局变量。

若要解决此问题,可以从函数定义中删除参数 q,也可以为全局变量选择其他名称。下面是一个示例:

q = 8

def example():
    global q
    q = q + 2
    print(q)

example()

在这个更新的代码中,q 变量被声明为函数外部的全局变量,然后在函数内部,使用 global 关键字来指示我们要修改全局变量 q。输出将为 10,这是将 2 添加到 q 的初始值的结果。

请记住,使用全局变量时应谨慎,因为它会使代码更难理解和维护。通常建议将变量作为参数传递或从函数返回值,而不是严重依赖全局变量。