呼び出しは、関数のコードを実行します。この例では、2度メッセージが表示されます。コードの複製を回避する、と言うことです。メッセージ内容、または表示方法を変更する必要がある場合、1箇所のコード(関数)を修正するだけで十分です。関数内の変数定義は関数内でのみ見えます。John関数は外部変数に対してフルアクセス権を持ちます。それを変更することもできます。関数によって値が変更されました外部の変数は、ローカル変数が存在しない場合にのみ使われます。忘れた場合、意図せず外部の変数を変更してしまう可能性があります。