Pythonの基礎学習2(関数編)

以前の「Pythonの基礎学習(ライブラリ/変数/配列)」の続きでPythonの基本的なことをまとめます。

前回のリンクは以下に貼っておきます。


今回は関数をメインにまとめてみました。
関数とは、共通的な処理を切り出したり、 機能を切り出したりして、処理をわかりやすく解釈するために使用できる。また、ソースコードを再利用することで、何度も同じコードを書かなくて済むようになります。
どういう関数を作るかはそれぞれなので、この時はこう!みたいな決まったものはありません。
フリーダム。

実行環境

  • Windous10
  • Python 3.7.5

関数宣言

関数を作るにはまず関数宣言をする。
今からこういう関数使いますとシステムに伝えることです。

def 関数名(引数):

ここの関数名はなんでもOK。 引数は関数内の処理で使うことができます。 関数を呼び出す側から、呼び出される関数に対して値を渡すことで、関数内でその値を使用することが出来ます。

特に関数内で使用したい値がないときは、指定しないことも可能です。 その場合は、以下のように宣言します。

def 関数名():

以下は関数の例です。

def test(ai):  
   return ai>0  
print test(1)

このtest関数は、「return ai>0」までが関数の中身になります。 「print test(1)」はtest関数を引数に1を指定して呼び出しています。

test関数は以下の用に動作します。 ■動作 引数「ai」が0より大きいかどうか比較し、「TRUE」か「FALSE」で返してくれる。

今回は引数に1を代入したので、「ai=1」となり、結果はTRUE。
引数は変数と考えてください。aiが変数で、「ai=1」と1の値が代入されているイメージです。

インデント

関数を作る上で気を付けないといけないのがインデントです。
関数宣言と、関数の中身が区別できるように、関数の中身にインデントをつける決まりとなっています。 このインデントがない場合、その行が宣言部分なのか中身部分なのかがわからずPythonエラーが出てしまう。

インデントは半角スペースを2の倍数ずつ(2個または4個)入れる必要があります。

def test(ai):  
   return ai>0  
print test(1)

このソースでいうと、一行目は関数宣言、二行目は関数の中身、三行目はその関数を使って出力指示を出しています。
これらがすべて同じ段落だと、二行目は関数の中身ではなく単品の命題文と判断される。
基本的には、「〇〇の中身でインデントをつける!」と意識していればOKです。 ※IF文やFOR文なども中身を区別するためインデントをつける決まりです

おためし編

では関数を作って以前の記事のおみくじを改良してみます。

以前は順番の入れ替えはできましたが、おみくじ感が薄くイマイチだったので。
以下がhake(はけ)に助けられつつ作ったランダム関数です。

from random import random  
def omikuji():  
  if 0.1>random():  
    return"大吉"  
  if 0.5>random():  
    return"吉"  
  if 0.8>random():  
    return"凶"  
  else:  
    return"大凶"  

まずPythonのrandomライブラリは random() と空白だと0~1までの数字(小数点あり)をランダムに出してくれます。
また、if文は上から順に優先でチェックしていきます。
上記をふまえて、random()の結果が0.1以下なら「大吉」の値を返す。0.5以下なら…。
else: は上記以外の場合です。今回なら0.8より大きい値ですね。

では結果を見てみましょう。

このようにランダムでおみくじの結果が見れるようになりました!!!

以上