python变量作用域图解_python的变量作用域问题

偶然掉进了一个坑里。仔细分析了下原因。原来是变量作用域的问题。简单抽象如下:

id=1

#许多行代码

[id for id in range(10)]

#许多行代码

if id!=1:

#做一些事情

pass

else:

#做另外一些事情

结果由于id在

[id for id in range(10)]

中受到了影响发生了变化,导致虫虫的产生。

索性探索了下变量作用域,结论如下:

1. 函数中的同名变量不会影响函数外的同名变量(若未加任何修饰--比如global)

id=1

def test():

id=2

print id

#===1

2. 变量的最小作用域是一个函数。在函数内部,变量的作用是从始至终的。(这不同于其他语言)

id = 1

if True:

id=2

print id

#===2

id = 1

for i in range(10):

id=i

print i

#====9

同样下面的也是ok的:

if True:

b=1

print b

输出1,不会因为b在if/for/while下面而成为一个局部的临时代码块变量!

变量的最小作用范围是函数,甚至极端点,下面的也是输出1的:

for i in range(10):

for j in range(2):

if True:

if True:

if True:

c=1

print c

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值