python 関数の値の保持範囲（スコープ）について


関数の勉強を行っております。  
関数で保持される値のスコープについて質問があります。

下記2つの関数がありますが、1つ目の関数内の completed_designs.append(current_print) で  
空のリストに値を格納しておりますが、この格納した値は、ほかの関数（ここでは、def
show_completed_models(completed_modeles):）でも値は保持され続けているということで  
良いのでしょうか？

[code]

    def print_models(unprinted_designs, completed_designs):
        """
        リストから無くなるまで印刷する。
        印刷後、cpmpleted_designsに移動する。
        """
        while unprinted_designs:
            current_print = unprinted_designs.pop()
            print(f"印刷中->{current_print}")
            completed_designs.append(current_print) # 質問箇所
    
    def show_completed_models(completed_modeles):
        """
        印刷されたものを表示する。
        """
        
        for completed_model in completed_modeles:
            print(f"印刷完了->{completed_model}")
            
    
    unprinted_designs = ['aaa', 'bbb', 'ccc']
    completed_designs = []
    
    print_models(unprinted_designs, completed_designs)
    show_completed_models(completed_designs)
    
[/code]




はい。値は保持され続けています。  
変数completed_designsは下から4行目のところ、関数の外で定義されていますから、グローバルなスコープで変数が定義されていることになります。

その定義された変数を関数の引数で渡している(下から2行目,1行目)ので、  
関数print_modelsでも関数show_completed_modelsでも同じリストを参照していることになります。




はい。値は保持され続けています。  
変数completed_designsは下から4行目のところ、関数の外で定義されていますから、グローバルなスコープで変数が定義されていることになります。

その定義された変数を関数の引数で渡している(下から2行目,1行目)ので、  
関数print_modelsでも関数show_completed_modelsでも同じリストを参照していることになります。

