在Python中分配全局变量?

时间:2016-09-22 09:38:35

标签: python

我正在为一个新项目尝试Python,并且在那个状态下,需要一些全局变量。为了测试而不改变硬编码值,我试图创建一个重新分配变量的函数:

foo = None;

def setFoo(bar):
    global foo = bar;

setFoo(1);

然而,这得到:

  File ".\test.py", line 4
    global foo = bar;
               ^
SyntaxError: invalid syntax

我已经阅读了与我的问题高度相关的two questions,但显然错过了一些Python的问题。

有人能开导我吗?

5 个答案:

答案 0 :(得分:3)

global和赋值都是陈述。你不能在同一条线上混合它们。

答案 1 :(得分:3)

foo = None;

def setFoo(bar):
    global foo 
    foo = bar

setFoo(1);

答案 2 :(得分:1)

正如saurabh baid指出的那样,正确的语法是

foo = None

def set_foo(bar):
    global foo 
    foo = bar

set_foo(1)

使用global关键字允许函数访问全局范围(即模块的范围)

另请注意我如何将变量重命名为snake_case并删除了分号。在Python中不需要分号,函数通常是snake_case:)

答案 3 :(得分:1)

globalfoo = bar在不同的行

foo = None

def setFoo(bar):
    global foo
    foo = bar

setFoo(1)
不要使用分号: Python: What Does a Semi Colon Do?

答案 4 :(得分:1)

Python并不要求您显式声明变量并自动假设您指定的变量具有函数作用域,除非您另有说明。 global关键字是提供给它的方式。当您将其声明为全局时,您无法分配值。正确的方法将是

foo = None

def setFoo(bar):
    global foo 
    foo = bar

setFoo(1)