为什么python需要global关键字而C/C++不需要?

roa*_*nai 2 c++ python global global-variables

如果我想更改全局变量,我可以直接在 C++ 中执行:

#include <stdio.h>

int x = 1;

int main()
{
    x = 1 + x;
    printf("%d\n", x);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但使用 Python 时出现错误:

x = 1
def foo():
    x += 1

foo()
Run Code Online (Sandbox Code Playgroud)

UnboundLocalError: local variable 'x' referenced before assignment

我必须添加global x功能foo才能实现它。


似乎 python 让它更明确,是“只是为了明确”的原因吗?

MSa*_*ers 9

根本区别在于 C 和 C++ 有变量声明。声明的位置决定是否声明全局。

在 Python 中,你只有作业。对尚未分配的变量进行赋值会创建该变量。对现有变量的赋值会更改该变量。因此,global如果存在具有该名称的全局变量,则无法创建局部变量。