python语法31[变量的作用域+global]

 

 一  变量与作用域

  变量的定义使用var=varvalue

 

1)如果函数中定义了同名的变量,则同名的全局变量被屏蔽,否则查找使用全局变量

def f1():
    v1 
= 'local'
    f2()
    
print (v1)

def f2():
   
print(v1)

v1 
= "Value1"
f1()
#Value1
#
local

 

 

2)内嵌定义的函数中的变量的使用,如果内嵌函数中没有定义,则先查找包含此内嵌函数作用域中变量的定义,最后查找全局中变量的定义。

def f3():
  
def f4():
    
print (v3)
  v3 
= "Value3#"
  
print(v3)
  f4()

v3 
= "Value3"
f3()
#Value3#
#
Value3#

 

 

3)注意=赋值时,不可变类型其实是产生了对原变量的引用,可变类型与原来的共享相同的内存。

def f5():
  v51 
= 100
  v53 
= v52
  v53.append(
100)
  
print( v51)
  
print( v53)
  
v51 
= 10
v52 
= [10]
f5()
print(v51)
print(v52)
#100
#
[10, 100]
#
10
#
[10, 100]

 

4)作用域由def、class、lambda等语句产生,if、try、for等语句并不会产生新的作用域。

def f7(right):
  
if(right):
     result 
= True
  
else:
     result 
= False
  
print (result)
  
  
try:
    v7 
= "Value7"
  
except:
    
pass
  
print(v7)
  
f7(False)
#False
#
Value7

 

 

 

三 global关键字

global关键字用来在局部作用域中申明使用全局变量。

def f6():
  
global v6 
  
print(v6)
  v6 
= "local"
  
print(v6)
  
v6 
= "global"
f6()
print(v6)
#global
#
local
#
local

 

参考:

http://hi.baidu.com/xjtukanif/blog/item/f35000f1642670c00b46e03c.html

 

完!


作者:iTech
微信公众号: cicdops
出处:http://itech.cnblogs.com/
github:https://github.com/cicdops/cicdops

posted @ 2011-01-27 14:02  iTech  阅读(2565)  评论(0编辑  收藏  举报