废话不多说,直接代码啊~~~

a=999
b=99999
def test1():
a=888
b=88888
print('a={}'.format(a))
print('b={}'.format(b))
def test2():
global a
print('a={}'.format(a))
a+=1
print('a={}'.format(a))
nonlocal b
b+=1
print('b={}'.format(b))
print(globals())
print(locals())
test2()
print(globals())
print(locals()) test1()
print('b={}'.format(b))
print(globals())
print(locals())

输出结果:

a=888
b=88888
a=999
a=1000
b=88889
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x0000011762666FD0>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'H:/py/day12.py', '__cached__': None, 'a': 1000, 'b': 99999, 'test1': <function test1 at 0x000001176261C1E0>}
{'b': 88889}
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x0000011762666FD0>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'H:/py/day12.py', '__cached__': None, 'a': 1000, 'b': 99999, 'test1': <function test1 at 0x000001176261C1E0>}
{'a': 888, 'test2': <function test1.<locals>.test2 at 0x000001176295A378>, 'b': 88889}
b=99999
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x0000011762666FD0>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'H:/py/day12.py', '__cached__': None, 'a': 1000, 'b': 99999, 'test1': <function test1 at 0x000001176261C1E0>}
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x0000011762666FD0>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'H:/py/day12.py', '__cached__': None, 'a': 1000, 'b': 99999, 'test1': <function test1 at 0x000001176261C1E0>} Process finished with exit code 0

一段代码分清global和nonlocal的更多相关文章

  1. 函数的作用域、global与nonlocal

    global 表示不再使用局部局部作用域中的内容,而是改用全局作用域中的变量 a = 100 def func(): global a # 表示不再局部创建这个变量,而是直接使用这个全局的a a = ...

  2. global 和 nonlocal关键字

    当内部作用域想修改外部作用域的变量时,就要用到global和nonlocal关键字了. def fun(): global num1 num1=2 print("函数内修改后num1=&qu ...

  3. python global和nonlocal的使用

    ◆global和nonlocal是Python的两个重要变量作用域关键字 1.global用在全局变量,应用场景: 变量定义在函数外部的时候,如果函数里面想改变这个全局变量的值,需要在当前的引用函数里 ...

  4. Python 全局变量和局部变量,global 和 nonlocal关键字

    全局变量和局部变量    全局变量:定义在函数外的变量    局部变量:定义在函数内部变量    获取变量值时候先获取当前作用域变量名称和变量值,如果没找到到上一层作用域招变量的值,在没有就报错,先获 ...

  5. 07.python函数作用域global、nonlocal、LEGB

    函数作用域 作用域 一个标识符的课件范围,这就是标识符的作用域,一般常说的是变量的作用域 def foo():    x = 100 print(x) # 可以访问到吗 上例中x不可以访问到,会抛出异 ...

  6. python中global 和 nonlocal 的作用域

    python引用变量的顺序: 当前作用域局部变量->外层作用域变量->当前模块中的全局变量->python内置变量 . 一 global global关键字用来在函数或其他局部作用域 ...

  7. Python_动态参数、名称空间、作用域、作用域链、加载顺序、函数的嵌套、global、nonlocal

    1.动态参数 当实参数量与形参数量相等时,参数传递正常. def func1(a, b, c): pass func1(1, 2, 3) 当实参数量与形参数量不相等时,则会报错. def func1( ...

  8. python中global和nonlocal用法的详细说明

    一.global 1.global关键字用来在函数或其他局部作用域中使用全局变量.但是如果不修改全局变量也可以不使用global关键字.   gcount = 0 def global_test(): ...

  9. 转载 Python中关键字global与nonlocal的区别

    转载自CSDN 雁丘1990, 原文地址: https://blog.csdn.net/xcyansun/article/details/79672634 这篇文章写的很赞, 条理清晰, 分析循序渐进 ...

随机推荐

  1. 使用wincc C脚本查找窗口句柄的方法

    关于窗口句柄的用法,网上可以搜到很多相关的文章,本文以windows API接口函数为例,简单介绍一下基本使用,主要包括找到此窗体,在找到的窗体写入数据,对窗体进行关闭,最大化,最小化的操作: 1.利 ...

  2. MacOS使用GitBook制作电子书

    目录 目录 一.简介 二.安装 1. 安装node.js 2. 安装gitbook 三.使用 四.常用命令 1. 初始化 或 编辑目录 2. 编辑内容之后编译书籍 3. 启动web服务通过浏览器预览数 ...

  3. [记录]python的简单协程框架(回调+时间循环+select)

    # -*- coding: utf-8 -*- # @Time : 2018/12/15 18:55 # @File : coroutine.py #一个简单的 Coroutine 框架 import ...

  4. 整型,布尔值,字符串详解,for语句

    整型 -- 数字 用于比较和计算 + - * / // python 2 int --- long (长整型) /获取的是整数 Python3 int---整型 / 获取的浮点数 二进制 --- 就是 ...

  5. C#3.0新增功能01 自动实现的属性

    连载目录    [已更新最新开发文章,点击查看详细] 在 C# 3.0 及更高版本,当属性访问器中不需要任何其他逻辑时,自动实现的属性会使属性声明更加简洁. 它们还允许客户端代码创建对象. 当你声明以 ...

  6. vijos p1304 回文数

    N进制下的加法 2/10/16进制下,char到int的转换 #include<iostream>#include<string>using namespace std;str ...

  7. 从草图绘制到实施交付:优秀API设计完整流程

    设计好的API是一项繁复的工作,但是优秀的设计是可以通过人为规划实现的,在本文中,我们将研究什么是好的设计以及如何在开发过程中实现它,还将介绍API设计的三个重要阶段:草图绘制,原型设计和交付实施,最 ...

  8. Visual Studio 调试(系列文章)

    调试是软件开发过程中非常重要的一个部分,它具挑战性,但是也有一定的方法和技巧. Visual Studio 调试程序有助于你观察程序的运行时行为并发现问题. 该调试器可用于所有 Visual Stud ...

  9. linux初学者-软件安装与管理篇

    linux初学者-软件安装与管理篇 在linux的学习和工作中需要安装许多的软件.在redhat的linux操作系统下,软件一般都是rpm格式的.以下将介绍一些软件安装和管理的内容. 1.软件名称 在 ...

  10. ssm下的CURD

    https://github.com/MenghuiLiu/ssm-curd 以后有更新.... 照着前辈的足迹向前撸