如何在 Python 和 C++ 中比較名稱空間?


C++ 名稱空間是明確定義的程式碼塊,有助於避免名稱衝突。Python 名稱空間也用於管理作用域和名稱衝突,但它們是使用模組和包動態建立的。

閱讀本教程以瞭解如何在 C++ 和 Python 中處理名稱空間。

C++ 中的名稱空間

在 C++ 中,使用 namespace 關鍵字定義名稱空間。名稱空間主要用於將程式碼組織成邏輯組,並防止名稱衝突,尤其是在程式碼庫包含多個庫時。

示例

請檢視以下示例 -

#include <iostream>
using namespace std;

// first namespace
namespace first_space {
   void func() {
      cout << "Inside first_space" << endl;
   }
}

// second namespace
namespace second_space {
   void func() {
      cout << "Inside second_space" << endl;
   }
}

int main () {
   first_space::func();		// Calls the function from the first namespace
   second_space::func();	// Calls the function from the second namespace
   return 0;
}

在 C++ 中,如果需要使用名稱空間,則必須顯式定義它。您需要使用作用域解析運算子 ( : : ) 來訪問 C++ 中名稱空間的成員。

Python 中的名稱空間

在 Python 中,名稱空間使用模組和包實現。Python 中的名稱空間本質上是從變數名(鍵)到其對應物件(值)的對映。

您可以使用點運算子 (.) 來訪問 Python 中名稱空間的成員。請檢視以下示例 -

示例

# my_module.py
def my_first_function():
   print ("Hello World!")

def my_second_function():
   print ("This is the second function in the module")

# main.py
import my_module
result = my_module.my_function()

您可以從模組匯入特定的名稱以避免每次都使用模組名稱 -

from my_module import my_first_function
result = my_first_function()

注意 - Python 語句可以訪問區域性名稱空間和全域性名稱空間中的變數。如果區域性變數和全域性變數具有相同的名稱,則區域性變數會隱藏全域性變數。

名稱空間的型別

以下是三種類型的名稱空間 -

  • 區域性名稱空間 - 程式宣告的所有函式和變數的名稱都儲存在此名稱空間中。此名稱空間在程式執行期間一直存在。
  • 全域性名稱空間 - 此名稱空間包含 Python 程式中使用的模組中包含的所有函式和其他變數的名稱。它包含區域性名稱空間中所有名稱。
  • 內建名稱空間 - 這是最高級別的名稱空間,它包含作為 Python 直譯器一部分載入的預設名稱,作為程式設計環境。它包含全域性名稱空間,而全域性名稱空間又包含區域性名稱空間。

在 Python 中,名稱空間是在執行時根據需要建立的。此外,名稱空間在不再需要時會被刪除。

更新於: 2024-07-11

539 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告