【问题标题】:Global Variable in Python, Javascript and C++ [closed]Python、Javascript 和 C++ 中的全局变量 [关闭]
【发布时间】:2019-08-18 20:14:05
【问题描述】:

我有一个关于变量作用域的快速问题,我之前一直在使用 c++,然后我最近开始使用 js 和 python,我注意到一些关于如何在函数内部使用变量的问题。

在 C++ 中,为了使用/修改全局变量,我需要将 if first 作为参数传递,用于打印或更改其值。

int increment(int);
int value = 0;

int main() {
    cout << increment(value) << endl;
    return 0;
}

int increment(int value) {
    value += 1; 
    return value;
}

如果我碰巧定义了增量无参数/无参数(假设它将使用全局变量“值”),即

int increment() {
    value += 1; 
    return value;
}

因此调用函数而不传递任何参数 cout &lt;&lt; increment() &lt;&lt; endl; ,它将给出一个未定义的变量,因为本地使用的变量没有被引入(传递)到函数范围,我完全理解并且看起来很对我来说合乎逻辑。

但是在js和python中使用全局变量而不首先将其传递给定义中的函数是完全可行的

// Javascript : access and reassignment are viable
var total = 0

function call(){
  total++ ;
  return total ;
}

console.log(call()) // 1
# Python : only access is viable 

value  = 0 

def inc():
    return "The value is {}".format(value)

print(inc()) # The value is 0

我只是想知道为什么 python 允许函数只访问全局变量(甚至不事先将它们传递给这些函数)而不重新分配它们,这些全局变量和函数的定义在哪里?位于内存中?

【问题讨论】:

  • 范围规则因语言而异。
  • "* 它会给出一个未定义的变量"*.按预期工作here

标签: javascript python scope global


【解决方案1】:

伙计,您使用的名称变量未在您的 c++ 代码中定义,我说的是您的增量函数中的value +=1,而不是应该是

void increment(){
    num +=1 ;
}

void increment() 是因为您不需要返回值,因为您正在修改全局变量。

此外,当您编译 c++ 程序时,编译器会为您的代码和数据分配一个特定区域,请查看此 imagethis post

【讨论】:

  • 是的,你说得对,我编辑了它。我的错。
  • 别担心,伙计,我们是来帮忙的,js和python也是不需要编译就能工作的程序,它们是解释所以我可以无法帮助您回答有关内存中的变量和函数在哪里的问题抱歉
  • 谢谢你真的很有帮助! ,我不知道可以使用全局变量而不在这样的函数内部传递,这也是我的坏事:)
猜你喜欢
  • 2017-04-30
  • 1970-01-01
  • 1970-01-01
  • 2021-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多