写在前面:

几乎有一周没有更新学习笔记了吧

上周一周身体都不怎么舒服

然后还得写开题报告

然后还得看文献

天天就是写写写写写写~~~~~~改改改改改改~~~~~~~~~

今天又开始学习了

希望之前的没忘记

其实今天更新的笔记是上周看的视频

可能忘得差不多了

又重新看的

我这脑子,笨死啦   加油吧!小伙郭

最近在看绝望的主妇,感觉很好看!(每次看美剧美名其曰学英语,~~~~然而,只有自己懂)

一、局部变量和全局变量

全局变量

  • 在程序的一开始顶头定义的变量
  • 作用域是整个程序(全局作用域)

局部变量

  • 子程序中定义的变量
  • 作用域是定义该变量的子程序(局部作用域)

#当全局变量与局部变量同名时:在定义局部变量的子程序内,局部变量起作用;在其它地方全局变量起作用。

规定关于全局变量和局部变量的命名规则:

  • 全局变量全部大写
  • 局部变量全部小写

二、关键字global(代指全局变量)

1.如果函数的内容无关键字global, 有声明局部变量,优先读取局部变量

NAME = ['xhg','alex']
def namelist():
NAME = 'gg'
print(NAME)
namelist()
print(NAME) #执行结果
gg
['xhg', 'alex']

#如果函数的内容中无global关键字,优先读取局部变量,只能读取全局变量,无法对全局变量重新赋值,
但是全局变量是可变对象类型,可以对内部元素进行操作

NAME = ['xhg','alex']
def namelist():
NAME.append('gg')
print(NAME)
namelist()
print(NAME) #执行结果
['xhg', 'alex', 'gg']
['xhg', 'alex', 'gg']

回顾一下关于可变不可变

  • 可变:列表、字典
  • 不可变:字符串、数字、元祖

2.如果函数的内容无关键字global, 无声明局部变量,读取全局变量

NAME = ['xhg','alex']
def namelist():
print(NAME)
namelist() #执行结果
['xhg', 'alex']

3.如果函数的内容有关键字global,无声明局部变量,读取全局变量

NAME = ['xhg','alex']
def namelist():
global NAME
print(NAME)
namelist()
print(NAME) #执行结果
GG
GG

4.如果函数的内容有关键字global, 有声明局部变量,读取全局变量,并可进行重新赋值

#错误示例
NAME = ['xhg','alex']
def namelist():
NAME = 'GG'
global NAME
print(NAME)
namelist()
print(NAME)

#报错,如果想要使用关键字global,需在程序一开始说明

NAME = ['xhg','alex']
def namelist():
global NAME
NAME = 'GG'
print(NAME)
namelist()
print(NAME) #执行结果
GG
GG

总结:

如果函数的内容中无global关键字,

  • 优先读取局部变量,只能读取全局变量,无法对全局变量重新赋值,
  • 但是对于可变对象,可以对内部元素进行操作

如果函数中有global关键字,

  • 变量本质上就是全局的那个变量,可读取可赋值

三、关键字nonlocal(代指上一级变量)

通过程序,来看看nonlocal与global的区别

name = 'xhg'
def name1():
name = 'aa'
def name2():
global name
name = 'bb'
name2()
print(name)
print(name)
name1()
print(name) #执行结果
xhg
aa
bb
name = 'xhg'
def name1():
name = 'aa'
def name2():
nonlocal name
name = 'bb'
name2()
print(name)
print(name)
name1()
print(name) #执行结果
xhg
bb
xhg

通过上面两段代码,发现关键字global改变的是全局变量name = ‘xhg’,关键字nonlocal改变的是上一级变量name = ‘aa’。

Python小白学习之路(十一)—【局部变量和全局变量】【关键字global】【关键字nonlocal】的更多相关文章

  1. Python小白学习之路(二十一)—【迭代器】

    迭代器 1.迭代器协议 对象必须提供一个 next 方法,执行该方法要么返回迭代中的下一项,要么就引起一个Stoplteration异常,以终止迭代(只能往后走不能往前退) 2.可迭代对象 实现了迭代 ...

  2. Python小白学习之路(二)—【Pycharm安装与配置】【创建项目】【运算符】【数据类型】

    写在前面: 第二天的学习,感觉比昨天学习相对轻松一些,但是对于我这个编程语言功底很弱的人来说,还是稍稍微有些.....哈尔滨的天气一天天冷了下来,还飘着小雨,不过还是挺有意境的.充实而又忙碌的生活,让 ...

  3. Python小白学习之路(二十四)—【装饰器】

    装饰器 一.装饰器的本质 装饰器的本质就是函数,功能就是为其他函数添加附加功能. 利用装饰器给其他函数添加附加功能时的原则: 1.不能修改被修饰函数的源代码        2.不能修改被修饰函数的调用 ...

  4. Python小白学习之路(二十)—【打开文件的模式二】【文件的其他操作】

    打开文件的模式(二) 对于非文本文件,我们只能使用b模式,"b"表示以字节的方式操作(而所有文件也都是以字节的形式存储的,使用这种模式无需考虑文本文件的字符编码.图片文件的jgp格 ...

  5. Python小白学习之路(十八)—【内置函数三】

    一.对象操作 help() 功能:返回目标对象的帮助信息 举例: print(help(input)) #执行结果 Help on built-in function input in module ...

  6. Python小白学习之路(十五)—【map()函数】【filter()函数】【reduce()函数】

    一.map()函数 map()是 Python 内置的高阶函数 有两个参数,第一个是接收一个函数 f(匿名函数或者自定义函数都OK啦):第二个参数是一个 可迭代对象 功能是通过把函数 f 依次作用在 ...

  7. Python小白学习之路(十四)—【作用域】【匿名函数】【编程方法论】【高阶函数】

    吧啦吧啦内心戏 在没有具体学作用域之前,我在之前的学习笔记中就有提到 我开始以为是自己自创的词儿 没想到这个词早已经存在(手动捂脸) 真是个无知的小火锅(不知者无罪) 我发现自己最擅长做的事情,就是给 ...

  8. Python小白学习之路(十)—【函数】【函数返回值】【函数参数】

    写在前面: 昨天早睡之后,感觉今天已经恢复了百分之八十的样子 又是活力满满的小伙郭 今日份鸡汤: 我始终相信,在这个世界上,一定有另一个自己,在做着我不敢做的事,在过着我想过的生活.-------宫崎 ...

  9. Python小白学习之路(九)—【字符串格式化】【百分号方式】【format方式】

    写在前面: 最近的事情好像有很多.李咏的离去,让我觉得很突然,仿佛印象中就是主持节目的他,看着他和哈文的爱情,很是感动.离去,没有什么抱怨,只是遗憾. 总会感慨,时光的流逝. 好像真的很快,转眼间,我 ...

随机推荐

  1. 27. Green Building 绿色建筑

    27. Green Building 绿色建筑 ①When we think of green buildings,we tend to think of new ones-the kind of h ...

  2. AngularJS标准Web业务流程开发框架-4.AngularJS四大模块之一:Controller

    一.Controller的创建 angular.controller("name",funtion($scope){ }) 1.name:控制器的名称(建议参考Java包的命名规范 ...

  3. 按str 存储和按 list 存储

    按str 存储1 w2 = open('./trsd_w.txt','a')#a代表追加 w代表重写 if matcher1: flag = 1 w2.write("\n") fo ...

  4. Hdu3363 Ice-sugar Gourd 2017-01-16 11:39 43人阅读 评论(0) 收藏

    Ice-sugar Gourd Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) ...

  5. poj 2591 Set Definition

    题目 这道题是个水题,写博客上的人好像都不屑于写这这道题.但是我为什么还是觉得挺难的呢? 我也是看了别人的博客才过了的,感觉这种写法很新颖,这样就可以不用在排序了. 下面给出正解: #include& ...

  6. springmvc elf8848

    刚开始觉得孔浩讲得好,之后觉得开涛讲得好,现在觉得elf8848讲得好.其实只是自己学习的各个阶段 孔浩:环境搭建,做了个基础的CRUD 开涛:讲了Controller(不该看),注解,数据绑定,请求 ...

  7. linux系统编程之信号(五):信号集操作函数,信号阻塞与未决

    一,信号集及相关操作函数 信号集被定义为一种数据类型: typedef struct { unsigned long sig[_NSIG_WORDS]: } sigset_t 信号集用来描述信号的集合 ...

  8. 仿建设银行APP首页效果

    仿建设银行APP首页效果 下载地址: http://pan.baidu.com/s/1eRMYEzC 下载后需要解压,解压密码联系:390980233  收费88元 HTML+JS实现,下载即可试用. ...

  9. [翻译]第一天 - 在 Windows 下安装和运行 .NET Core

    原文: http://michaelcrump.net/getting-started-with-aspnetcore/ 免责声明:我不是 .NET Core 开发团队的一员,并且使用的是公开.可用的 ...

  10. 对Cookie和Session的理解

    本篇文章系自己总结经验,如果有朋友感觉哪里有问题,欢迎留言评论,谢谢~! Cookie和Session的产生背景: 在动态页面里面,每个变量都是有有效期的,所有的变量的最大生命周期就是一个脚本的周期( ...