Python 作用域的问题

Python作用域很好理解,主要分清全局作用域和局部作用域两个概念,并理解其区别:

1.全局作用域的变量都可以在局部作用域中被访问,例如:

[python]

a=1

def test() :

print a

[/python]

调用test()函数是可以打印出a的值的。

全局作用域的变量除了数值、元组、字符串外都可以被局部作用域改变,那些所以对数值、元组、字符串这些不可变序列进行重新赋值时,是不产生任何变化的;

[python]
Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> str="hello"
>>> li=[1,2,3]
>>> def str_change(data):
data="new data"

>>> str_change(str)
>>> str
‘hello’
>>> def li_change(data):
data[0]=5

>>> li_change(li)
>>> li
[5, 2, 3]
>>>
[/python]
如果想在局部作用域内改变不可变序列的值,可以在局部作用域内对变量加上关键词 global
[python]
a=1
def plus_1():
global a
a=a+1
[/python]
同时可以用globals()函数获取全局变量值,vars()获取全部变量的字典,locals()获取全部局部变量的字典

Leave a Reply

Time limit is exhausted. Please reload CAPTCHA.

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据