Ciao!みなさんこんにちは!このブログでは主に
(1)pythonデータ解析,
(2)DTM音楽作成,
(3)お料理,
(4)博士転職
の4つのトピックについて発信しています。
今回は「アラサーOLのためのpython入門講座」です!この講座では、プログラミング初心者アラサーOLのMi坊さんに、pythonを学習する上でのアドバイスを行います!「パソコンもプログラミングも初心者だけど、プログラミングができるようになりたい!」という方のためにstep-by-stepで解説していきます。
今日は関数に引数を取る方法を解説します。引数とは関数に入力として与える変数です。引数を使うことで、関数を呼び出すときに入力を変えることができます!効率的なプログラミングに欠かせないのでぜひマスターしましょう!
この記事を読めば、関数の基礎知識について知ることができます。ぜひ最後までお付き合いください!
この記事はこんな人におすすめ
- 初心者だけどpythonを始めた!
- pythonの基本的な使い方を知りたい!
- 独学で学んだpythonの知識を整理したい!
Abstract | 引数を使うことで関数の真価が発揮される
引数を使うことで、関数がより便利になります。関数の威力は、同じ処理を何回も行うような場面で、一通りの処理を関数としてまとめておくことで、関数を1行呼び出すだけでそれらの処理が行われる簡潔さにあります。しかし、実際のプログラミングの場面では、同じ処理を行いたいものの、入力となる値は変えたいという場面が多いです。
そこで引数の出番です。引数とは関数への入力のことです。引数を取る関数を使うことで、関数を呼び出すときに入力を変更することができます。引数を取る関数を使うのは、実戦的なテクニックなのでぜひマスターしましょう!
Background | 関数の基礎知識をおさらい
関数とは、よく行う処理をまとめたものです。繰り返し登場する処理を関数としてまとめておくことで、シンプルでわかりやすいコードにすることができます。プログラムがある程度複雑になると、複数行に渡るような処理を何回も行う必要がある場面が出てきます。このとき、繰り返し登場する処理をそのままコピー&ペーストで増殖させてしまうと、
- あとで見直したときに、どこで何をしているのかすぐにわからない
- 修正したいときに、あらゆる箇所を直さなくてはならない
など、プログラミングの手間が増えて効率が落ちます。
関数を使って処理をまとめることで、その処理を行う際に関数を呼び出す1行だけを書けば良くなります。ソースコードがシンプルで短くなるので、どこで何をしているのかわかりやすくなります。また、処理内容を修正したり変更したいときには、関数を定義した箇所を一つだけ変更すれば済みます。このように、関数を使って繰り返し登場する処理をまとめることで、効率よくプログラミングができるようになります。
関数については以下の過去記事もありますので、参考にご覧ください。
前回は自作の関数を定義する方法を解説しました。今回は自作の関数に引数を取る方法を見ていきます。
Method | 関数に引数を取る方法
実際に手を動かしながら学んでいきましょう!Jupyter Notebookを立ち上げてコーディングしながら読み進めてください。練習問題の後にコーディング例も掲載しますので、やってみてどうしてもわからなければそれを見て進めてください。
準備 | python notebookの新規作成
まずはpython notebookを用意しましょう。いつものpython_practiceのディレクトリに「practice_func_args」という名前のpython notebookを作成してください。ターミナルを立ち上げて~/python_practiceに移動、jupyter notebookを起動し、ブラウザから新規→Python3でpython notebookを開いて、ファイル→リネームでファイル名を決定します。
もしやり方がわからなければ、過去記事「python入門講座|pythonを使ってみよう2(Jupyter Notebookを使う方法)」で詳しく解説しているので、これを見ながらやってみてください。
python notebookを起動したら、適宜Markdownセルに説明書きを加えながら下記の説明に沿ってコードを書いて実行していきましょう。Markdownセルやコードセルなどの用語やこれらの使い方についても、過去記事「python入門講座|pythonを使ってみよう2(Jupyter Notebookを使う方法)」を参照してください。練習問題の後にpython notebookの例を掲載します。もし書き方がわからなければそちらを見てください。
引数を取る方法
関数に引数を取るには、関数を定義するときに丸括弧の中に引数としたい変数を書いておきます。
def 関数名(引数):
のように、すれば「引数」のところに書いた変数を引数として取ることができます。
引数を取る関数の例
例を見ていきましょう。まずは単純に、引数として与えられた変数をprint()で出力する関数です。以下を実行して引数付きの関数を定義してみましょう。
# define a function
def HelloVar(var):
print('Hello,', var)
変数varを引数とし、その中身を「Hello, 」に続けて出力する関数です。
関数HelloVarを呼び出すときに、適当な文字列を与えることで、いろいろなものにHelloできます。以下を実行してみましょう。
# hello world
HelloVar('world')
# hello python
HelloVar('python')
# hello animals
HelloVar('animals')
出力は以下のようになります。
Hello, world Hello, python Hello, animals
実戦的な関数の呼び出し例
先程の関数HelloVarについて、もう少し実戦的な使い方を試してみましょう。引数として与えるいくつかの文字列をlistに格納しておき、for文で呼び出します。以下を実行してみてください。
# list of args
list_args = ['world', 'python', 'animals']
# loop for args
for arg_i in list_args:
# call the function
HelloVar(arg_i)
出力は先程の例と同じです。実際のプログラミングでは、引数として与える変数をベタ打ちすることは少ないので、こちらの方が実戦に近い関数の呼び出し方でしょう。
複数の引数を取る方法
引数を複数取ることもできます。引数を複数にするには、関数を定義するときに丸括弧の中に複数の引数をカンマで並べ
def 関数名(引数1, 引数2, ...):
のように関数を定義します。
複数の引数を取る関数の例
例を見ていきましょう。さきほどの例のHelloVarを2引数にしてみます。以下を実行してみましょう。
# define a function
def HelloTwoVar(var1, var2):
print('Hello,', var1, 'and', var2)
関数HelloTwoVarを呼び出してみましょう。呼び出すときにもカンマで区切って2変数与えます。以下を実行してください。
# hello world and Japan
HelloTwoVar('world', 'Japan')
# hello python and numpy
HelloTwoVar('python', 'numpy')
# hello cats and dogs
HelloTwoVar('cats', 'dogs')
実行結果は以下のようになります。
Hello, world and Japan Hello, python and numpy Hello, cats and dogs
少し発展編: アスタリスクで複数引数をリストやタプルで渡す方法
関数を呼び出すとき、複数変数をカンマで区切って一つずつ渡すのではなく、リストやタプルとして渡すことができます。その場合は先頭にアスタリスク*を付けます。以下の例を実行してみましょう。
# args as a list
list_args = ['cats', 'dogs']
# hello
HelloTwoVar(*list_args)
# args as a tuple
tup_args = ('tiger', 'dragon')
# hello
HelloTwoVar(*tup_args)
この例では、list型変数list_argsとtuple型変数tup_argsを定義し、それぞれをHelloTwoVarの引数として渡しています。このようにアスタリスクを付けて渡すと、listやtupleの各要素が各引数として渡されるようになります。実行結果は以下です。
Hello, cats and dogs Hello, tiger and dragon
アスタリスクを付け忘れると、list_argsやtup_args自体がひとつの変数として認識されるためエラーになります。以下を実行してみましょう
# hello
HelloTwoVar(list_args)
この場合は引数を2つ取るべき関数に一つしか引数を渡していません。以下のようなエラーが表示されます。
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) /var/folders/cc/zd_rdmgn14z8hw956cpfjt480000gn/T/ipykernel_74323/2789428591.py in <module> 1 # hello ----> 2 HelloTwoVar(list_args) TypeError: HelloTwoVar() missing 1 required positional argument: 'var2'
Result | 練習問題
練習問題をやってみましょう。以下の処理を行うコードを書いてみましょう。
- 引数を1つ取り、「I like」のあとにその引数の内容を出力する関数ILikeVarを作成してください。
例えば, 引数の内容が”hogehoge”のときは「I like hogehoge」と出力するようにしてください。 - 関数ILikeVarに適当な引数を与えながっら呼び出してください。
- 引数を2つ取り、「I like」のあとにその引数の内容を出力する関数ILikeTwoVarを作成してください。
例えば, 引数の内容が”hoge1″と”hoge2″のときは「I like hoge1 and hoge2」と出力するようにしてください。 - 関数ILikeTwoVarに適当な引数を与えながっら呼び出してください。
練習問題の回答例
練習問題の回答が完成したら回答例を確認しましょう!下の画面をスクロールすると回答例が見られます!参考にしてみてください。また、今回の記事で出てきた他のコードも載っているので参考にしてください!
練習問題おつかれさまでした!
今日はここまでです。Python Notebookを終了しておきましょう。もしPython Notebookを終了方法がわからなければ過去記事「python入門講座|pythonを使ってみよう2(Jupyter Notebookを使う方法)」の「Python Notebookの起動・終了方法」の章を参照してください!
Conclusion | まとめ
最後までご覧いただき、ありがとうございます!
引数を取る関数を定義する方法を解説しました。引数を取る関数を使うことで、異なる入力に対して同じ処理を適用することができます。実際のプログラミングの場面では引数を取る関数を使うことがほとんどです。実戦的なテクニックなのでぜひマスターしましょう!
以上「python入門講座 | 関数の基礎4(引数のとり方)」でした!
またお会いしましょう!Ciao!
Reference
以下の教科書を参考にして進めています!より詳しく学びたい方は購入して読んでみてください!
Pythonの参考教科書
- 現場で使える! Python深層学習入門 Pythonの基本から深層学習の実践手法まで (AI & TECHNOLOGY)
深層学習をpythonで学ぶための教科書ですが、最初の60ページぐらいがpythonの基礎的な解説に割かれています。簡潔にまとまっていてわかりやすいです。
コメント