Python 3.4においてGlobalなListもしくはDict オブジェクトを定義する方法について


以下のコードで実行したところ、local_testの実行前後でglobal_listの要素が変化してしまいました。  
local_testの実行前後でglobal_listの要素を変更しない方法はありますでしょうか？  
有る場合、どのようにコードを修正すればよいでしょうか？

環境：Python3.4.3

[code]

    global_list = [
      1,
      2,
      3,
      4
    ]
    
    def local_test():
      list = global_list
      list.append(5)
      print(list)
    
    print(global_list)  # [1,2,3,4]
    local_test()  # [1,2,3,4,5]
    print(global_list)  # [1,2,3,4,5]
    # 期待する出力
    print(global_list)  # [1,2,3,4]
    
[/code]




既に回答がありますが、`global_list` そのものではなく、そのリストのコピーを利用するのが回避策です。  
リストにはコピーメソッドがあるので、

[code]

    - list = global_list
    + list = global_list.copy()
    
[/code]

とするだけで目的の結果が得られます。




既に回答がありますが、`global_list` そのものではなく、そのリストのコピーを利用するのが回避策です。  
リストにはコピーメソッドがあるので、

[code]

    - list = global_list
    + list = global_list.copy()
    
[/code]

とするだけで目的の結果が得られます。

