こんにちわ!この記事はPythonの初学者のための内容となっております。
この記事を読むメリットとしては、
- 可変長引数とか、キーワード引数ってなに!?
- これらを知ると何が嬉しいの?
- 柔軟な関数の定義の仕方を知りたい!
って方向けの内容です。
また、前回はオブジェクト指向についての記述でした。
今回は関数についての理解が必要なのでこちらも見てみてください!
参考:【Python入門】初めてのプログラミング(オブジェクト指向2)
参考:【Python入門】初めてのプログラミング(関数)
コンテンツ
無料オンライン相談を活用しよう!
Pythonというプログラミング言語は機械学習の人気の高まりなどもあり、様々なスクールが無料説明会を開催しています。
その中でも「Freeks(フリークス)|業界初!10,780円のサブスク型プログラミングスクール」がオススメです。Pythonを効率よく学びたいという方はまずは適性を知るためにも無料説明会を利用しましょう。
可変長引数について
可変長引数とは
可変長引数とは、関数を定義する際に、引数の個数を指定せずに引数を関数に渡す方法です。この可変長引数では、引数の名前に「 * 」を付けて定義します。
よく用いられる引数名は「args」や「kwargs」ですが、実際は何でも自由に設定できます。
可変長引数の基本的使い方
可変長引数は「 * 」を付ける個数によって意味が異なります。
- 1個:配列的な扱い
- 2個:辞書的な扱い
という感じで使い方が違いますので順番に見ていきましょう!
配列的な扱い
配列的な扱いの場合、引数に「 * 」1個よ!
1 2 3 4 5 6 7 8 9 10 |
def Greeting(*persons): for person in persons: print("こんちゃす!" + person + "さん!") Greeting("山田太郎", "田中太郎", "鈴木太郎") """ こんちゃす!山田太郎さん! こんちゃす!田中太郎さん! こんちゃす!鈴木太郎さん! """ |
このように、「Greeting」関数に引数を自由に渡すことができ大変便利です。
従来の方法だと、引数が変わるたびに関数を呼び出さないといけませんでした。
その例がこちらです。
1 2 3 4 5 6 |
def Greeting(person): print("こんちゃす!" + person + "さん!") Greeting("山田太郎") #こんちゃす!山田太郎さん! Greeting("田中太郎") #こんちゃす!田中太郎さん! Greeting("鈴木太郎") #こんちゃす!鈴木太郎さん! |
過去の記事を読んでくださっている皆さんならば使い分けていきたいところですね!
配列の使い方が不明な方はこちら!
【Python入門】初めてのプログラミング(2次元配列)
過去の記事
辞書的な扱い
辞書的な扱いの場合、引数に「 * 」2個よ!
1 2 3 4 5 6 7 8 9 10 |
def Greeting(**d): for country, word in d.items(): print(country + "の挨拶は" + word + "です。") Greeting(フランス語 = "ボンジュール", ドイツ語 = "グーテンモルゲン", イタリア語 = "ブオンジョルノ") """ フランス語の挨拶はボンジュールです。 ドイツ語の挨拶はグーテンモルゲンです。 イタリア語の挨拶はブオンジョルノです。 """ |
ここで気を付けたいのは、「key」に対応する引数は、「 ” 」か「 ‘ 」を付けないで、文字列としては扱わないという点ですね。普段なら、「”フランス語”」としているところなので注意が必要です。
配列や辞書の使い方が不明な方はこちら!
過去の記事
可変長引数の注意点
注意点としては、先ほどの「key」として渡す変数は文字列として扱わないという点があります。また、可変長引数を用いた関数にも、複数の引数を渡すことが可能です。その例を見ていきましょう!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
def Greeting(p1, p2, *persons): print(p1 + "様お疲れ様です!") print(p2 + "さん!お疲れ様!") for person in persons: print("おい!" + person + "!ざけんなよ!") Greeting("A", "B", "C", "D") """ A様お疲れ様です! Bさん!お疲れ様! おい!C!ざけんなよ! おい!D!ざけんなよ! """ |
引数が渡される順に「p1」、「p2」に代入されてるね!
逆に言えば、普通の引数と、可変長引数を併用する場合は、可変長引数を最後に記述する必要があるということがわかりますね。なぜなら、最後以外に可変長引数を設定した場合、いくつの要素が可変長引数に対応するのかが明確にならないため、エラーとなるからです。
実際にエラーとなるかを確認していきましょう!
1 2 3 4 5 6 7 |
def Greeting(*persons, p1): print(persons) print(p1) Greeting("A", "B", "C", "D") #TypeError #Greeting() missing 1 required keyword-only argument: 'p1' |
理解できたらエラー内容は大丈夫!
キーワード引数について
キーワード引数とは
キーワード引数とは、関数の引数にデフォルト値を設定した引数のことです。記述方法としては、(引数名) = (値)とすることでデフォルト値の指定が可能になります。
先ほどの可変長引数と比べると理解がしやすいと思います。
サンプルコードをくれ!
キーワード引数の基本的使い方
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
def introduce(name = "名無し", gender = "中"): print(name + "さんは" + gender + "性です。") introduce() #名無しさんは中性です。 introduce(name = "山田") #山田さんは中性です。 introduce(gender = "男") #名無しさんは男性です。 introduce("太郎", "女") #太郎さんは女性です。 introduce(gender = "女", name = "太郎", ) #太郎さんは女性です。 |
関数「introduce」は引数が2つあります。しかし、関数を呼び出すときの引数の個数はバラバラです。それでもエラーなしに実行できるのはデフォルトが決まっているからですね!
また、引数を渡す順番が前後にずれていても、キーワードを指定することによってプログラマーの意図通りに記述することが出来ますね!とっても便利でしょ!
まとめ
今回は、可変長引数とキーワード引数を用いた関数の利用方法についての記述でした。どちらも使い方によっては大変便利な記述方法なので上手に扱っていきたいですね!
注意点としては、引数を設定するときの順番によってはエラーが出てしまう時があるということです。関数における引数が一般的な引数と、可変長引数を用いた場合、必ず可変長引数を引数の最後に記述する必要があります。
また、キーワード引数の考え方はデフォルト値を設定するということでしたね!
キーワード引数は簡単やったな!
本日の理解度調査
今日の最後に理解度調査をします!!
どうすれば正しくなるのか考えてみてね!!
Q.可変長引数を用いた関数「Calc_Sum」を完成させよ。
1 2 3 4 5 6 7 8 9 10 |
def Calc_Sum(*args): sum = 0 for arg in ???: sum += arg return ??? print(Calc_Sum(10, 20, 30, 40, 50)) #150 |
正解は。。。
1 2 3 4 5 6 7 |
def Calc_Sum(*args): sum = 0 for arg in args: sum += arg return sum |
わかったかな??正解出来たら今回の項目は完璧だね!!
最後まで記事を読んでいただきありがとうございます!
無料の説明会を有効活用しよう!
独学での学習は孤独感を感じやすく挫折してしまう初心者も多いです。また、参考書を購入しても全く読む気にならないという方も多いはずです。
それでも、なんとかPythonの勉強を行い、高スキルなエンジニアを目指したいという方は無料で受けられるオンライン説明会に参加してみることも一つの手です。
Pythonというプログラミング言語は機械学習の人気の高まりなどもあり、様々なスクールが無料説明会を開催しています。
その中でも「Freeks(フリークス)|業界初!10,780円のサブスク型プログラミングスクール」がオススメです。Pythonを効率よく学びたいという方はまずは適性を知るためにも無料説明会を利用しましょう。