简单了解python关键字global nonlocal区别

第一,两者的功能不同。global关键字修饰变量后标识该变量是全局变量,对该变量进行修改就是修改全局变量,而nonlocal关键字修饰变量后标识该变量是上一级函数中的局部变量,如果上一级函数中不存在该局部变量,nonlocal位置会发生错误(最上层的函数使用nonlocal修饰变量必定会报错)。

第二,两者使用的范围不同。global关键字可以用在任何地方,包括最上层函数中和嵌套函数中,即使之前未定义该变量,global修饰后也可以直接使用,而nonlocal关键字只能用于嵌套函数中,并且外层函数中定义了相应的局部变量,否则会发生错误(见第一)。

正常的

a = 1
def func():
  a = 10
  print(a)
func()
print(a)

运行结果:

10
1

使用global

a = 1
def func():
  global a
  a = 10
  print(a)
func()
print(a)

运行结果:

10
10

使用nonlocal

a = 1
def func():
  nonlocal a
  a = 10
  print(a)
func()
print(a)

运行结果:

10
0

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Python中 Global和Nonlocal的用法详解

    nonlocal 和 global 也很容易混淆.简单记录下自己的理解. 解释 global 总之一句话,作用域是全局的,就是会修改这个变量对应地址的值. global 语句是一个声明,它适用于整个当前代码块. 这意味着列出的标识符将被解释为全局变量. 尽管自由变量可能指的是全局变量而不被声明为全局变量. global 语句中列出的名称不得用于该全局语句之前的文本代码块中. global 语句中列出的名称不能定义为形式参数,也不能在 for 循环控制目标. class 定义.函数定义. impo

  • python中global与nonlocal比较

    python引用变量的顺序: 当前作用域局部变量->外层作用域变量->当前模块中的全局变量->python内置变量 一.global global关键字用来在函数或其他局部作用域中使用全局变量.但是如果不修改全局变量也可以不使用global关键字. 复制代码 代码如下: gcount = 0 def global_test():     print (gcount)     def global_counter():     global gcount     gcount +=1   

  • Python中关键字global和nonlocal的区别详解

    前言 终于下定决心学习Python了.既然从头开始,就需要认认真真. 首先需要说的是,我是初学Python,这篇文章只是用于展示global和nonlocal关键字的区别,是很简单的知识点,如果你已经学过,可以绕道.因为不经常写博客,而且是个Python小白,所以内容有些啰嗦... 两个关键词都用于允许在一个局部作用域中使用外层的变量. global 表示将变量声明为全局变量 nonlocal 表示将变量声明为外层变量(外层函数的局部变量,而且不能是全局变量) 注意:我使用的是Python3.6

  • python global和nonlocal用法解析

    这篇文章主要介绍了python global和nonlocal用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 ◆global和nonlocal是Python的两个重要变量作用域关键字 1.global用在全局变量,应用场景: 变量定义在函数外部的时候,如果函数里面想改变这个全局变量的值,需要在当前的引用函数里面重新定义一个变量 并用关键字global修饰. 例如: a=1 def b(): a+=1 print(a) b() 用ide写

  • Python中关键字nonlocal和global的声明与解析

    一.Python中global与nonlocal 声明 如下代码 a = 10 def foo(): a = 100 执行foo() 结果 a 还是10 函数中对变量的赋值,变量始终绑定到该函数的局部命名空间,使用global 语句可以改变这种行为. >>> a 10 >>> def foo(): ... global a ... a = 100 ... >>> a 10 >>> foo() >>> a 100 解析

  • Python动态参数/命名空间/函数嵌套/global和nonlocal

    1. 函数的动态参数 1.1 *args 位置参数动态传参 def chi(*food): print("我要吃", food) chi("大米饭", "小米饭") 结果:我要吃 ('大米饭', '小米饭') # 多个参数传递进去. 收到的内容是元组tuple 1.2 **kwargs 关键字参数动态传参 def func(**kwargs): print(kwargs) func(a=1, b=2, c=3) func(a=1, b=2) 结果

  • 简单了解python关键字global nonlocal区别

    第一,两者的功能不同.global关键字修饰变量后标识该变量是全局变量,对该变量进行修改就是修改全局变量,而nonlocal关键字修饰变量后标识该变量是上一级函数中的局部变量,如果上一级函数中不存在该局部变量,nonlocal位置会发生错误(最上层的函数使用nonlocal修饰变量必定会报错). 第二,两者使用的范围不同.global关键字可以用在任何地方,包括最上层函数中和嵌套函数中,即使之前未定义该变量,global修饰后也可以直接使用,而nonlocal关键字只能用于嵌套函数中,并且外层函

  • Python关键字之global与nonlocal

    目录 Python关键字global与nonlocal global nonloacl 总结 Python关键字 global与nonlocal global def test(): #1函数内如果没定义x,则x默认为全局变量 print(x) # 输出 global v #2函数内如果定义x,则x为局部变量 x = 'local v' # 局部变量 print(x) # 输出 local v x = "global v" # 全局变量 如何在函数内修改全局变量呢?[利用关键字glob

  • Python全局变量关键字global的简单使用

    目录 简介: 案例1:全局无法使用局部变量. 案例2:全局变量,任意范围均可使用. 案例3:函数内定义的局部变量 案例4:函数间global关键字的作用 案例5:不同文件模块中的global,注意test6, test7为不同文件. 案例6:不同文件模块中的global,注意test6, test7为不同文件. 附:用global声明多个变量需要用逗号分 结论: 简介: 1.global是Python中的全局变量关键字. 2.全局变量是编程术语中的一种,源自于变量之分. 3.变量分为局部与全局,

  • 简单了解python filter、map、reduce的区别

    这篇文章主要介绍了简单了解python filter.map.reduce的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 python中有一些非常有趣的函数,面试的时候可能会遇到.今天也来总结一下,不过该类的网上资料也相当多,也没多少干货,只是习惯性将一些容易遗忘的功能进行整理. lambda 为关键字.filter,map,reduce为内置函数. lambda:实现python中单行最小函数. g = lambda x: x * 2

  • 简单了解Java关键字throw和throws的区别

    这篇文章主要介绍了简单了解Java关键字throw和throws的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 抛出异常有三种形式 throw throws 系统自动抛异常 一.系统自动抛异常 当程序语句出现一些逻辑错误.主义错误或类型转换错误时,系统会自动抛出异常:(举个栗子) public static void main(String[] args) { int a = 5, b =0; System.out.println(5/b

  • Python全局变量global关键字详解

    Python中的变量作用域 一般在函数体外定义的变量成为全局变量,在函数内部定义的变量称为局部变量. 全局变量所有作用域都可用,局部变量只能在本函数可用,变量的使用顺序是,局部变量 > 全局变量, 也就是说:优先使用局部变量 那么问题来了, 如果想在函数内使用全局变量,或改变全局变量的值, 应该怎么做呢? Python全局变量global关键字 为了解决函数内使用全局变量的问题,python增加了global关键字, 利用它的特性, 可以指定变量的作用域. Python全局变量global关键字

  • python 关键字与标识符超详细整理

    目录 关键字 注意事项 Python中的关键字区分大小写 关键字作为普通标识符使用会报错 标识符 标识符命名规则 关键字 关键字是python语言中一些已经被赋予特定意义的单词.开发程序是,不可以把这些关键字作文变量.函数.类.模块和其他对象的名称来使用.python语言中的关键字如下表所示 关键字 描述 and 逻辑运算符 as 创建别名 assert 用于调试 break 跳出循环 class 定义类 continue 继续循环 def 定义函数 del 删除对象 elif 在条件语句中使用

  • 如何查看python关键字

    现在我们就来讲讲关键字吧,准备好开始记笔记了吧,俗话说得好,好记性不如烂笔头,记好了喔,经常听大家提起关于Python中关键词有多少个?实际上Python中关键词目前有31个,想要具体查看以及观察个数的方式非常简单,下面就为大家详细介绍. 1.keyword模块进行输出查看 Help on module keyword: NAME keyword - Keywords (from "graminit.c") FILE /usr/lib64/python2.6/keyword.py DE

随机推荐