Python中在if语句中赋值变量的用法

3 投票
3 回答
1609 浏览
提问于 2025-04-17 05:17

我刚开始学Python,发誓我之前做过一个跟现在这个很像的程序,而且能正常运行。但是,不知道为什么,这次却不行。我找到了一些问题,并且写了一个假程序来试试。下面就是这个程序:

global heading
global heading2
global a

heading=2
a=2
heading2=4

def function ():
    if a==2:
        heading=heading2
        print 'yes'
        print heading

function()       
print heading

这是运行后显示的内容:

yes
4
2

为什么变量heading的值没有保持在4呢?我到处都试着加上return heading,但还是不行。我还试着把变量放到函数的括号里,也没用……你知道我哪里出错了吗?

3 个回答

0

在这个函数里面,你创建了一个叫做 heading 的局部变量。这个变量和函数外面声明的 heading 不是同一个东西。

3

这一行代码:

    heading=heading2

创建了一个新的 局部 变量,叫做 heading,这个变量和你传入函数的那个同样叫 heading 的变量是 不一样 的。

如果你想让这个函数能够修改外部的变量,可以在赋值之前加上:

global heading

在你给 heading 赋值之前:

def function():
    global heading
    if a==2:
        heading=heading2
        print 'yes'
        print heading
4

global 这个关键词在函数外面是没有意义的。如果你想修改一个全局变量,而不是创建一个局部变量,你需要把 global 放在函数里面。

def foo():
    global x
    x = x2

另外,不要使用全局变量。

撰写回答