01.05 笔记 - 函数作用域

什么是变量的作用域

变量能够使用的范围

全局变量和局部变量

  • a. 全局变量 - 没有声明在函数或者类中的变量都是全局变量,函数、循环里都可以使用,全局变量的作用域从声明开始,到整个文件结束

  • b. 局部变量 - 声明在函数或者类中的变量就是局部变量,只在函数与类中,局部变量的作用域是从声明开始,到函数结束

  • 总结:当我们在调用函数的时候,系统会自动在栈区间专门为函数开辟一块独立的开辟空间,用来保存在函数中声明的变量(形参也是属于声明在函数中的变量),当函数调用结束后,这个函数对应的栈区间会自动销毁 -- 函数调用过程就是一个压栈过程


全局变量

  • 变量a是全局变量

a = 100

  • 全局变量 - for in中 ----- 重点

for y in range(5):

 print(y)

\# y 可以在循环外中使用,y为全局变量,但是y以最后一次赋值为准

def func1():

 print(y)

func1()

print(y)


局部变量

  • a. 函数的形参就相当于声明在函数中的变量,所以是局部变量

#num1 是局部

"""

def func2(num1):

 print(num1)

func2(10)

\# print(num1) 报错

  • 如果全局变量和局部变量重名,那么在局部变量的作用域中使用的是局部变量,相当于在局部变量中重新声明了一个变量,外面使用的是全局变量

aa = 100

def func5():

 aa = 200

 print('函数里', aa)

func5()

print('外部', aa)


重点 - global - 在函数中声明了一个全局变量,不需要一定在全局中有这个变量

在函数中:

global 变量名 (global只能在函数中使用)

变量名 = 值

重点 - 创建函数,其实是创建一个函数的单独的空间,在这个空间里给局部变量赋值,函数执行结束后,函数的单独空间销毁

重点 - 若用globl在函数中指定全局变量,函数会先在全局中找是否又这个变量,有就用全局变量,没有的话,就重新在全局变量中声明一个新的变量


\# print(cc)

bb = 11

def func6():

 global bb

 bb = 22

 print(bb)

 global cc

 cc = 200

func6()

print(bb) \# 全局变量被修改了

print(cc)


重点 - nonlocal - 想要在局部的局部中去修改局部变量的值,就使用nonlocal对变量进行说明,前提,父函数里必须要有这个变量

在子函数中使用,将变量不当做局部函数(不重新声明一个变量),而用父函数的这个变量,若父函数没有,就报错SyntaxError: no binding for nonlocal 'abc' found


def func11():

 abc = 123

 print('func11', abc)

 def func12():

 nonlocal abc \# abc 为父函数里的同名变量

 abc = 333

 print('func12', abc)

 func12()

 print('func11', abc)

func11()


list1 = []

for i in range(1,6):

 list1.append(lambda x: x + i)

print(list1)

print(list1[0](2)) 

重点-在将函数添加进列表的时候,只是将一个函数块放入列表,只有当函数要调用的时候,才会执行函数块中的代码,根据代码情况调用里面的变量

简单意思就是,只是存入了一个函数块,并不会执行代码块,当要调用的时候,才会执行里面的函数

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,884评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,212评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,351评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,412评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,438评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,127评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,714评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,636评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,173评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,264评论 3 339
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,402评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,073评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,763评论 3 332
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,253评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,382评论 1 271
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,749评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,403评论 2 358

推荐阅读更多精彩内容

  • 1.函数的概念函数是实现某一特定功能的代码段的封装 2.函数的声明/定义def 函数名(形参列表):函数体 形参:...
    LittleBear_6c91阅读 315评论 0 0
  • 1、引言 最近在刷leetcode题的时候,遇到一个求最长回文子串的题目,于是,我写了如下的代码: 哎呀,写了两个...
    文哥的学习日记阅读 14,336评论 6 32
  • 1、c语言的函数有以下特点: (1)才源程序由函数组成,一个主函数main()+若干其他函数 C程序中的函数类似文...
    滕王阁序阅读 1,345评论 0 6
  • 这几天不知是台风要来的原故,从末感觉天气热,也不会大汗淋淋的我,汗如泉湧,不小心 鼻涕流,感冒头晕浑身非常的不舒服...
    童希园阅读 177评论 0 0
  • 世界杯开幕赛,伪球迷的我打开腾讯视频喵一眼,尴尬了,直播结束,不支持直播。作为第一大运动,带入感很强。如果早期足球...
    d380cf993c0a阅读 84评论 0 0