# 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. docker 基本操作

    # 常用命令   docker run 镜像   docker images 查看所有镜像   docke ps  查看运行中的容器 docker ps -a 列出所有容器     docker st ...

  2. Ugly Number leetcode java

    问题描述: Write a program to check whether a given number is an ugly number. Ugly numbers are positive n ...

  3. 三大平衡树(Treap + Splay + SBT)总结+模板[转]

    Treap树 核心是 利用随机数的二叉排序树的各种操作复杂度平均为O(lgn) Treap模板: #include <cstdio> #include <cstring> #i ...

  4. java旅程(二) 基本语法

    java变量: 数值型        整数类型(byte,short,int,long)浮点类型(float,double) 字符型 char 基本数据类型                       ...

  5. 牛客网 PAT 算法历年真题 1001 : A+B和C (15)

    1001 : A+B和C (15) 时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard 题目描述 给定区间[-2的31次方, 2的31次方]内 ...

  6. GsonFormat根据返回值json快速构建Model

    Json是一个插件,我们只需要在Android studio中进行安装一下,即可使用. 根据平时的操作,根据浏览器中返回中的数据一行一行敲,其实这样非常麻烦. 有一个简单的方法,可以瞬间生成一个实体类 ...

  7. python 利用turtle库绘制五角星

    # -*- coding: utf-8 –*-import turtleimport math def draw_polygon(aTurtle, size=50, n=3): for i in ra ...

  8. HTTP上传数据 :表单,二进制数据(multipart/form-data application/octet-stream boundary)

    使用WinINet 一个较简单的例子:上传头像 void CBackstageManager::UpdateAvatarThreadProc(LPVOID params) { stForThread* ...

  9. laravel中的登录页面逻辑

    <?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades ...

  10. laravel创建新的提交数据

    public function store() { $this->validate(request(),[ 'title'=>'required|string|max:100|min:10 ...