2011-12-12 6 views
0

파이썬에서 CS 클래스의 모의 시험 문제를 이해하는 데 도움이 필요합니다. 이 문제는 파이썬 네임 스페이스를 다룬다. 질문은 다음과 같습니다.Python에서 네임 스페이스 이해

Which of the following are true in Python? 

i. Every function has access to the names in the builtin namespace. 
ii. Every invocation of a function creates a new namespace nested within the calling function’s namespace. 
iii. Invoking function G from function F adds the name G to F’s namespace 
iv. The namespace of an imported module is always added to the builtin namespace. 

a. i only 
b. ii and iii only 
c. i and iv only (answer) 
d. i, ii and iii only 
e. None of the above 

누군가가 두 번째 및 세 번째 사례가 잘못된 이유를 설명해 줄 수 있습니까? 또는 네임 스페이스를 설명하는 리소스를 참조하십시오. 고맙습니다.

답변

1

2의 경우 : 새 함수의 네임 스페이스가 호출 함수의 네임 스페이스에 없으므로 완전히 구분됩니다. 내부 함수는 외부 변수에서 사용 된 변수에 액세스하지 않습니다. 호출은 새로운 네임 스페이스를 만들지 만 호출하는 함수 내에 중첩되지 않습니다.

나는 3을 몰랐지만, 의미가 있습니다. 함수가 호출되고 이름이 네임 스페이스에 추가되지 않으므로 이름 공간에 추가되지 않습니다. 함수 네임 스페이스는 이미 전역 네임 스페이스 (또는 클래스 정의)에 있으므로 함수에 추가되지 않으며 함수는 일반적으로 필요할 때 적절하게 액세스 할 수 있다고 가정 할 수 있습니다. 함수가 반환되면 참조는 쓸모 없게되므로 처음에는 네임 스페이스에 추가 할 필요가 없습니다.

네임 스페이스는 무엇을 누가 볼 수있는 문제입니다. 따라서 코드 조각은 액세스 권한이있는 네임 스페이스의 항목에 대한 정의 만 알고 있습니다. 함수는 자신의 개인 네임 스페이스 (다른 함수는이를 볼 수 없음)와 전역 범위/네임 스페이스 (모든 것이 이것을 볼 수 있음)에 대한 액세스 권한을가집니다. 컴퓨터의 파일 디렉토리와 같이 생각하면됩니다. 서로 다른 디렉토리에있는 한 동일한 이름을 가진 두 개의 파일을 가질 수 있으며 디렉토리가있는 것과 동일한 이유로 대부분의 네임 스페이스가 유용합니다. 네임 스페이스를 사용하면 멀리있는 코드 영역 사이에 복잡한 의존성을 만드는 대신 코드를 체계화하고 모듈화 할 수 있으므로 일반적으로 수백만 줄의 코드에서 모든 변수 이름을 추적하지 않아도됩니다.

관련 문제