# 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 用法的更多相关文章

  1. Day 10 动态参数&名称空间,局部全部.函数嵌套&global nonlocal关键字.

    一.动态参数#形参 有3种动态参数#*args 动态参数,不定长参数def func (*args): print(args,type(args))func(1,2,"alex", ...

  2. python函数知识二 动态参数、函数的注释、名称空间、函数的嵌套、global,nonlocal

    6.函数的动态参数 *args,**kwargs:能接受动态的位置参数和动态的关键字参数 *args -- tuple *kwargs -- dict 动态参数优先级:位置参数 > 动态位置参数 ...

  3. python中global的用法——再读python简明教程

    今天看了知乎@萧井陌的编程入门指南,想重温一下 <python简明教程>,对global的用法一直不太熟练,在此熟练一下,并实践一下python中list.tuple.set作为参数的区别 ...

  4. python-函数-动态传参,作用域的问题,函数嵌套,global nonlocal

    ⼀. 函数参数--动态传参 之前我们说过了传参, 如果我们需要给⼀个函数传参, ⽽参数⼜是不确定的. 或者我给⼀个 函数传很多参数, 我的形参就要写很多, 很⿇烦, 怎么办呢. 我们可以考虑使⽤动态参 ...

  5. 动态参数 名称空间 作用域 作用域链 加载顺序 函数的嵌套 global nonlocal 等的用法总结

    03,动态参数 *args,**kwargs # 用户传入到函数中的实参数量不定时,或者是为了以后拓展,# 此时要用到动态参数*args,**kwargs(万能参数.)# *args接收的是所有的位置 ...

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

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

  7. Python开发【第十二篇】python作用域和global nonlocal

    python的作用域 作用域也叫名字空间,是访问变量时查找变量名的范围空间 python中的四个作用域 LEGB 作用域 英文解释 英文缩写 局部作用域 Local(function) L 外部嵌套函 ...

  8. global & nonlocal

    name = "A" def test(): name = "B" def test2(): global name # global 指的是拿到的是全局的变量 ...

  9. 全局变量&局部变量,global&nonlocal

    ###全局变量与局部变量 1.函数内部的变量名如果第一次出现,且出现在=前面,即被视为定义一个局部变量,不管全局域中有没有用到该变量名,函数中使用的将是局部变量 2.函数内部的变量名如果第一次出现,且 ...

随机推荐

  1. Django admin 管理工具

    admin 组件的使用 Django 提供了基于 web 的管理工具.Django 自动管理工具是 django.contrib 的一部分. INSTALLED_APPS = [ 'django.co ...

  2. chrome 自动加载flash

    class Login(unittest.TestCase): #初始 def setUp(self): chromeOpitons = Options() prefs = { # "pro ...

  3. Ant Design 日期选择组件RangePicker 选择时间范围后计算范围内的天数。

    /** *需求:同年同月,同年不同月(两个月相减大于1,小于1),不同年(两个年相减大于1(是否为闰年),小于1),起止包含的月份及天 */ //首先引入组件 import { DatePicker} ...

  4. 导出csv文件数字会自动变科学计数法的解决方法

    其实这个问题跟用什么语言导出csv文件没有关系.Excel显示数字时,如果数字大于12位,它会自动转化为科学计数法:如果数字大于15位,它不仅用于科学技术费表示,还会只保留高15位,其他位都变0.解决 ...

  5. leetcode-algorithms-4 Median of Two Sorted Arrays

    leetcode-algorithms-4 Median of Two Sorted Arrays There are two sorted arrays nums1 and nums2 of siz ...

  6. SET构造函数

    set<int,greater<int>> S; 可以在第二个参数位置设置比较模板,效果和sort类似,less表示升序,greater表示降序.这样做的好处是为了方便应对题目 ...

  7. asm ftp utilty and usage

    Oracle 11g ASM supports ASM FTP, by which operations on ASM files and directories can be performed s ...

  8. 关于Oracle RAC中SCN原理和机制的探索

    今天看书时看到了关于RAC中SCN的问题,为了进一步搞清楚其内部原理和机制,对该问题进行了广泛的查阅和搜索,遗憾的是,可以参考的资料很少,网上大部分是人云亦云的帖子,其中,详细介绍其内部原理和机制的资 ...

  9. java中一对多 关联建表

    我们以银行卡为例:一个人可以对应多张银行卡.多个银行卡对应着一个人. /** 银行卡持有者 **/ class CardsOwner { private String name;    //名字 pr ...

  10. ajax常见的面试问题

    1:什么是ajax?ajax作用是什么? 异步的javascript和xml AJAX 是一种用于创建快速动态网页的技术. ajax用来与后台交互 2:原生js ajax请求有几个步骤?分别是什么 / ...