python嵌套函数作用域怎么解释
阿神
阿神 2017-04-18 10:23:18
0
3
599

直接上代码

def l(list):
    def d():
        return list
    return d
    
 #运行
l = l([1,2,3,4])
print l()

这个情况是正常的。

问题在于d函数为什么不能传入list,然后我现在尝试了一下这个代码:

def l(list):
    def d(list):
        return list
    return d
 
#运行
l = l([1,2,3,4])
#提示错误
print l()

#正常
print l([1,3,5,7,9])

请问这个怎么解释呢?
我个人理解的是,类似于“继承”的情况,当d函数没有参数传入的情况上,基于父函数的参数,当他需要传参了,就覆盖了???

阿神
阿神

闭关修行中......

모든 응답(3)
洪涛

LEGB 원칙을 살펴보면 무슨 일이 일어나고 있는지 이해할 수 있을 것입니다.
https://zhuanlan.zhihu.com/p/...

달려

l = l([1,2,3,4])

프롬프트 오류

print l() 이 오류는 매개변수를 전달하지 않았기 때문에 발생합니다.

迷茫

원본 코드:

으아악

다음은 설명을 위해 사용됩니다. 원래 코드의 l은 다른 지점을 가리킵니다.

으아악

코드가 다음과 같이 작성되어 있으면 이해하실 수 있습니다.

으아악

두 가지 마지막 사항:

  1. list 같은 키워드를 변수 이름으로 사용하지 마세요

  2. 꼭 필요한 경우가 아니면 변수 이름을 덮어쓰지 마세요.

Ty80

포스터가 이해해야 할 것은: 범위

Case 1: 함수 l은 함수 d의 주소를 반환하고, d는 반환값으로만 사용되며 실행을 위해 호출되지 않았습니다.

으아악

매개변수 목록은 l에 전달되고 범위는 함수 l 내에 있으며 d에서 액세스할 수 있습니다(매개변수는 d가 아닌 l에 전달된다는 점에 유의하세요).
 
  목록에 액세스하려면 다음과 같이 호출하세요.
  
  `

으아악 으아악 으아악 으아악 으아악
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿