一、局部变量与全局变量

1. 例子:

name='lhf'
def yangjian():global namename='东方今典'print('我要',name)
def shizhengwen ():global namename='sssssss'print('我要',name)
yangjian()
shizhengwen()

输出结果:

2.如果将上述代码yangjian()和shizhengwen()

颠倒顺序:

name='lhf'
def yangjian():global namename='东方今典'print('我要',name)
def shizhengwen ():print('我要',name)shizhengwen()yangjian()

则根据“从上到下”的执行顺序,输出结果为:

3.总结例子:

例1:

name='产品经理'
def yangjian():global name  #已经声明name=产品经理 是全局变量print('我要搞',name)name='小东北'  #修改全局变量为小东北print('我要搞',name)
def shizhengwen ():name='史政文'print('我要搞',name)
yangjian()
shizhengwen()#输出结果:
#我要搞 产品经理
#我要搞 小东北
#我要搞 史政文
#如果函数的内容里面没有global关键字,优先读取里面的的局部变量,如果没有局部变量则只能读取全局变量。而且无法对全局变量进行赋值操作(如:name='史珍香'),但是对于可变对象(如列表),则可以对其内部元素进行操作,如(.append)
#如果函数里面有global关键字,那么后面的name本质上就是全局变量,可以读取,可以赋值

例2:

如果函数的内容里面没有global关键字,优先读取里面的的局部变量,如果没有局部变量则只能读取全局变量。而且无法对全局变量进行赋值操作(如:name='史珍香'),但是对于可变对象(如列表),则可以对其内部元素进行操作(如.append)
name=['产品经理','廖博士']
def qupengfei():name.append('田振龙')print('我要搞',name)
qupengfei()

输出结果:

二、全局变量、局部变量与函数的嵌套:例1:
name='海风'
def huangwei():name='黄伟'print(name)def liuyang ():name='刘洋'print(name)def nulige():name='沪指花'print(name)print(name)nulige()liuyang()print(name)huangwei()#输出结果:
#黄伟
#刘洋
#刘洋
#沪指花
#黄伟

解析:!!!!!

例2:

name='刚娘'
def weihou():name='陈卓'def weiweihou():global namename='冷静'weiweihou()print(name)
print(name)
weihou()
print(name)

获得结果:刚娘,陈卓,冷静

例3:引入nonlocal ——代指上一级的变量:

name='刚娘'
def weihou():name='陈卓'def weiweihou():nonlocal  name  ####name='冷静'weiweihou()print(name)
print(name)
weihou()
print(name)

输出结果:刚娘,冷静,刚娘

三、简单的复习:

1.

name='alex'
def change_name():global namename='lhf'print(name)#输出结果:输出不了结果,但是不报错

2.

name='alex'
def change_name():global namename='lhf'print(name)change_name()#输出结果:lhf

3.

name='alex'
def change_name():global namename='lhf'print(name)def foo():name='wu'print(name)foo()change_name()#输出结果:lhf
#         wu

4.

name='alex'
def change_name():global namename='lhf'print(name)def foo():# name='wu'print(name)foo()change_name()#输出结果:lhf
#         lhf

在例4中,当foo执行的时候,发现自己的作用域之中没有name,于是按照顺序向上借name,离他最近的name就是change_name函数的作用域里面的规定的global name ‘lhf’,于是第二个打印的就是lhf!!!!

5.

name='alex'
def change_name():# global name# name='lhf'# print(name)def foo():# name='wu'print(name)foo()change_name()#输出结果:alex

6.

name='alex'
def change_name():# global name# name='lhf'# print(name)name='aaa'def foo():# name='wu'print(name)foo()change_name()#输出结果:aaa

7.

name='alex'
def change_name():# global name# name='lhf'# print(name)name='aaa'def foo():# name='wu'
        nonlocal nameprint(name)foo()change_name()#输出结果:aaa

8.

name='alex'
def change_name():# global name# name='lhf'# print(name)name='aaa'def foo():# name='wu'
        nonlocal namename='bbb'print(name)foo()change_name()#输出结果:bbb

9.

name='alex'
def change_name():# global name# name='lhf'# print(name)name='aaa'def foo():# name='wu'
        nonlocal namename='bbb'print(name)foo()print(name)change_name()#输出结果:bbb
#        bbb

转载于:https://www.cnblogs.com/lijialun/p/10104790.html

2018.12.11——全局变量与局部变量相关推荐

  1. 窗体 局部变量转换为全局_Unity 热更新解决方案 学习笔记(12)Lua 全局变量和局部变量...

    笔者只是一位刚大三的学生本文章仅为学习笔记,非专业教程,仅供参考和学习交流!!! 如有错误或更好的方案欢迎指出和探讨!!! 全局变量 顾名思义,其生命有效期是全局的,整个lua文件中都可以使用,可以在 ...

  2. 2018.12.11 区块链论文翻译

    BSSSQS: A Blockchain Based Smart and Secured Scheme for Question Sharing in the Smart Education Syst ...

  3. 《惢客创业日记》2018.12.11(周二) 创业者从0到1的10个阶段(二)

    昨天,把创业从0到1的十个阶段列了出来,今天,继续分享我的创业体会,也就是对创业从0到1每一个阶段的理解. 今天先聊聊创业0.1阶段:点子阶段 点子,也是创业者为什么要创业的一个动机,说的高大上一点叫 ...

  4. 2018年11月总结,12月计划

    2018年11月总结,12月计划 11月总结 书籍 <浪潮之巅> <Spring 微服务实战> <Spring Cloud 微服务实战> <安德的游戏> ...

  5. python编程入门与案例详解-quot;Python小屋”免费资源汇总(截至2018年11月28日)...

    原标题:"Python小屋"免费资源汇总(截至2018年11月28日) 为方便广大Python爱好者查阅和学习,特整理汇总微信公众号"Python小屋"开通29 ...

  6. python3 全局变量 局部变量_python3 函数传参练习 全局变量与局部变量 的理解

    额 还是继续抄一边NLP第二条: 2.一个人不能控制另外一个人 一个人不能改变另外一个人,一个人只能改变自己. 每个人的信念,价值观,规条系统只对本人有效,不应强求别人接守. 改变自己,别人才会有可能 ...

  7. 全局变量_Python函数中的全局变量与局部变量

    # a,b变量是全局变量,在整个py文件中都可以访问 a = 11 b = 12 # 定义一个函数 def first(): # 这个变量是函数内部定义的变量,属于局部变量,只能在函数中使用 c = ...

  8. 全局变量和局部变量笔记

    一般全局变量用大写来表示,局部变量用小写容易区分 全局变量和局部变量如果在全局变量不大写和局部变量一样小写很容易蒙圈的 name = "eason"def change_name( ...

  9. Python 全局变量和局部变量

    这篇文章主要介绍了Python 全局变量和局部变量,命名空间的概念的提出是为了划分和控制变量是否可见,以及生存周期的长短:命名空间的作用范围叫做作用域更多详细内容需要的小伙伴可以参考一下 1.命名空间 ...

最新文章

  1. 华为手机如何升级鸿蒙系统_能运行EMUI 11才能升级到鸿蒙2.0,只有这些手机能升级,有你的吗...
  2. 201521123108《Java程序设计》第14周学习总结
  3. 关于MonoDevelop自动缩进的设置
  4. 反汇编RETN 0x0c的理解
  5. wien2k 2009 编译方法
  6. 【Python基础知识-pycharm版】第五节-字典\集合
  7. 聊聊天,如果能重来,还干不干程序员?
  8. 集设作品灵感|App夜间模式如何设计?
  9. Oracle 11g EM安全证书问题无法访问的解决办法
  10. 算法导论的道与术、工程师思维奠定能走多远
  11. Echarts地图,省市区县,行政代码及地图坐标
  12. winfrom DotNetBar sideNav控件使用问题
  13. SQLExpress免费版配置本地数据库实例
  14. linux的yum是什么意思,yum是什么?(linux命令)
  15. Invalid or unexpected token 报错
  16. Echarts炫酷配置
  17. PhotoShop 快速选择工具及选择并遮住使用
  18. 如何保证数据在传输过程中的安全
  19. AudioTrack 分析
  20. windows7开机壁纸_如何在Windows 7上修复黑色墙纸错误

热门文章

  1. 看完这篇文章还能不懂Flask这种Web框架吗?
  2. lucene Collector 文档收集器
  3. 地铁线路图的设计与实现
  4. 五分钟实现网站安全 创新工场“安全宝”吸引大量用户
  5. java 工厂模式的写法_设计模式-Java-简单工厂模式--BitmapFactory
  6. 微信公众号 语音转文字api_微信重新上线的灰度测试功能:语音上滑转文字发送...
  7. Dubbo的基本介绍和搭建一个Dubbo环境
  8. Java NIO学习篇之PosixFilePermission详解
  9. 计算机需要 更新 无法卸载,电脑更新变卡顿,只要卸载它就能解决?
  10. 设计模式:000设计模式与面向对象介绍