Namespaces ใน Python และ C++ ไม่สามารถเปรียบเทียบโดยตรงได้ ตัวอย่างใน C++:
// a.h
namespace ns {
struct A { .. };
struct B { .. };
}
หากเราทำ:
#include "a.h" using ns::A;
จุดของโค้ดคือให้เขียน A โดยไม่ต้อง qualify (ไมต้องเขียน ns::A) คุณอาจคิด Python equivalent ว่า:
from a import A
แต่ไม่ว่าจะ using หรือไม่ ทั้ง a.h header จะยังถูก include และ compile อยู่ดี ดังนั้นเรายังเขียน ns::B ได้ ในขณะที่ Python version a.B จะไม่ visible อีก C++ version:
using namespace ns;
ก็ไม่มี Python analogue มันนำ names ทั้งหมดจาก namespace ns เข้ามาทั่ว codebase และ namespaces สามารถ reuse ได้ เช่น:
#include <vector> #include <map> #include <algorithm> using namespace std; // bring in EVERYTHING
บรรทัดเดียวนี้คล้าย:
from vector import * from map import * from algorithm import *
อย่างน้อยในสิ่งที่มันทำ แต่จริงๆ แล้วมันนำแค่สิ่งใน namespace std ซึ่งไม่จำเป็นต้องเป็นทุกอย่าง