哈尔滨大型网站设计公司,最新中高风险地区名单,电脑做视频的网站,网络推广好做吗多少钱python中变量作用域包括#xff1a;L (Local) 局部作用域#xff0c;函数内部声明但没有使用global的变量E (Enclosing) 闭包函数外的函数中#xff0c;def或者lambda的本地作用域G (Global) 全局作用域#xff0c;函数中使用global声明的变量或在模块层声明的变量B (Built…python中变量作用域包括L (Local) 局部作用域函数内部声明但没有使用global的变量E (Enclosing) 闭包函数外的函数中def或者lambda的本地作用域G (Global) 全局作用域函数中使用global声明的变量或在模块层声明的变量B (Built-in) 内建作用域python的内置类和函数等当在函数中使用未认证的变量名时将依照L-E-G-B的顺序搜索。Python除了def/class/lambda 外其他如: if/elif/else/ try/except for/while并不能改变其作用域。定义在他们之内的变量外部还是可以访问。1.变量在函数内部第一次出现且在左边则为局部变量作用在函数内部。1 num 1002 deffunc():3 num 200 #局部变量4 print(num)56 func() #输出2007 print(num) #输出1001 num 1002 deffunc():3 num num 200 #报错UnboundLocalError: local variable num referenced before assignment说明num是局部变量在赋值前就被引用了4 print(num)56 func()2.变量在函数内部第一次出现是在右边或作为函数参数且之前已经定义了全局变量那这里就是对全局变量的引用。1 num 1002 deffunc():3 new num 2004 print(new)56 func() #输出3007 print(num) #输出1001 num 1002 deffunc():3 print(num)45 func() #输出1003.如果需要在函数内部引用并修改全局变量则需使用global关键字。1 num 1002 deffunc():3 globalnum4 num abc5 print(num)67 func() #输出abc8 print(num) #输出abc4.nonlocal关键字用来在函数或其他作用域中使用外层(非全局)变量1 #利用闭包返回一个计数器函数每次调用它返回递增整数2 defcreateCounter():3 i 04 defcounter():5 nonlocal i6 i 17 returni8 returncounter91011 #测试:12 counterA createCounter() #返回counter()代码块及变量i113 print(counterA(), counterA(), counterA(), counterA(), counterA()) #1 2 3 4 5 每次执行counterA()时就是执行counter()代码块改变i的值14 counterB createCounter() #返回counter()代码块及变量i115 if [counterB(), counterB(), counterB(), counterB()] [1, 2, 3, 4]:16 print(测试通过!)17 else:18 print(测试失败!)