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++
中也是一种不好的做法。