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

 

完!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值