Python中的全局关键字global的用法示例

2021年3月31日17:31:43 发表评论 816 次浏览

全局关键字是允许用户修改当前作用域之外的变量的关键字。它用于创建全局变量来自非全局范围, 即函数内部。仅当我们要执行赋值或要更改变量时, 才在函数内部使用Global关键字。全局不需要打印和访问。

全局关键字规则:

  • 如果在函数体内任何位置为变量分配了值, 除非明确声明为全局变量, 否则假定该变量为局部变量。
  • 仅在函数内部引用的变量是隐式全局的。
  • 我们使用global关键字在函数内部使用global变量。
  • 无需在函数外部使用全局关键字。

全局关键字的使用:

要访问函数内部的全局变量, 无需使用global关键字。

范例1:

# Python program showing no need to
# use global keyword for accessing
# a global value
  
# global variable
a = 15
b = 10
  
# function to perform addition
def add():
     c = a + b
     print (c)
  
# calling a function
add()

输出如下:

25

如果我们需要为全局变量分配新值, 则可以通过将变量声明为全局变量来实现。

代码2:

没有全局关键字

# Python program showing to modify
# a global value without using global
# keyword
  
a = 15
  
# function to change a global value
def change():
  
     # increment value of a by 5
     a = a + 5 
     print (a)
  
change()

输出如下:

UnboundLocalError: local variable 'a' referenced before assignment

这个输出是错误的,因为我们试图将值赋给外部作用域中的变量。这可以通过使用global变量来实现。

代码3:

与全局关键字

# Python program to modify a global
# value inside a function
  
x = 15
def change():
  
     # using a global keyword
     global x
  
     # increment value of a by 5
     x = x + 5 
     print ( "Value of x inside a function :" , x)
change()
print ( "Value of x outside a function :" , x)

输出如下:

Value of x inside a function : 20
Value of x outside a function : 20

在上面的例子中,我们首先将x定义为函数change()中的全局关键字。然后x的值加5,即。x=x+5,因此我们得到的输出是20。

通过改变函数change()内部的值,我们可以看到,这种改变也反映在全局变量外部的值中。

跨python模块的全局变量:

在同一程序中的不同模块之间共享全局变量的最佳方法是创建一个特殊模块(通常称为config或cfg)。将配置模块导入到应用程序的所有模块中;然后, 该模块即可用作全局名称。每个模块只有一个实例, 因此对模块对象所做的任何更改都会在所有地方反映出来。例如, 在模块之间共享全局变量

代码1:

创建一个config.py用于存储全局变量的文件:

x = 0
y = 0
z = "none"

代码2:创建一个修改文件来修改全局变量:

import config
config.x = 1
config.y = 2
config.z = "lsbin"

这里我们修改了x、y和z的值。这些变量是在模块配置中定义的。因此,我们必须导入配置模块,我们可以使用config.variable_name访问这些变量。

代码3:创建一个main.py文件来修改全局变量:

import config
import modify
print (config.x)
print (config.y)
print (config.z)

输出如下:

1
2
lsbin

全局嵌套函数

为了在嵌套函数内部使用全局变量, 我们必须在嵌套函数内部声明一个带有global关键字的变量

# Python program showing a use of
# global in nested function
  
def add():
      x = 15
       
      def change():
          global x
          x = 20
      print ( "Before making changing: " , x)
      print ( "Making change" )
      change()
      print ( "After making change: " , x)
  
add()
print ( "value of x" , x)

输出如下:

Before making changing:  15
Making change
After making change:  15
value of x 20

在上面的示例中, 在进行change()之前和之后, 该变量X取局部变量的值, 即x = 15。加()函数, 变量X将采用在更改()函数x = 20, 因为我们在X在change()函数(局部作用域)内创建全局变量。

首先, 你的面试准备可通过以下方式增强你的数据结构概念:Python DS课程。


木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: