python global语句 变量作用域
2016-05-04 15:01
666 查看
变量作用域决定了这个变量能够被访问的范围,因为python不需要做变量声明,所以变量出现在哪里,他的作用范围就在哪里。
关于全局变量和局部变量,可以这样认为:在函数中的变量是局部变量,而在程序代码主体部分的是全局变量。python2举例如下:
1》
globalStr='Hello' #位于程序代码主体部分,是一个全局变量,在函数foo()内部可见
def foo():
localStr='world!' #位于函数内部,是一个局部变量,在函数foo()内部可见
return globalStr+' '+localStr
运行结果:
>>> foo()
'Hello world!'
2》
a=3 #全局变量
def f(x):
print a #访问全局变量
b=5
print b+x+a
运行结果:
>>> f(10)
3
18
3》
def f(x):
print a #访问全局变量
b=5
print a+x+b
a=3 #全局变量
运行结果:
>>> f(100)
3
108
4》全局变量和局部变量用同一个名字,要遵循一个原则:内层屏蔽外层。
a=3 #全局变量
def f():
a=5 #局部变量
print a**2 #访问局部变量
运行结果:
>>> f()
25
5》
a=3 #全局变量
def f(x):
print a #a被视为局部变量,并报错
a=5
print a+x
运行结果(错误信息):
UnboundLocalError: local variable 'a' referenced before assignment
6》
def f(x):
print a #a被视为局部变量,并报错
a=5
print a+x
a=3 #全局变量
运行结果(错误信息):
UnboundLocalError: local variable 'a' referenced before assignment
7》在函数内修改一个全局变量的值
def f(x):
global a #global语句强调全局变量,强调函数内的a指的是全局变量a
print a
a=5 #修改全局变量a
print a+x
a=3 #全局变量
f(10) #函数执行过程中,修改了全局变量a的值
print a #输出修改后的全局变量a
运行结果:
3
15
5
总结:在程序设计中,我们一般要求模块的内聚性要强,跟其他模块的耦合性要弱,显然全局变量并不符合这一原则。当然我们并不是说全局变量完全不能用,如果全局变量的使用能够给程序的性能带来很大的提高,或者说设计起来会更容易的话,我们也可以适当地使用一些全局变量。
关于全局变量和局部变量,可以这样认为:在函数中的变量是局部变量,而在程序代码主体部分的是全局变量。python2举例如下:
1》
globalStr='Hello' #位于程序代码主体部分,是一个全局变量,在函数foo()内部可见
def foo():
localStr='world!' #位于函数内部,是一个局部变量,在函数foo()内部可见
return globalStr+' '+localStr
运行结果:
>>> foo()
'Hello world!'
2》
a=3 #全局变量
def f(x):
print a #访问全局变量
b=5
print b+x+a
运行结果:
>>> f(10)
3
18
3》
def f(x):
print a #访问全局变量
b=5
print a+x+b
a=3 #全局变量
运行结果:
>>> f(100)
3
108
4》全局变量和局部变量用同一个名字,要遵循一个原则:内层屏蔽外层。
a=3 #全局变量
def f():
a=5 #局部变量
print a**2 #访问局部变量
运行结果:
>>> f()
25
5》
a=3 #全局变量
def f(x):
print a #a被视为局部变量,并报错
a=5
print a+x
运行结果(错误信息):
UnboundLocalError: local variable 'a' referenced before assignment
6》
def f(x):
print a #a被视为局部变量,并报错
a=5
print a+x
a=3 #全局变量
运行结果(错误信息):
UnboundLocalError: local variable 'a' referenced before assignment
7》在函数内修改一个全局变量的值
def f(x):
global a #global语句强调全局变量,强调函数内的a指的是全局变量a
print a
a=5 #修改全局变量a
print a+x
a=3 #全局变量
f(10) #函数执行过程中,修改了全局变量a的值
print a #输出修改后的全局变量a
运行结果:
3
15
5
总结:在程序设计中,我们一般要求模块的内聚性要强,跟其他模块的耦合性要弱,显然全局变量并不符合这一原则。当然我们并不是说全局变量完全不能用,如果全局变量的使用能够给程序的性能带来很大的提高,或者说设计起来会更容易的话,我们也可以适当地使用一些全局变量。
相关文章推荐
- 【LeetCode-142】Linked List Cycle II
- 机器学习实战3:决策树学习笔记(python)
- python清空列表的方法
- 299. Bulls and Cows [easy] (Python)
- Python: classmethod & staticmethod 区别
- 一次简单的python游戏编写
- pyMagic:用python控制的Geek入门神器
- Python pytesseract WinError 2
- pycharm的安装与配置
- Win10下Python命令tab自动补全
- python 装饰器的使用
- python pip安装使用详解
- python爬虫的一个小例子
- Python虚拟环境Virtualenv
- [python]type和isinstance的比较
- python爬虫抓取目标网页链接
- 利用python进行识别相似图片(二)
- 利用python进行识别相似图片(一)
- Python中time模块详解
- Python 使用super从父类得到帮助