えーと defで定義された部分とそうじゃない部分はメモリ空間が切り離されています なので、呼び出し元のPという変数と、def内のAAやAという変数は厳密には別の変数です 呼び出し時にPの内容がAAにコピーされ、戻るときにAの内容をPにコピーするって認識しておくといいかもしれません こんな説明でいいのかな?