Python 关键字global全局变量详解

变量作用域

一般在函数体外定义的变量成为全局变量,在函数内部定义的变量称为局部变量。

全局变量所有作用域都可用,局部变量只能在本函数可用,变量的使用顺序是,局部变量 > 全局变量, 也就是说:优先使用局部变量

那么问题来了, 如果想在函数内使用全局变量,或改变全局变量的值, 应该怎么做呢?

global关键字

为了解决函数内使用全局变量的问题,python增加了global关键字, 利用它的特性, 可以指定变量的作用域。

global关键字的作用:声明变量var是全局的

代码实例

实例1:

函数优先使用局部变量

str = 'global'  def func1():      str = 'local'      print(str)  func1()  print(str)

结果:

local  global

实例2:

在没有局部变量的情况下, 使用全局变量

str = 'global'  def func1():      print(str)  func1()  print(str)

结果:

global  global

实例3:

改变全局变量的值, 通过实例1可以看到, 函数内赋值并不能改变全局变量的值,所以需要global关键字

str = 'global'  def func1():      global str      str = 'local'      print(str)  func1()  print(str)

结果:

local  local

其他用法

你可以使用同一个global语句指定多个全局变量。

例如

global var1, var2, var3

特殊类型

字符串、数字类型是不能被在局部被修改的,除非使用global关键字,但是 列表,字典是可修改,但不能重新赋值,如果需要重新赋值,需要在函数内部使用global定义全局变量

代码实例1:

list = ['global', 'pythontab.com']  def func1():      list.append('bbs.pythontab.com')      print(list)  func1()  print(list)

结果:

['global', 'pythontab.com', 'bbs.pythontab.com']  ['global', 'pythontab.com', 'bbs.pythontab.com']

发现上面的list并没有使用global但是值却改变了, 说明列表是可以在局部被修改的

代码实例2:

list = ['global', 'pythontab.com']  def func1():      list = ['docs.pythontab.com']      print(list)  func1()  print(list)

结果:

['docs.pythontab.com']  ['global', 'pythontab.com']

局部变量赋值不能改变全局变量的值

代码实例3:

list = ['global', 'pythontab.com']  def func1():      global list      list = 'docs.pythontab.com'      print(list)  func1()  print(list)

结果:

docs.pythontab.com  docs.pythontab.com

使用了global关键字后, 变量被重新赋值

  • 初学者学习python2还是python3?
  • python获取本机IP、mac地址、计算机名
  • 详解python2 和 python3的区别
  • python基础之删除文件及删除目录的方法
  • 用python求第1000个质数的值
  • python常用函数年初大总结
  • Python3 - 时间处理与定时任务
  • Python开发的CMS系统,Silva CMS 3 发布
  • python基础之使用os.system来执行系统命令
  • 判断python字典中key是否存在的两种方法
  • 初学者学习python2还是python3?
  • python基础之删除文件及删除目录的方法
  • python获取本机IP、mac地址、计算机名
  • python获取系统时间(时间函数详解)
  • 详解python2 和 python3的区别
  • 用python求第1000个质数的值
  • Python3 - 时间处理与定时任务
  • 命令行看糗百
  • Python算法之---冒泡,选择,插入排序算法
  • python 中求和函数 sum详解
  • range方法在Python2和Python3中的不同
  • python3 数组(列表)初始化
  • 记一次crontab中date命令错用导致的问题
  • MySQL用LIKE特殊字符搜索
  • CentOS 7 下修改主机名
  • Python3正则表达式之:(?(id/name)y...
  • TIOBE编程语言排行榜2019年 Python稳居前三
  • 解压命令unzip常用方法汇总
  • 解析redis备份文件rdb的两种方法及对比
  • 百度视觉语义化平台2.0:交互升级和...
  • 5G时代的视觉语义化技术:软硬结合...
  • 百度AutoDL重磅升级至3.0:设计、迁...