如何比较Python和C++中的命名空间?

如何比较Python和C++中的命名空间?

在Python和C++中,命名空间不能真正地进行比较。例如,在C++中 −

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

如果我们这样做 −

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

这段代码的目的是使A无需限定名称(即不必写ns::A)。现在,你可能会认为Python中的等价代码是 −

from a import A

但是,无论使用什么,在编译时整个a.h头文件仍然会被包括和编译,因此我们仍然可以写ns::B,而在Python版本中,a.B是不可见的。另一个C++版本,

using namespace ns;

也没有Python的类似物。它从命名空间ns中带来了整个代码库中的所有名称——并且命名空间是可以被重用的。例如,

#include <vector>
#include <map>
#include <algorithm>
using namespace std; //带入 EVERYTHING

那行代码在某种程度上相当于 −

from vector import *
from map import *
from algorithm import *

至少在它的功能方面是这样的,但它实际上只带来命名空间std中的内容,这并不一定是所有的内容。

更多Python相关文章,请阅读:Python 教程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程