Python 不同编程语言的副作用

Python 不同编程语言的副作用,python,c++,side-effects,Python,C++,Side Effects,我正在研究不同编程语言的副作用 例如,在C++中,如果我定义 x = 1; int f(int y) { x = x + y; return x; } 然后执行f(1)x的新值等于2 在python中,我当然可以执行相同的函数 x = 1 def f(y): x = x + y return x 但是当我在这种情况下执行f(1)时,我得到了错误“赋值前引用的局部变量'x' 为什么对于相同的函数和执行,但在不同的编程语言中,会有不同的结果?与C++相比,我能在Pytho

我正在研究不同编程语言的副作用

例如,在C++中,如果我定义

x = 1;

int f(int y)
{
  x = x + y;
  return x;
}
然后执行
f(1)
x的新值等于2

在python中,我当然可以执行相同的函数

x = 1

def f(y):
   x = x + y
   return x
但是当我在这种情况下执行
f(1)
时,我得到了错误“赋值前引用的局部变量'x'


为什么对于相同的函数和执行,但在不同的编程语言中,会有不同的结果?与C++相比,我能在Python中产生副作用吗?是否因为C++被编译,Python在Python中被解释为

< P>,如果您想重新分配全局变量,则需要使用<代码>全局< /Cord>关键字。在C语言中,您只需访问它们,而不需要额外的步骤。此版本的Python函数应能正常工作:

正如@roganjosh所评论的,不建议使用全局变量(在两种语言中),但它们会使函数按照您的预期运行

<>原因不是因为编译了C++,Python是被解释的。这是因为Python需要<代码>全局< /Cord>关键字重新分配全局变量,而C++没有。
def(y):
全球x
x=x+y
返回x

Python的副作用是什么?整数是不可变的,所以我看不出Python有什么关系……不幸的是,“为什么我在不同的编程语言中有不同的结果”的最佳答案可能是“因为不同的语言做的事情不同,否则就只有一种编程语言”RoGangJoji和PC++相比,我能在Python中产生副作用吗?请花一分钟的时间来理解错误信息的含义。你会发现你的程序并不等同,这与副作用无关。作为一个新用户,也请接受并阅读。对于相同的实现和执行,您不会有不同的结果。您有不同的实现和执行。如果你刚刚学会了这些语言,你就会看到它们之间的区别。虽然这样做是可行的,但它是粗俗的,应该避免使用
global
。它可能会解决OP的问题,但这是一种不好的做法,在
c++
中也是一种不好的做法。