嵌套函数变量修改nonlocal & 全局变量修改global
前几天在做一个简单的界面,单击Radiobutton保存字符串,在一个嵌套函数里面修改外部函数。一直不知道怎么修改,上网查了一下,搜关键字“嵌套函数修改变量”,找了好久,才得以解决。
对于python 3来说
nonlocal:
嵌套函数中内部函数修改外部变量的值
没有加该关键字是不能修改的:
def outside():
a = 'a'
def inside():
a = 'b'
print(a)
inside()
print(a)
outside()
b
a
加关键字后是这样(不能 nonlocal a = 'b'):
def outside():
a = 'a'
def inside():
nonlocal a
a = 'b'
print(a)
inside()
print(a)
outside()
b
b
global:
函数内部修改全局变量的值
a = 'a'
def test():
global a
a = 'b'
print(a)
test()
print(a)
b
b
如果外部数据类型是列表,append后可直接改变外部变量:
def test():
a.append('A')
print(a)
test()
print(a)
['A']
['A']
列表的情况在嵌套函数也一样。
嵌套函数变量修改nonlocal & 全局变量修改global的更多相关文章
- Python全栈工程师(函数嵌套、变量作用域)
ParisGabriel 感谢 大家的支持 每天坚持 一天一篇 点个订阅 ...
- python 使用嵌套函数报local variable xxx referenced before assignment或者 local variable XXX defined in enclosing scope
情况一: a 直接引用外部的,正常运行 def toplevel(): a = 5 def nested(): print(a + 2) # theres no local variable a so ...
- python27期day10:函数的动态参数、函数的注释、函数的名称空间、函数的嵌套、global(修改全局的)、nonlocal(修改局部的)、函数名的第一类对象及使用、作业题。
1.动态参数的作用: 能够接收不固定长度参数 位置参数过多时可以使用动态参数 * args是程序员之间约定俗称(可以更换但是不建议更换) * args获取的是一个元组 ** kwargs获取的是一个字 ...
- pythong中的全局变量的调用和嵌套函数中变量的使用
全局变量调用:想要在自定义的函数中使用全局变量,就得要在函数用关键字global声明,然后就可以对全局变量进行修改.嵌套函数中的变量的调用:要在嵌套的变量中,使用nonlocal的声明'''num = ...
- python学习-day15:局部变量与全局变量、嵌套函数、递归
一.全局变量与局部变量 在子程序中定义的变量称为局部变量, 在程序的一开始定义的变量称为全局变量. 全局变量作用域是整个程序,局部变量作用域是定义该变量的子程序.当全局变量与局部变量同名时:在定义局部 ...
- 全局变量&局部变量,global&nonlocal
###全局变量与局部变量 1.函数内部的变量名如果第一次出现,且出现在=前面,即被视为定义一个局部变量,不管全局域中有没有用到该变量名,函数中使用的将是局部变量 2.函数内部的变量名如果第一次出现,且 ...
- python list类型的变量相当于全局变量 可以被函数与类引用
python list类型的变量相当于全局变量 可以被函数与类引用
- 环境变量、block、修饰符:block对环境变量的引用和修改需要通过修饰符来限定
环境变量.block.修饰符:block对环境变量的引用和修改需要通过修饰符来限定. http://www.cnblogs.com/fengmin/p/5816580.html - (NSUInteg ...
- Jmeter——变量嵌套函数使用(__V)案例分析
jmeter版本:5.3 __V官方函数解释: (https://jmeter.apache.org/usermanual/functions.html#__V) 图1-1 解决问题:实现字符串拼接 ...
随机推荐
- shell脚本编写informix数据库中表的导入和导出
表的导入: 第一行:是指此脚本使用/bin/bash来解释执行. 第四行:定义一个list,里面存放表的名称,之间用空格隔开. 第七行:dbaccess tofpe(数据库名) <<EOF ...
- dpkg: error: dpkg status database is locked by another process
First run: lsof /var/lib/dpkg/lock Then make sure that process isn't running: ps cax | grep PID If i ...
- CDH版本的hadoop下载
http://archive.cloudera.com/cdh5/cdh/5/加要下载的cdh版本插件 例如: http://archive.cloudera.com/cdh5/cdh/5/zooke ...
- 20175316盛茂淞 2018-2019-2 《Java程序设计》第3周学习总结
20175316盛茂淞 2018-2019-2 <Java程序设计>第3周学习总结 教材学习内容总结 1.1.编程语言的几个发展阶段: 面向机器语言 面向过程语言 面向对象语言 2.1.类 ...
- ActiveMQ_4SpringBoot整合
SpringBoot实现 引入jar包 <dependency> <groupId>org.springframework.boot</groupId> ...
- windows 函数
数组清零 ::ZeroMemory(首地址,大小);
- python基本数据类型之字符串(三)
python基本数据类型之字符串(三) 转换和判断方法 在python中,有一些内置方法可以将字符串转化特定形式,而与之对应的一些方法可以判断字符串是否符合某些形式.因此,在这篇文章中,笔者把转换方法 ...
- Runtime之成员变量&属性&关联对象
上篇介绍了Runtime类和对象的相关知识点,在4.5和4.6小节,也介绍了成员变量和属性的一些方法应用.本篇将讨论实现细节的相关内容. 在讨论之前,我们先来介绍一个很冷僻但又很有用的一个关键字:@e ...
- 【BZOJ】 Hash Killer I II III
前言 这里只是一个整理... Solution Hash Killer I Hash Killer II
- dwr学习(一):简单dwr实例
博客分类: dwr 最近写ajax写烦了,想着能不能有个更简单的“ajax”,一问就问到这个dwr了.赶紧去官网学习了下,这里写个博客记录一下实例. 测试环境:tomcat6.0 1.新建一个w ...