Python 引数と返り値

Python学習【365日チャレンジ!】48日目のマスターU(@Udemy11)です。

いろいろとしらべてようやくMacminiのファイルサーバー化を実現できたのはいいのですが、あまりにも時間が取られてしまって、ちょっとの間、PC部屋に監禁?軟禁?状態でした。

通常のAppleサポートのやり方やネットで紹介されているやり方だとうまくいかずに一時中断していたのですが、頭を柔軟にすることで無事Macmini Mid2010にインストール可能なlatestバージョンのHigh Sierraを入れることができたので、そのうちそのやり方も記事にしようと思っています。

今は、ディスプレイをつけずに画面共有でMacminiを操作できるようにしています。

ということで、今日のPython学習にはいりましょう!

昨日の復習

昨日は、def文による関数定義の基本を学習しました。
関数は、定められた処理を実行して結果を返すものということで、自分で関数を定義することが可能でした。

また、実行するコードより前に関数が定義されている必要がありましたね。

返り値を指定して、引数を実行時に受け取ることで条件分岐させることもできました。

def what_is_this(color):
    if color == 'red':
        return 'Tomato'
    elif color == 'green':
        return 'Avocado'
    else:
        return "I don't know"
 		
print(what_is_this('red'))
print(what_is_this('green'))
print(what_is_this('orange'))

出力結果

Tomato
Avocado
I don't know

また代入する変数をinput関数を使って入力してもらうことも可能でした。

詳しくは、昨日の記事を参考にしてみてください。

今日学習するのは、引数と返り値の指定に関する注意点です。

引数と返り値の型の指定

関数の引数や返り値に型を指定することが可能ですが、注意が必要です。

def plus_num(a: int, b: int) -> int:
     return a + b
 
r = plus_num(10, 20)
print(r)

出力結果

30

変数に型を指定する場合は、【a: int = 10】という感じで指定しましたが、引数にも同じような記載ができます。

そして、返り値にもintを指定する場合は、【-> int】という書き方をします。

ちなみに、こんな書き方をしても同じ出力が得られます。

def plus_num(a: int, b: int) -> int:
    r = a + b
    print(r)
 
plus_num(10, 20)

このコードの場合は、関数の中で出力していますが、関数にはreturnで返り値を指定して、実行時にprint出力したほうがいいような気がします。

指定以外のタイプでもエラーにならない

上記コードの場合、整数を入れれば、問題なく計算されますが、文字型を入力した場合はどうなるでしょうか?

実際に試してみましょう。

def plus_num(a: int, b: int) -> int:
     return a + b
 
r = plus_num('10', '20')
print(r)
print(type(r))

出力結果

1020
<class 'str'>

int型に指定した引数に、文字列であるstr型を入力した場合でも、エラーになることはなく、関数が実行されてstr型の返り値が出力されます。

つまり、違うタイプを入力しているにも関わらず、エラーにならないため、バグにつながる可能性があるため、注意が必要です。

酒井さんの講座では、このような書き方はほぼ使われていないとのことなので、こんな使い方ができるということを頭の片隅に入れておく程度でいいと思います。

想像力が大切

forループにしてもwhileループにしても、if文にしても、プログラムを構成する一つのパーツです。

そのパーツを組み合わせてどのようなプログラムに仕上げるかは、プログラマーのセンスにかかっています。

最近では、小学生からプログラム教育が始まっていますが、基本、積み木を積み上げるように、一つ一つのパーツを組み上げて、作品(プログラム)を仕上げる遊びから始めています。

小学生用のソフトは、コードではなく、コードを組み込んだ形のあるパーツを画面上で組み立てるのですが、Pythonの場合は、このパーツがコードになっているだけなので、どちらも想像力を働かせて作品を組み立てることに違いはありません。

以前、設計図が大切だということを紹介しましたが、設計図を作るには想像力が必要ですし、頭の柔軟性も必要になってきます。

年を取ると、どんどん頭の柔軟性が失われていきますので、想像力を働かせて、頭が固くならないように意識しましょう!

それでは、明日もGood Python!