def g():
a=[]
for i in range(5):
def f(x,i=i):
return a.append(x**i)
return a
以上代码是想得到列表a,为什么只有下面这段才行呢,上面的代码问题出在哪里呢,自学python,在作用域这块学的有点晕啊。。求指教
def g():
a=[]
for i in range(5):
def f(x,i=i):
return x**i
a.append(f)
return a
我按照我自己的见解来解释下,不一定对,做个参考,第一份代码
def g():
a=[]
for i in range(5):
def f(x,i=i):
return a.append(x**i)
return a
虽然定义了f函数,却没有调用,通俗的来讲就是订了房子却还没付钱,房子没有真正的属于你。
第二份代码行的通的原因是因为调用了定义的f函数
第三份代码不行的原因是你return f的作用域不对,for循环完了才调用,并且即使作用域对了也就执行一次。