python global和nonlocal用法解析

这篇文章主要介绍了python global和nonlocal用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

◆global和nonlocal是Python的两个重要变量作用域关键字

1.global用在全局变量,应用场景:

变量定义在函数外部的时候,如果函数里面想改变这个全局变量的值,需要在当前的引用函数里面重新定义一个变量 并用关键字global修饰。

例如:

a=1

def b():

a+=1

print(a)

b()

用ide写完这段代码的时候,还没运行就会报红线提示错误,运行之后产生错误,错误内容为:UnboundLocalError: local variable 'a' referenced before assignment。

解决方案:函数中重新声明变量并加修饰符global修改:

#!/usr/bin/env python

# encoding: utf-8

a=1

def b():

global a

a+=1

print(a)

b()

2.nonlocal非全局变量,应用场景:

在函数的函数里面使用函数的变量。表达的可能有点混乱,看代码就知道了

#!/usr/bin/env python

# encoding: utf-8

def b():

num2=1

def c():

nonlocal num2#为了修改非全局变量

num2+=2

print(num2)

return c

b()()

3.综合应用

#!/usr/bin/env python

# encoding: utf-8

gcount = 0

def global_test():

global gcount

s=0

def g():

nonlocal s

s+=2

print(s)

return g

gcount+=1

print (gcount)

global_test()()

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

时间: 2020-02-03

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

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) 结果

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

前言 这几天去面试,多次碰到同一个知识点.而且有一次面试挺有趣的,是关于小程序的.共有3个问题. 1.小程序中Page.watch()方法是做什么用的? 2.小程序中如何在其他页面中监听到globalData中值的变化? 3.如果在app.js执行登录部分的代码,由于时序问题,如何处理其他页面请求时未获取到身份识别标记的情况.(session,userid等).(大意是:怎么能够保证其他页面请求是在登录之后?) 知识点 有经验的同学可能一下子就看出来了,这其实说的是同一个东西,那就是Object

本文实例讲述了PHP global全局变量的使用与注意事项.分享给大家供大家参考,具体如下: 使用global在方法里面声明外部变量为全局变量,即可以调用该变量. 示例1. global基本用法 <?php $a=1; $b=2; test_global(); function test_global() { global $a,$b; echo $a+$b; //输出3 } 示例2. global引用 <?php $var $a=1; function test(){ global $a;

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

本文实例讲述了ES6顶层对象.global对象.分享给大家供大家参考,具体如下: 顶层对象 顶层对象,在浏览器环境指的是window对象,在Node指是的global对象.ES5之前中,顶层对象的属性与全局变量是等价的. window.a = 1; a // 1 a = 2; window.a // 2 上面的代码中,顶层对象的属性赋值和全局变量的赋值,是同一件事. ES6规定,var命令和function命令声明的全局变量,依旧是顶层对象的属性:let命令.const命令.class命令声明的

一.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 解析

本文实例讲述了JavaScript内置对象math,global功能与用法.分享给大家供大家参考,具体如下: 学习要点: 1.Global对象 2.Math对象 ECMA-262对内置对象的定义是:"由ECMAScript实现提供的.不依赖宿主环境的对象,这些对象在ECMAScript程序执行之前就已经存在了."意思就是说,开发人员不必显示地实例化内置对象:因为它们已经实例化了.ECMA-262只定义了两个内置对象:Global和Math. 一.Global对象 Global(全局)对

一. 类与对象 在 JavaScript世界里,关于面向对象第一个要澄清的概念就是类.对象都是由类来定义的,通过类来创建对象就是我们所熟悉的实例化.然而,在 JavaScript中别没有真正的类,对象的定义就是对象自身.而 ECMA-262 干脆把这种妥协的方式称作为对象的调和剂.为了方便理解,我通常把这个发挥类的作用的调和剂称为类. Javascript内置对象学习 全局属性 Infinity 表示正无穷大的数值 NaN 非数字值 undefined 未定义的值 decodeURI() 对en

1.indexOf() 方法 -----这个方法比较常用 返回某个指定的字符串值在字符串中首次出现的位置 使用格式:stringObject.indexOf(substring, startpos) 举个例子:寻找第二个o所在的位子 var mystr="Hello World!" document.write(mystr.indexOf("o",mystr.indexOf("o")+1));--------结果是:7 mystr.indexOf

数组的创建方式: 1.字面量: 放置一个数值时,就是一个数据. var arr = [6]; 2.构造函数: 放置一个数据时,表示长度或数据的个数,空表示undefined. var arr = new Array(6); 建议:Array作为构造函数,行为很不一致.因此,不建议使用它生成新数组,直接使用数组字面量是更好的做法. 数组的操作: 1.push(); 用于在数组的末端添加一个或多个元素,并返回添加新元素后的数组长度. 注意,该方法会改变原数组 var arr = [1,2,3]; c

属性: constructor 所建立对象的函数参考 prototype 能够为对象加入的属性和方法 E 欧拉常量,自然对数的底(约等于2.718) LN2 2的自然对数(约等于0.693) LN10 10的自然对数(约等于2.302) LOG2E 以2为底的e的对数.(约等于1.442) LOG10E 以10为底的e的对数(约等于0.434) PI ∏的值(约等于3.14159) SQRT1_2 1/2(0.5)的平方根(即l除以2的平方根,约等于o.707) SQRT2 2的平方根(约等于1

一.什么是argumentsarguments 是是JavaScript里的一个内置对象,它很古怪,也经常被人所忽视,但实际上是很重要的.所有主要的js函数库都利用了arguments对象.所以agruments对象对于javascript程序员来说是必需熟悉的.所有的函数都有属于自己的一个arguments对象,它包括了函所要调用的参数.他不是一个数组,如果用typeof arguments,返回的是'object'.虽然我们可以用调用数据的方法来调用arguments.比如length,还有

本文实例讲述了javascript自定义事件功能与用法.分享给大家供大家参考,具体如下: 概述 自定义事件很难派上用场? 为什么自定义事件很难派上用场,因为以前js不是模块化开发,也很少协作.因为事件本质是一种通信方式,是一种消息,只有存在多个对象,多个模块的情况下,才有可能需要用到事件进行通信.而现在有了模块化之后,已经可以使用自定义事件进行各模块间协作了. 哪里用得到自定义事件? 事件本质是一种消息,事件模式本质上是观察者模式的实现,那么用得上观察者模式的地方,自然也可以也可以用上事件模式.

本文实例讲述了es6中Promise 对象基本功能与用法.分享给大家供大家参考,具体如下: Promise 是异步编程的一种解决方案,解决--回调函数和事件 ES6 规定,Promise对象是一个构造函数,用来生成Promise实例. 下面代码创造了一个Promise实例. 基本用法 ES6 规定,Promise对象是一个构造函数,用来生成Promise实例. const promise = new Promise(function(resolve, reject) { //resolve (d

本文实例讲述了javascript闭包功能与用法.分享给大家供大家参考,具体如下: 理解闭包 闭包这个东西,确实是很麻烦.之前我自己的理解也是有一点误差,所以今天将文章修改修改,争取将自己的理解进一步准确化. 闭包说得通熟易懂一点,就是指有权访问另一个函数作用域的变量的函数.创建闭包的常见方式,就是在一个函数内部创建另外一个函数,并返回. 我们这里举一个例子来说明,首先我们在函数f1内部定义一个函数f2. function f1(){ var n=999; function f2(){ aler

本文实例讲述了JavaScript对象拷贝与Object.assign用法.分享给大家供大家参考,具体如下: 深拷贝与浅拷贝 在 JavaScript 中,对于基本数据类型(undefined.null.boolean.number.string)来说,在变量中存储的就是这个变量本身的值,复制是对值的复制,不存在深浅之说.但C系语言的共同特点中有,存储引用类型(对象),实际中在变量里存的是它的地址.因此对 JavaScript 中的复杂数据类型(object)来说,也会有浅拷贝和深拷贝的概念:浅

python global和nonlocal_python global和nonlocal用法解析相关推荐

  1. python global和nonlocal用法解析

    这篇文章主要介绍了python global和nonlocal用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 global和nonlocal ...

  2. python nonlocal的用法_python global和nonlocal用法解析

    这篇文章主要介绍了python global和nonlocal用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 ◆global和nonloca ...

  3. python global和nonlocal_Python Global和Nonlocal的用法

    nonlocal 和 global 也很容易混淆.简单记录下自己的理解. 解释 global 总之一句话,作用域是全局的,就是会修改这个变量对应地址的值. global 语句是一个声明,它适用于整个当 ...

  4. python中plotly绘制树地图_聚类分析python画树状图--Plotly(dendrogram)用法解析 - 人人都是架构师...

    1.前言 聚类分析是机器学习和数据分析中非常常见的分类方法, 当我们用到层次聚类(系统聚类)时,最常用的分析方法就是绘制树状图, 比较常见的统计软件像SPSS.SAS.R等都可以直接绘制树状图,比较简 ...

  5. python中curve fit_scipy.optimize.curve_fit函数用法解析

    在日常数据分析中,免不了要用到数据曲线拟合,而optimize.curve_fit()函数正好满足你的需求 scipy.optimize.curve_fit(f,xdata,ydata,p0=None ...

  6. Python dataframe.pivot()用法解析

    python pandas 库的dataframe pivot()函数用法解析: 简而言之,我理解的pivot()的用途就是,将一个dataframe的记录数据整合成表格(类似Excel中的数据透视表 ...

  7. python绘制饼状图图例_python matplotlib饼状图参数及用法解析

    这篇文章主要介绍了python matplotlib饼状图参数及用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在python的matplo ...

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

    1.前言 第一,两者的功能不同.global关键字修饰变量后标识该变量是全局变量,对该变量进行修改就是修改全局变量,而nonlocal关键字修饰变量后标识该变量是上一级函数中的局部变量,如果上一级函数 ...

  9. python global和nonlocal_python中的global和nonlocal

    local变量 与其它的编程语言相同,在函数中声明的变量都是local变量.作用域仅限于函数中,从函数外是访问不到的. In [1]: def f(): s = 'local val' print(' ...

最新文章

  1. 论COSPLAY / 谨以此文纪念我暂短的Cos生涯
  2. C#中Attribute的继承
  3. matlab中tenmat,tensor_toolbox_2.5 2014最新的张量的工具包, 中包含了各种 函数。 matlab 238万源代码下载- www.pudn.com...
  4. python实现文件加密
  5. 熟练掌握git撤销命令
  6. VFP中轻松绑定 Windows 事件
  7. java代码中获取classpath路径
  8. java设计思想和设计模式,快来收藏!
  9. linux基本命令总结
  10. 数据源大盘点 | 你们要的数据源都在这儿了84个!(保持更新,建议收藏)
  11. c 语言字符串查找替换,c ++ - 如何在标准字符串中搜索/查找和替换?
  12. C#使用西门子S7 协议读写PLC DB块
  13. 网站优化和SEO的差别
  14. Games101----Transformation(2)
  15. excel导入mysql并批量查询_Excel导入MySql数据库批量操作
  16. 使用 openpyxl 在 Excel 电子表格中自动执行日常任务
  17. 智能交通车路协同系统的应用场景和发展趋势
  18. testng执行参数_TestNG参数化测试
  19. C#按比例缩放窗体控件及字体
  20. 推荐一个李建忠老师创办的网站 -- Boolan(关注经典技术书籍)

热门文章

  1. 黑客攻击云盘关闭 魅族用户体验接连被吐槽
  2. linux 提取网卡驱动,韦东山-Linux下移植wifi网卡驱动(RTL8723) - 百问网嵌入式问答社区...
  3. 水晶球:吉姆.罗杰斯和他的投资预言
  4. mysql表锁机制详解
  5. 基于msm8909调试mcp2515 can芯片
  6. Python进阶之路 静态方法和类方法
  7. Windows下使用ffmpeg采集音频视频
  8. 便携式明渠流量计有哪几种呢?
  9. Linux 端口打开 关闭
  10. DOM操作总结  (。♥ᴗ♥。) 哇!!