Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

เปรียบเทียบ namespaces ใน Python และ C++

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 ซึ่งไม่จำเป็นต้องเป็นทุกอย่าง