当前位置:   article > 正文

python函数板块的一些错题记录_print(f1(), f2(), f3()) 修复以上错误

print(f1(), f2(), f3()) 修复以上错误

一:闭包函数的循环:

  1. def count():
  2. fs = []
  3. for i in range(1, 4):
  4. def f():
  5. return i*i
  6. fs.append(f)
  7. return fs
  8. f1, f2, f3 = count()
  9. print(f1(),f2(),f3())

运行结果为9 9 9 ,而不是1,4,9,因为返回函数有i,闭包函数又可以称为延迟计算,所以会等循环结束时再进行计算,此时i=3,所以会得到9 9 9

二.闭包函数的变量

  1. x = 10
  2. def outter(x):
  3. x = 10
  4. def inner():
  5. print(x)
  6. x=5
  7. return inner
  8. f = outter(10)
  9. f()

此时会报错,f()会执行inner函数,inner函数在引用x时,会先在函数内检索x,如果x定义在引用后,则会报错,如果没有定义,会去上一级函数寻找x,所有上级都没有,会寻找全局变量

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/105532
推荐阅读
相关标签
  

闽ICP备14008679号