在程式設計的世界中,語法就如同秩序。我認為,當這個秩序太靈活時,往往會讓人感到困惑。每次使用 JavaScript 時,我都能深刻感受到這一點。

JS 就像是一種自由精神的語言。不需要類型聲明,變數範圍也很容易混亂,甚至函數調用語法有時也會感到模糊。然而,為了前端開發,我不得不使用它,因此對我來說,JS 確實是個愛恨交加的對象

相比之下,Python 提供了更加明確和規範的語法。但是,即使在 Python 中,也常常會有讓人掛心的一部分。其中之一就是字典最後的逗號問題


Python 字典,最後逗號的真相

在 Python 中定義字典時,最後一個 key: value 鍵值對後面需要加逗號 (,) 嗎?還是可以省略?我想知道這個問題在語法上更正確的答案。

結論是可以加逗號,也可以不加都能運作。不過,遵循 PEP 8 風格指南的 Python 開發者們,通常建議在最後一項也加上逗號。特別是在多行書寫的字典中,這樣做會提高可讀性,並在稍後添加項目時更方便。

例如:

my_dict = {
    'name': 'Alice',
    'age': 25,
}

像這樣在最後加逗號是 Python 社區所偏好的,因為這樣能讓程式碼看起來更整潔。但是在單行書寫時,通常會省略逗號:

my_dict = {'name': 'Alice', 'age': 25}
Python 字典的逗號問題

這一小差別,我認為能在閱讀和書寫程式碼時影響一致性可讀性


在 C++ 中找到字典:std::mapstd::unordered_map

談到這裡,我也想到了 C++。C++ 擁有類似 Python 字典的鍵值存儲,那就是 std::mapstd::unordered_map。兩者都以對的方式存儲鍵和值,但稍微有些不同。

  • std::map:鍵以排序的順序存儲。查詢和插入效率高,具有對數時間複雜度。
  • std::unordered_map:基於哈希表,儲存的順序不保證,但查詢速度快,提供常數時間複雜度。

初始化的示例如下:

#include <map>
#include <iostream>

int main() {
    std::map<std::string, int> my_map = {
        {"Alice", 25},
        {"Bob", 30}
    };

    for (const auto& pair : my_map) {
        std::cout << pair.first << ": " << pair.second << std::endl;
    }

    return 0;
}

與 Python 不同,在 C++ 中必須明確指定鍵和值的類型。這正是 C++ 强調類型安全的特點。而正因為有這樣清晰的規則,我在使用 C++ 時感到更加舒適。


結語

程式設計語言各自擁有自己的哲學與特性。自由精神的 JS、強調規則的 Python,以及重視類型安全的 C++。作為開發者,我們需要在語法的靈活性與嚴格性之間找到平衡。

所以今天我也把對語法的思考暫時放下,再次回想起編碼的樂趣,把手放在鍵盤上。你是用什麼語言來感受愛恨交織的呢?