###全局变量与局部变量

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

2、函数内部的变量名如果第一次出现,且出现在=后面,且该变量在全局域中已定义,则这里将引用全局变量,如果该变量在全局域中没有定义,当然会出现“变量未定义”的错误。

3、函数中使用某个变量时,该变量名既有全局变量也有同名的局部变量,则会使用局部变量

4、在函数中,如果想给全局变量赋值,则需要用关键字global生命

NAME="yan" #重复变量命名时,需要规范,一眼就能够看得明白
name="" def info():
global name#把该级当中的局域变量qiao设为全局变量. 若该级局域中没有变量,则该级局域中变量被赋予为全局变量yan 关键字:global
name="qiao"#一级函数体中的局部变量
print(name) info()#函数体中,子程序内包含global所调用的是外置变量
print(NAME)#打印全局变量
print(name)# 此时打印的是被global全局变量赋值为qiao
输出结果:
qiao
yan
qiao

###嵌套def函数

##nonlocal 赋予/被赋予, 该级局域中含有变量,就会出重新赋予上一级局部当中的变量,若该级局域中没有变量,就会被赋予上一级的局域变量)

#这个例中的二级函数体中没有定义变量时出现nonlocal关键字时,该局域中就会被赋予上一级的变量

name = "yan"
def yanzi():
name="yanzi"
def lingyan():
nonlocal name #被赋予上一级变量yanzi
#name="lingyan"
print(name) print(name)
lingyan()#调用第二级自定义的函数 print(name)
yanzi() #调用一级自定义函数时直接输出局部变量 打印结果为:
yan
yanzi
yanzi

##二级函数中的变量与global的使用方法

name = "yan"#
def yanzi():#
name="yanzi"#4.1
def lingyan():#4.2 创建二级函数,函数体创建完成后在内存中储存,等待调用
global name#4.21 把该局部中的变量赋予为全局变量lingyan,关键字global
name="lingyan"#4.22 #二级函数体中的变量 print(name)#4.3
lingyan()#4.4 执行完一级函数体后,调用第二级自定义的函数 print(name)#3 输出一级变量yan
yanzi()#4 调用一级函数时直接输出该函数体当中的变量
print(name)#5 此时的一级变量经过关键字global,更改后被重新赋值为lingyan
'''
打印结果为:
yan
yanzi
lingyan
'''

全局变量&局部变量,global&nonlocal的更多相关文章

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

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

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

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

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

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

  4. python 本地变量和全局变量 locals() globals() global nonlocal 闭包 以及和 scala 闭包的区别

    最近看 scala ,看到了它的作用域,特此回顾一下python的变量作用域问题. A = 10 B = 100 print A #10 print globals() #{'A': 10, 'B': ...

  5. 嵌套函数变量修改nonlocal & 全局变量修改global

    前几天在做一个简单的界面,单击Radiobutton保存字符串,在一个嵌套函数里面修改外部函数.一直不知道怎么修改,上网查了一下,搜关键字“嵌套函数修改变量”,找了好久,才得以解决. 对于python ...

  6. global & nonlocal

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

  7. 函数嵌套定义,闭包及闭包的应用场景,装饰器,global.nonlocal关键字

    函数的嵌套定义 在一个函数的内部定义另一个函数 为什么要有函数的嵌套定义: 1)函数fn2想直接使用fn1函数的局部变量,可以将fn2直接定义到fn1的内部,这样fn2就可以直接访问fn1的变凉了 2 ...

  8. python global nonlocal

    global: 方法之外在modual中的变量定义为全局变量.方法内的变量为局部变量. 一般情况下,全局变量可以被使用,但是不应该被修改,不然会报错. 不过一般不建议对全局变量做修改,如果有多个方法都 ...

  9. 【学习笔记】--- 老男孩学Python,day10, 函数, 动态参数 命名空间\作用域 global nonlocal

    1. 动态参数 位置参数的动态参数: *args 关键字参数的动态参数 : **kwargs 顺序:位置---*args---默认值---**kwargs 在形参上*聚合, **聚合 在实参上*打散, ...

随机推荐

  1. CTF中常见密码题解密网站总结

    0x00.综合 网站中包含大多编码的解码. http://web2hack.org/xssee/ https://www.sojson.com/ http://web.chacuo.net/ 0x01 ...

  2. java配置环境变量,无法也行javac问题

    最近换了公司,搭建开发环境的时候出了点小差错,写篇随笔记录下,下载jdk的时候要选择符合自己电脑的jdk版本,位数. 笔者之前下载的时候没注意下了个32bit的jdk,开发用eclipse的时候打不开 ...

  3. TSQL:A表字段与B表中的关联,关联条件中一列是随机关联的实现方式

    A表字段与B表中的关联,关联条件中一列是随机关联的实现方式 create table test( rsrp string, rsrq string, tkey string, distan strin ...

  4. POJ- 1094 Sorting It All Out---拓扑排序是否唯一的判断

    题目链接: https://vjudge.net/problem/POJ-1094 题目大意: 该题题意明确,就是给定一组字母的大小关系判断他们是否能组成唯一的拓扑序列.是典型的拓扑排序,但输出格式上 ...

  5. [翻译] softmax和softmax_cross_entropy_with_logits的区别

    翻译自:https://stackoverflow.com/questions/34240703/whats-the-difference-between-softmax-and-softmax-cr ...

  6. flask 操作mysql的两种方式-sql操作

    flask 操作mysql的两种方式-sql操作 一.用常规的sql语句操作 # coding=utf-8 # model.py import MySQLdb def get_conn(): conn ...

  7. 【H5-移动端开发】外部唤起本机APP的解决方法

    太长时间没来博客园,原因很简单啊--太懒了!罪过罪过~ 最近公司的APP项目开始运行,采用的是原生框架+内嵌H5页面.作为一个菜鸡前端,开始入手学习移动端的界面制作加载性能优化.由于公司开始推广软件, ...

  8. linux如何安装django

    首先在命令行下输入python 进入界面后先importdjango 如果这一步有错,说明没有django 需要我们安装 源码安装方法: 下载源码包 https://www.djangoproject ...

  9. VueJs 源码解析 (四) initRender.Js

    vueJs 源码解析 (四) initRender.Js 在之前的文章中提到了 vuejs 源码中的 架构部分,以及 谈论到了 vue 源码三要素 vm.compiler.watcher 这三要素,那 ...

  10. [Jsoi2011]分特产

    Description JYY 带队参加了若干场ACM/ICPC 比赛,带回了许多土特产,要分给实验室的同学们. JYY 想知道,把这些特产分给N 个同学,一共有多少种不同的分法?当然,JYY 不希望 ...