Python 作用域
来源:互联网 发布:java重载的内部调用 编辑:程序博客网 时间:2024/06/05 10:09
Python 作用域
首先申明下,本文为笔者学习《Python学习手册》的笔记,并加入笔者自己的理解和归纳总结。
1、作用域基本规则
(1) 变量名引用查找,首先是本地,其次是函数内,然后是全局,最后是内置。(2) 所有def函数内赋值的变量名,默认均是本地变量,除非在之前声明为全局变量。
(3) 在def函数之外给一个变量名赋值时,本地作用域与全局作用域是相同的。
>>> (a, b, c) = (1, 2, 3) # 定义全局变量a, b, c>>> def fun1(): a = 11 # a变量在方法fun1内定义,默认是本地变量 def fun2(): b = 21 # b变量在方法fun2内定义,默认是本地变量 print a, b, c # a和b是本地变量,c是全局变量 fun2()>>> fun1()11 21 3>>> a, b, c # a和b没有被修改(1, 2, 3)
2、全局变量
(1) 跨文件访问在文件mymod.py中
valA = 13valB = "Hello World"访问mymod模块。
>>> import mymod # import导入mymod>>> print mymod.valA # 访问mymod模块的变量valAHello World>>> mymod.valB += 3 # 修改mymod模块的变量valB>>> print mymod.valB16(2) 文件内函数访问
在函数中访问全局变量。
>>> x = "Hello World!">>> def fun(): print x # 直接访问变量x>>> fun()Hello World!(3) 函数内修改全局变量
在函数内对任何一个变量的赋值,都会在本地变量上修改。除非调用global,声明该变量为全局变量。
>>> x = "Hello World!">>> def fun(): global x # 声明x是全局变量 x = "welcome" # 重新对x赋值>>> fun()>>> x'welcome'(4) global声明变量可以在全局没有声明过。
>>> def fun(): global b # 变量b没有在全局被定义过 b = 17>>> b # b没有被定义Traceback (most recent call last): File "<pyshell#5>", line 1, in <module> bNameError: name 'b' is not defined>>> fun() # 调用方法fun,b被定义为全局变量>>> b17
3、循环中访问变量
嵌套函数在调用时才会使用变量,这时候参数都是同一个值。>>> L = [1, 2, 3, 4, 5]>>> actions = []>>> for x in L: def fun(): # 定义方法fun print x ** 2, # 使用循环中的变量xactions.append(fun)>>> for ac in actions:ac()25 25 25 25 25在方法中添加参数记录值。
>>> actions = []>>> for x in L: def fun(i = x): # 定义方法fun,设置参数i print i ** 2, actions.append(fun)>>> for ac in actions:ac()1 4 9 16 25
4、访问函数内的本地变量。
>>> def fun1(): param = 12 # param是一个本地变量 def fun2(): print param # 可以访问变量param param = 13 # 修改param的值,会引发异常fun2()>>> fun1()Traceback (most recent call last): File "<pyshell#132>", line 1, in <module> fun1() File "<pyshell#131>", line 6, in fun1 fun2() File "<pyshell#131>", line 4, in fun2 print paramUnboundLocalError: local variable 'param' referenced before assignment
0 0
- python 变量作用域
- python 变量作用域
- python变量作用域
- python作用域
- python 变量作用域
- python 变量作用域
- python变量作用域
- python 变量作用域
- python变量作用域
- python的作用域
- python作用域概述
- 【Python】变量作用域
- python 变量作用域
- Python作用域陷阱
- python学习:作用域
- python 变量作用域
- Python的作用域
- Python变量作用域
- 从文本中提取内容作为文件名以及base64解密
- 用多个if平衡语句实现分制转换
- Title Case a Sentence
- 硬链接与软链接的区别
- 蓝桥杯 ALGO-95 算法训练 2的次幂表示
- Python 作用域
- java项目中Classpath路径是指的哪个路径?
- 蓝桥杯 ALGO-92 算法训练 前缀表达式
- 自定义View_仿微信LetterView
- 使用Eclipse配置Struts2开发环境
- 蓝桥杯 ALGO-91 算法训练 Anagrams问题
- flume1.6.0安装
- 蓝桥杯 ALGO-90 算法训练 出现次数最多的整数
- struts2基础——需要注意的几点