繁体   English   中英

两个函数之间的全局变量scope是什么

[英]What is the scope of global variables between two functions

我在这里很困惑。 如果变量已经在 function 中设置,我应该将其声明为全局变量吗? 我是说

def function1():
   global var1, var2
   var1 = 2
   var2 = 3

def function2():
   global var1, var2    <-------Should i mention in every function where I use those variable?
   ans = var1 + var 2

如果不需要,那么我可以这样做吗?

def function 1():
    var1 = 2
    var2 = 4

def funciton2():
   ans = var1+var2

def function3():
   global var1, var2
   (no codes here)

有没有办法获取脚本中使用的所有变量的列表并找出其中哪些是全局变量?

您需要在任何 function 中使用global ,它将为该变量分配一个值。 global告诉 function 该名称不在其本地命名空间中。 当你只使用变量时,python 会尝试本地命名空间,找不到变量,然后回退到全局命名空间。 当您尝试设置变量时,python 无法知道您是指碰巧具有相同名称的局部变量还是全局变量。 因此, global装饰。

在您的第一个示例中,您需要在 function1 中使用 global,因为您分配了变量。

def function1():
   global var1, var2
   var1 = 2
   var2 = 3

你在 function2 中不需要它,因为你只使用它们,你没有为它们分配任何东西。

def function2():
   ans = var1 + var2

您可以使用globals()为您提供全局变量字典。 如果你打算更新一个全局变量,你只需要使用关键字global ,而不是如果你试图访问它的值

您确实需要在 function 之外分配它们,所以在您的情况下

var1 = 1 # outside function, can be used as global variable
var2 = 2

def function1():
   global var1, var2
   var1 = 2 # as global is used, from here on var1 will have the value 2
   var2 = 3

def function2():
# as you are not assigning a value to var1,2 but only access their value so  
# you do not need to use the global keyword
   ans = var1 + var2  

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM