关于 global nonlocal 用法
# 1 关于 globals() locals() nolocl 还有内置函数的引用
#
# 概念的解释
# 命名空间
# 1 局部命名空间:每一个函数都有自己的命名空间
# 2 全局命名空间:写在函数外的变量名
# 3 内置命名空间:pythong 解释器启动之后就可以使用的名字
#
# 作用域: 一个名字使用的的区域
# 全局作用域: 内置命名空间和全局命名空间的名字统称全局作用域
# 局部作用域:局部空间的名字属于局部作用域
#
# 局部作用域可以使用全局作用域的变量 ,而全局作用域不能使用局部作用域的变量
# 局部作用域还可以嵌套更小的局部作用域
#
# 作用链 小作用域可以使用大作用域的变量,但是作用链是单向的,不能反向应用
# globals() 保存了全局作用域的名字和值,尽量避免
# ,locals() 中的内容会根据执行位置来决定作用域中的内容 如果在全局执行 和globals() 一样
# nonlocal x 修改最近拥有该变量的外层函数 不影响全局
---------
# 1题
# def func():
# print(1)
# def func():
# print(2)
# func()
# 答案 是 2 原因第一个函数被覆盖
--------
# # 2题 ???? 改变全局第一个是为改变之前的 其它 会改变全局
# n = 1
# def func():
# global n
# n = n +1
# print(n)
# print(n)
# func()
# print(n)
---------
# 4题 nonlocal 引用最近上一层的变量 全局不变 y 改变继承父级爷爷级
# n = 1
# def func1():
# n = 2
# def func2():
# nonlocal n
# n+=1
# print(n)
# func2()
# func1()
# print(n)
# 答案 是 3 , 1 原因第一个函数被覆盖
---------
# 5题 global 改变全局 n是全局的变量 全局为n =2
# n = 1
# def func1():
# n = 2
# def func2():
# global n
# n+=1
# print(n)
# func2()
# func1()
# print(n)
# 答案 2 2
---------
# 6题 带上传参数不能改变全局,能改变局部因为局部有参数变量
# a = 1
# def func(a):
# a+=1
# print(a)
# func(a)
# print(a)
# 答案 2 ,1
---------
# 题目
# n = []
# def func():
# n.append(1)
# print(n)
# print(n)
# func()
# print(n)
# 答案 是 [] ,[1] ,[1] 列表可修改 可变类型 和上传参数不一样
关于 global nonlocal 用法的更多相关文章
- Day 10 动态参数&名称空间,局部全部.函数嵌套&global nonlocal关键字.
一.动态参数#形参 有3种动态参数#*args 动态参数,不定长参数def func (*args): print(args,type(args))func(1,2,"alex", ...
- python函数知识二 动态参数、函数的注释、名称空间、函数的嵌套、global,nonlocal
6.函数的动态参数 *args,**kwargs:能接受动态的位置参数和动态的关键字参数 *args -- tuple *kwargs -- dict 动态参数优先级:位置参数 > 动态位置参数 ...
- python中global的用法——再读python简明教程
今天看了知乎@萧井陌的编程入门指南,想重温一下 <python简明教程>,对global的用法一直不太熟练,在此熟练一下,并实践一下python中list.tuple.set作为参数的区别 ...
- python-函数-动态传参,作用域的问题,函数嵌套,global nonlocal
⼀. 函数参数--动态传参 之前我们说过了传参, 如果我们需要给⼀个函数传参, ⽽参数⼜是不确定的. 或者我给⼀个 函数传很多参数, 我的形参就要写很多, 很⿇烦, 怎么办呢. 我们可以考虑使⽤动态参 ...
- 动态参数 名称空间 作用域 作用域链 加载顺序 函数的嵌套 global nonlocal 等的用法总结
03,动态参数 *args,**kwargs # 用户传入到函数中的实参数量不定时,或者是为了以后拓展,# 此时要用到动态参数*args,**kwargs(万能参数.)# *args接收的是所有的位置 ...
- python中global和nonlocal用法的详细说明
一.global 1.global关键字用来在函数或其他局部作用域中使用全局变量.但是如果不修改全局变量也可以不使用global关键字. gcount = 0 def global_test(): ...
- Python开发【第十二篇】python作用域和global nonlocal
python的作用域 作用域也叫名字空间,是访问变量时查找变量名的范围空间 python中的四个作用域 LEGB 作用域 英文解释 英文缩写 局部作用域 Local(function) L 外部嵌套函 ...
- global & nonlocal
name = "A" def test(): name = "B" def test2(): global name # global 指的是拿到的是全局的变量 ...
- 全局变量&局部变量,global&nonlocal
###全局变量与局部变量 1.函数内部的变量名如果第一次出现,且出现在=前面,即被视为定义一个局部变量,不管全局域中有没有用到该变量名,函数中使用的将是局部变量 2.函数内部的变量名如果第一次出现,且 ...
随机推荐
- Django ModelForm 组件的应用
ModelForm组件的应用 ModelForm 组件的创建: 1.创建一个类,该类继承 forms.ModelForm 2.大致组成部分 class ModelNameModelForm(form ...
- spring boot(十四)shiro登录认证与权限管理
这篇文章我们来学习如何使用Spring Boot集成Apache Shiro.安全应该是互联网公司的一道生命线,几乎任何的公司都会涉及到这方面的需求.在Java领域一般有Spring Security ...
- php7配置多线程
1.下载pthreads 文件 http://windows.php.net/downloads/pecl/releases/pthreads/3.1.5/ 2.把 pthreadVC2.dll ...
- 稳定获取Android设备唯一码(UUID)的解决方案
最近做的一个项目中需要用到Android设备唯一码(UUID)来标识一台设备, Android中设备唯一码有很多,如:MAC地址.IMEI号(DeviceId).IMSI号.ANDROID_ID.序列 ...
- 创建型模式篇(单例模式Single Pattern)
一.单例模式(Singleton Pattern) 单例模式要求一个类只能有一个实例,并且提供了一个全局的访问点. 比如说,中国主席的职位是Singleton,法律规定主席选举,任何时间只能有一个主席 ...
- 从tcp的角度看,打开一个网页到底发生了什么
使用wireshark进行抓包分析:新建表达式过滤器,选择协议,字段,匹配方式,应用就能筛选出想要的数据包. 一个示例:(tcp.srcport == 1523 or tcp.dstport == 1 ...
- !important 的绝对控制样式
<head> <style type="text/css"> div{background-color: blue !important;} </st ...
- win7下使用U盘安装双系统(Ubuntu-17)
1.首先下载Ubuntu镜像文件,下载地址:http://mirrors.neusoft.edu.cn/ 2.下载 U盘操作系统安装工具- Universal USB Installer ,下载地址: ...
- Oracle.练习题
2018-07-31 ---练习3 ---创建sporter表 create table sporter( sporterid ) constraint sport_id primary key, s ...
- Win10系列:VC++ XML文件解析
XML文件按照元素标记来存储数据,通过遍历这些元素标记可以得到XML文件中所保存的数据.在C++/CX的类库中并未定义用于解析XML文件的类,但C++提供了能解析XML文件的框架和类库,如msxml4 ...