如何在 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 中,名稱空間是在執行時根據需要建立的。此外,名稱空間在不再需要時會被刪除。
廣告