杭州网站建设第一品牌,天元建设集团有限公司青岛分公司张德平不干了,如何免费建立网站,源码之家网站直接上代码def l(list):def d():return listreturn d#运行l l([1,2,3,4])print l()这个情况是正常的。问题在于d函数为什么不能传入list,然后我现在尝试了一下这个代码#xff1a;def l(list):def d(list):return listreturn d#运行l l([1,2,3,4])#提示错误print l()#正常pr…直接上代码def l(list):def d():return listreturn d#运行l l([1,2,3,4])print l()这个情况是正常的。问题在于d函数为什么不能传入list,然后我现在尝试了一下这个代码def l(list):def d(list):return listreturn d#运行l l([1,2,3,4])#提示错误print l()#正常print l([1,3,5,7,9])请问这个怎么解释呢我个人理解的是类似于“继承”的情况当d函数没有参数传入的情况上基于父函数的参数当他需要传参了就覆盖了运行l l([1,2,3,4])提示错误print l() 这个错误是你没有传参数。楼主需要理解的是: 作用域case 1: 函数l返回函数d的地址d只做为返回值并没有被调用执行In [3]: print(l([1,2,3,4])).d at 0x7f49243ece18参数list传入l,作用域在函数l内可以被d访问(注意参数是传给l的不是d)如果要访问list.如下调用:In [2]: print(l([1,2,3,4])())[1, 2, 3, 4]相当于:In [5]: d l([1,2,3,4]) # 返回的地址In [6]: d() 调用,d没有参数不需要传参Out[6]: [1, 2, 3, 4]case 2: 同样l返回的地址但此时返回的函数d需要传参(注意l的参数list和d的参数list是不一样的)In [8]: d l([1,2,3,4]) # 返回函数的地址参数list此时并没有用到In [9]: d([5,6,7,8]) # 需要参数的函数Out[9]: [5, 6, 7, 8]原有代码中def l(list):def d(list):return listreturn d # #运行l l([1,2,3,4])#提示错误print l() # #正常print l([1,3,5,7,9]) # 下面的用于说明你原来代码中的 l 指向不同def l(list):def d(list):return listreturn d#运行print id(l) is {}.format(id(l))l l([1,2,3,4])#提示错误# print l()#正常print id(l) is {}.format(id(l))print l([1,3,5,7,9])代码写成这样你可能就理解了def l(_list):def d(_l):return _list _lreturn da l([1,2,3,4])print a([1])最后说两点玩蛇网文章转载请注明出处和文章网址https://www.iplaypy.com/wenda/wd13874.html相关文章 Recommend