파이썬에서 네임 스페이스와 스코프에 관한 스크립트를 실행했습니다.이 두 가지 개념을 혼용하여 사용하기 때문에이 스크립트가 어떻게 실행되는지 알 수 없습니다. 여기에 코드가 있습니다 :파이썬의 네임 스페이스와 스코프
j, k = 1,2
def proc1():
j, k = 3, 4
print “ j == %d and k == %d” % (j, k)
k = 5
def proc2():
j = 6
proc1()
print “ j == %d and k == %d” %(j , k)
k = 7
proc1()
print “ j == %d and k == %d” % (j, k)
j = 8
proc2()
print “ j == %d and k == %d” % (j, k)
이 스크립트의 출력에는 4 개의 인쇄 표현식 만 포함되어야하지만, 실행하면 5 개가됩니다. 게다가, 각 줄의 j와 k의 값 또한 내가 예상했던 것과는 전혀 다릅니다. 누군가 어떻게 이것이 실행되는지 설명 할 수 있습니까?
이러한 코드 조각에서 네임 스페이스와 범위를 자세히 설명 할 수 있다면 진심으로 감사드립니다. 게다가, 현재 Python 2.7.14가 설치된 내 컴퓨터에서 실행했을 때의 출력 결과는 다음과 같습니다. output result] 당신의 변수가 사는 방법을 설명 1
그것은 때문에'proc2'이, 선이의 정의에 오 개 출력을 인쇄 'PROC1()'변수에 대한 의'J, k'는 함수에 대해 지역적이며, j_1, k_1 및 j_2, k_2를 호출하고 함수 범위에 바인딩됩니다. – BadMiscuit
@BadMiscuit 많이 감사합니다! 그런 식으로, 값은 무엇입니까? j와 k는 두 번째 함수 뒤에 있습니다 - proc2? 늦게 답장을 드려서 죄송합니다 – user8542107
첫 번째 j와 k (j_0과 k_0을 말하도록 할 수 있습니다)에 대해 j = 8과 k = 7이어야합니다 (출력에서와 같이) 함수가이 값을 수정하지 않기 때문에 (임시 변수를 만듭니다) – BadMiscuit