Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

파이썬과 C++에서 네임스페이스를 어떻게 비교할 것인가?


Python과 C++의 네임스페이스는 실제로 비교할 수 없습니다. 예를 들어, C++에서 −

// a.h
namespace ns {
    struct A { .. };
    struct B { .. };
}

이렇게 하면 -

#include "a.h"
using ns::A;

그 코드의 요점은 A를 unqualified로 작성할 수 있다는 것입니다(즉, ns::A를 작성할 필요가 없음). 이제 python을 다음과 같이 생각할 수 있습니다. -

from a import A

그러나 사용에 관계없이 전체.h 헤더가 여전히 포함되고 컴파일되므로 ns::B를 작성할 수 있는 반면 Python 버전에서는 a.B가 표시되지 않습니다. 다른 C++ 버전,

using namespace ns;

또한 Python 아날로그가 없습니다. 전체 코드 기반에 걸쳐 네임스페이스 ns의 모든 이름을 가져오고 네임스페이스를 재사용할 수 있습니다. 예를 들어,

#include <vector>
#include <map>
#include <algorithm>
using namespace std; // bring in EVERYTHING

한 줄은 −

와 같습니다.
from vector import *
from map import *
from algorithm import *

적어도 그것이 하는 일에서는 하지만 실제로는 네임스페이스 std에 있는 것만 가져옵니다. 이것이 반드시 전부는 아닙니다.