命名空間

命名空間  ， 也稱 - { zh - cn: 命名空間; zh - tw: 名字空間; } - 、 名稱空間等 ， 它表示着一個標識符 （ identifier ） 的可見範圍 。 一個標識符可在多個命名空間中定義 ， 它在不同命名空間中的含義是互不相干的 。 這樣 ， 在一個新的命名空間中可定義任何標識符 ， 它們不會與任何已有的標識符發生衝突 ， 因爲已有的定義都處於其他命名空間中 。 例如 ， 設Bill是X公司的員工 ， 工號爲123 ， 而John是Y公司的員工 ， 工號也是123 。 由於兩人在不同的公司工作 ， 可以使用相同的工號來標識而不會造成混亂 ， 這裏每個公司就表示一個獨立的命名空間 。 如果兩人在同一家公司工作 ， 其工號就不能相同了 ， 否則在支付工資時便會發生混亂 。 這一特點是使用命名空間的主要理由 。 在大型的計算機程序或文檔中 ， 往往會出現數百或數千個標識符 。 命名空間提供一隱藏區域標識符的機制 。 通過將邏輯上相關的標識符組織成相應的命名空間 ， 可使整個系統更加模塊化 。 在編程語言中 ， 命名空間是對作用域的一種特殊的抽象 ， 它包含了處於該作用域內的標識符 ， 且本身也用一個標識符來表示 ， 這樣便將一系列在邏輯上相關的標識符用一個標識符組織了起來 。 許多現代編程語言都支持命名空間 。 在一些編程語言 （ 例如C + + 和Python ） 中 ， 命名空間本身的標識符也屬於一個外層的命名空間 ， 也即命名空間可以嵌套 ， 構成一個命名空間樹 ， 樹根則是無名的全局命名空間 。 函數和類的作用域可被視作隱式命名空間 ， 它們和可見性 、 可訪問性和對象生命週期不可分割的聯繫在一起 。