标签:
Python的作用域是函数,没有块级作用域
if 1 == 1:
name = ‘wang‘
print(name)#wang
for i in range(10):
name = i
print(name)#9
def func():
name = ‘wang‘
func()
print(name)#NameError: name ‘name‘ is not defined
name = ‘wang‘
def f1():
name = ‘snow‘
print(name)
f1()#snow
作用域链
name = ‘wang‘
def f1():
name = ‘a‘
def f2():
name = ‘b‘
print(name)
f2()
f1()#b
name = ‘wang‘
def f1():
print(name)
def f2():
name = ‘snow‘
f1()
f2()#wang
在函数未执行之前,作用域已经确定
name = ‘wang‘
def f1():
print(name)
def f2():
name = ‘snow‘
return f1
ret = f2()
ret()#wang
li = [x+100 for x in range(10) if x > 5]
print(li)#[106, 107, 108, 109]
def f1():
return 1
#相当于
li = [lambda :1]
li = [lambda :x for x in range(10)]
#li为列表
#li列表中的元素:【函数,函数,函数...】
#函数在没有执行前,内部代码不执行
#列表的第一个元素li[0]是函数
#函数()执行
#li[0]()返回值为9
ret = li[0]()
print(ret)#9
li = []
for i in range(10):
def f1():
return i
li.append(f1)
ret1 = li[0]()
ret2 = li[1]()
ret3 = li[2]()
ret4 = li[3]()
ret5 = li[4]()
ret6 = li[5]()
ret7 = li[6]()
print(ret1)
print(ret2)
print(ret3)
print(ret4)
print(ret5)
print(ret6)
print(ret7)#9
#9#9#9#9#9#9
只要执行了,就能拿到值
li = []
for i in range(10):
def f1(x = i):
return x
li.append(f1)
print(li[0]())
print(li[1]())
print(li[2]())
print(li[3]())#0#1#2#3
标签:
原文地址:http://www.cnblogs.com/icsnow/p/5789618.html