Pythonの書き方

Pythonの引数の考え方と使い方について

python-arg

こんにちは!中川です!

今回は引数について説明します。

前回の記事(関数について理解しよう。)に関連した話となります。

 

引数ってなにがどうなっているのか分かりにくいですよね?

どことどこが繋がっていたり、よく分からないと思います。

筆者も長い間、引数については理解できなかったです。

 

しかしようやく理解できたので、説明していきたいと思います。

引数とは何か?

関数の書き方を復習しますと、

このように関数は書いていました。

defで関数を定義した時に使用する変数( )の中に入るものが、「仮引数」、

関数を呼び出す時に定義した関数に値を渡す( )の中に入れるものを「実引数」と呼んでいました。

なぜ仮引数、なぜ実引数と呼ぶのか?

これは余談ですが、なぜ区別して呼ぶのか。

それは、実引数は実際の変数を用いて、仮引数はどんな変数でもいいからです。

次の例を見てください。

1行目では関数の定義をしていますが、その引数はxとyです。

しかし、8行目の関数を呼び出す時には、weight変数とhight変数を引数としています。

つまり、関数を呼び出す際には実際の変数(実引数)が必要で、関数を定義する際は仮となる何かの変数(仮引数)が必要ということです。

ですので、仮引数と実引数は言葉を使い分けるという事です。

引数の考え方

次に引数の考え方(動き)について説明します。

python-arg1

図で説明しますと、このようになります。

重要な事は順に引数が入るという事です。

本当に順が関係しているか試してみましょう。

結果:

このように結果は変わります。

 

また、先ほど仮引数はどんなものでも良いと言いましたが、それははじめに定義した変数でも良いです。

このようにしても良いのです。

しかしこのようにすると、引数の順を入れ替えた時(8行目)でも順に引数は入りますので、

実引数val2の値が仮引数val1に入ることになります。

 

こうなるとややこしくなるので、あまり同じ値を使うのはやめましょう。

さらに後に説明しますが、グローバル変数というものを使っていくと、

変数が混同しもっと複雑になるので、やめた方が良いです。

キーワード引数で仮引数を指定する

上記で説明したように、実引数を入れ替えると仮引数の順序が変わります。

 

これを順に関係なく指定するとき「キーワード引数」を用います。

結果:

このようにすると、仮引数xとyに入る変数を指定することができます。

ですので、結果はどちらを入れ替えても同様となります。

その他の引数の扱い方:デフォルト引数

これらの他にあと2つ引数の扱い方があります。

まずは「デフォルト引数」です。

デフォルト引数とはその名の通り、引数にデフォルト値を設定できるものです。

決まり事として、デフォルト値のない引数より後ろに置くというものがあります。

結果:

4行目ように引数が無かった場合、デフォルトの引数を使うというものがデフォルト引数です。

引数の数が予めわからないときは「可変長引数」

可変長引数とは、引数の数がいくつになるか分からない時に使います。

引数にアスタリスク*を1つ付けると、タプルとして処理、

アスタリスク*を2つ付けると、辞書として処理されます。

 

また、引数はデフォルト値のない引数、デフォルト引数、タプルの可変長引数、辞書の可変長引数の順に記述しなければなりません。

結果:

少しわかりにくいかと思いますが、まず実引数を見てください。

このように引数が沢山さらに、複数の形式であるときに可変長引数が使えます。

 

普通の引数は、いままで通り順に入ります。

その引数の次にタプルとして入っていきます(*tuple_arg)。

最後に辞書として、入ります。

 

タプルと辞書の境目は、辞書を「キー=値」と記述することで、そこから辞書と認識されます。

まとめ

以上が引数の書き方となります。

引数の考え方は理解するまでは難しいですが、1度分かると凄く簡単です!

 

また、引数にはキーワード引数、デフォルト引数、可変長引数など様々な機能があります。

これらの利点をうまく使ってよい関数を書きましょう!

 

ここまで読んでいただきありがとうございました!

もっと効率よくプログラミングを学びたいなら

プログラミングをもっと早く、しかも基礎をしっかり固めたいという方はプログラミングスクールを利用することをオススメします。

TechAcademyは自宅で学べるオンライン型のスクールです。
無料体験から始めることができ、Pythonやウェブデザイン、アプリケーションの製作方法などを学べます。

TechAcademyを無料体験する

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください