か の かり 漫画k8 カジノ[Python入門]関数の基本仮想通貨カジノパチンコパチスロ 初代 バジリスク

か の かり 漫画k8 カジノ[Python入門]関数の基本仮想通貨カジノパチンコパチスロ 初代 バジリスク

ま ど 新編k8 カジノ 「Python入門」のインデックス

パチンコ 怒り連載目次

* 本稿は2019年5月17日に公開された記事を、筆者のローカル環境にインストールしたPython 3.10での動作確認、画像の差し替えなどを行うとともに2022年6月8日の時点での状況に合わせて改訂したものです。

 前回までは3回に分けて、Pythonプログラムの実行の流れを制御するif文、for文、while文などを見てきた。これらの文は何らかのロジックを含んだ複雑なコードを書く上で必須のものだった。今回から数回に分けて、そうしたロジックに名前を付けて、再利用を可能にする仕組みである「関数」について見ていこう。

今回の目次関数の基本と呼び出し方組み込み関数ユーザー定義関数def文:関数定義の構文簡単な関数の定義値を返す関数関数の名前FizzBuzz問題の答えを返す関数関数の基本と呼び出し方

 Pythonの「関数」とは、数学の関数に似て、「何らかの値を渡すと、その値に応じた何らかの値を返すもの」といえる。関数に渡す値(関数への入力値)のことを「引数」と呼ぶ。そして、「関数に引数を渡して、関数のコードを実行し、その処理結果を得る」ことを「関数を呼び出す」「関数呼び出し」「関数の実行」などと呼ぶ。また、関数を呼び出したときに得られる結果(関数からの出力)のことを「戻り値」とか「返り値」などという。

関数関数

 本連載でも、これまでにPythonが標準で備えている関数を幾つか使ってきた(それらの関数のことを「組み込み関数」という)。代表的なものはもちろん「print関数」だ。これは、引数に与えた値を出力(画面などに表示)するものだ。ただし、これは「(画面などに)出力する」が「戻り値はない」*1。数学の世界では、関数は値を返すものだが、多くのプログラミング言語では、関数は値を返すとは限らない(その代わりに、画面出力やグラフの描画など、別の手段で処理結果が得られる)。

*1 正確には「None」という値を返すが、Pythonにおける「None」は「値がない」ことを意味する値である。よって、print関数は「値がないことを意味する値を返す」つまり「戻り値はない」といってもよいだろう。

 関数を呼び出すには、「その関数を実行するのに必要」となる引数を与えてやる必要がある。関数に引数を渡すときには、関数名に続けて引数をかっこ「()」で囲み、引数が複数あるときにはそれらをカンマで区切って並べる。また、関数を呼び出した結果(戻り値)を受け取るには、それを変数に代入する。よって、関数を呼び出す一般的な形式は次のようになる。数学における「y = f(x)」と似た記述方法になっているのが分かるはずだ。

変数名 = 関数名(引数1, 引数2, ……)

関数呼び出しの一般的な形式関数呼び出しの一般的な形式関数呼び出しの一般的な形式

 print関数など戻り値がないものについては「変数名 =」の部分は必要なく、単に「関数名(引数1, 引数2, ……)」のように記述できる(例:print(‘Hello’, ‘World’))。関数を呼び出した結果を使って、また別の関数を呼び出したければ「関数名1(関数名2(関数2の引数))」のように書くこともできる。

 既におなじみのprint関数を題材に、関数を呼び出す例を以下に示す。

print(‘Hello World’) # Hello Worldprint(‘Hello’, ‘World’) # Hello Worldresult = print(‘Hello’, ‘World’) # Hello Worldprint(result) # None

print関数の呼び出し例

 最初の行は’Hello World’という文字列を唯一の引数として指定してprint関数を呼び出している。その結果はこれまでに見た通りだ。

 次の行は’Hello’と’World’という2つの文字列を引数に指定してprint関数を呼び出している。このとき、print関数はそれぞれの引数の値を順番に、ただし間に空白文字を挟んで出力する。その結果、’Hello’に続けて空白文字、その後に’World’、つまり’Hello World’が出力される。

 最後の2行はprint関数を呼び出して’Hello World’と出力し、その戻り値を変数resultに代入して、それをprint関数で表示している。

 実行結果を以下に示す。

実行結果実行結果

 最後の出力を見ると、print関数が確かにNoneという値を返していることが分かるはずだ。

 ここでprint関数が引数を1つ受け取ったり、2つ受け取ったりしていることを疑問に思ったかもしれない。実はprint関数は任意の数の引数(これを引数の数が変わるという意味で「可変長引数」と呼ぶ)を受け取れるようにできている。このような関数に値を渡すときには特別な引数の渡し方もある。

 例えば、本連載ではまだ取り扱っていないがリストという「複数の値を格納するためのオブジェクト」を引数にprint関数を呼び出してみよう。

str_list = [‘Hello’, ‘World’]print(str_list) # [‘Hello’, ‘World’]print(*str_list) # Hello World

リストをprint関数に渡す

 リストに関する詳しい説明は第16回「リストの基本」以降を参照してほしいが、上のコードでは変数str_listには「’Hello’と’World’という2つの文字列を格納しているリスト」というオブジェクトが代入されている。

 そして、1つ目のprint関数にはこのstr_listをそのまま渡している。2つ目のprint関数呼び出しでは「*str_list」のようにstr_listの前にアスタリスク「*」が置かれている点に注目してほしい。実行結果は次のようになる。

実行結果実行結果

 1つ目のprint関数呼び出しでは「[‘Hello’, ‘World’]」とリストがそのまま表示され、2つ目のprint関数呼び出しではこれまでに見たような「Hello World」が表示されていることに注目してほしい。

 1つ目の「print(str_list)」呼び出しでは、リストが1個の引数としてprint関数に渡されているので、print関数はそれを1個のデータとしてそのまま表示している。これに対して、2つ目の「print(*str_list)」ではリストに格納されている2つの文字列が「展開」されて(リストから取り出されて2つの値として)print関数に渡されている。つまり、後者の呼び出しは実質的には「print(‘Hello’, ‘World’)」と同じことをしているということだ。このような可変長引数の受け渡しについては次回でも取り上げることにしよう。

組み込み関数

 Pythonには言語が標準で持っていて、プログラマーがいつでも利用できる「組み込み関数」が多く用意されている。これまでに出てきたものも含めてそのうちの幾つかを以下に示す。呼び出し例の「→」の隣にあるのは関数の戻り値の例だ。

関数説明呼び出し例print引数に受け取ったものを画面などに出力するprint(‘Hello’)→Noneinputユーザーにプロンプトを表示して、ユーザー入力を受け取り、それを文字列として返すinput(‘input some number: ‘)→’100’などlen引数に指定した文字列やリストなどの要素数を返すlen(‘string’)→6ord引数に指定した1文字のコードポイントを返すord(‘A’)→65chr引数に指定した整数値をコードポイントとする文字を返すchr(65)→’A’int引数に指定した文字列や浮動小数点数値などを整数値にしたものを返すint(‘1’)→1int(2.5)→2float引数に指定した文字列や整数値などを浮動小数点数値にしたものを返すfloat(‘1.1’)→1.1float(2)→2.0str引数に与えたものの文字列表現を返すstr(1)→’1′max引数に与えたものの中で最大のものを返すmax(1, 2)→2max(‘a’, ‘b’)→’b’(文字は辞書式の順序に大小が定められている)min引数に与えたものの中で最小のものを返すmin(1, 2)→1min(‘a’, ‘b’)→’a’(文字は辞書式の順序に大小が定められている)bin引数に与えた整数値を2進数表現にした文字列を返すbin(8)→’0b1000’(10進数表現の整数「8」を2進数で表現すると「1000」となり、それに’0b’を前置したもの)oct引数に与えた整数値を8進数表現にした文字列を返すoct(8)→’0o10’(10進数表現の整数「8」を8進数で表現すると「10」となり、それに’0o’を前置したもの)hex引数に与えた整数値を16進数表現にした文字列を返すhex(255)→’0xFF’(10進数表現の整数「255」を16進数で表現すると「ff」となり、それに’0x’を前置したもの)type引数に与えたオブジェクトの型を返すtype(1)→<class ‘int’>組み込み関数(一部)

 ここに挙げなかった関数や詳細な情報(引数や戻り値の説明)はPython公式サイトの「組み込み関数」を参照のこと。「こんな機能はないかな」「この関数の使い方ってどんなだっけ」となったときには、このページを検索してみるとよい。

ユーザー定義関数

 組み込み関数だけがPythonで使える関数ではない。自分で関数を定義することも可能だ。そうした関数を「ユーザー定義関数」と呼ぶ。なぜ関数を自分で定義するのかというと、それには幾つかの理由がある。例えば、以下のようなことがそうだ。

プログラム中で何度も利用するコードを1つにまとめるまとまったコードの固まりに名前を付けて、コードの意図を分かりやすくするプログラムを関数の形で他のプログラムから利用できるようにする

 プログラムを作成していると、同じプログラムの複数の箇所で同じ処理を行うことがある。そのたびに同じコードを何度も何度も記述するのはバカげている。コンピュータやプログラムは人がラクをするためのものなので、同じことを人が何度も繰り返すのはよくない。そこで、同じコードを書く必要があるのなら、それを関数にして、必要な場所でそれを呼び出すようにするのが効率的だ。

 また、変数を使うメリットとして「その値に名前を付けることで、その値の意味が分かるようになる」というのがあったが、それと同じで「何かの処理を行うひとまとまりのコード」に名前を付けることで、それが何をするコードかが明確になる。そうなっていれば、自分で(あるいは他の人が)後からプログラムを見返すときに、プログラムの意味を把握しやすくなる。

 さらにそうしたコードを関数にまとめておくと、後から別のプログラムで「前に書いたあのコード」と同じコードが必要になったときに、それを書き直すのではなく、関数にまとめられたコードを使える(「コードの再利用」ともいう)。

 こうしたことから、定型的な処理や、何らかの意図を持ったひとまとまりのコードは関数としておくのがよい。では、ユーザー定義関数はどのようにして作るのだろう。

def文:関数定義の構文

 Pythonでは、関数は「def文」を使って定義する。「関数の定義」とは「関数の名前、その関数を実行するのに必要なデータが何か、実際に実行するコードがどんなものかをPythonに伝えること」だと考えられる。Pythonはプログラム実行時にdef文を見ると、「関数定義が始まったな」と認識して、今述べた情報を基にその関数を表すオブジェクトを作成する。定義した関数は、その後、自由に呼び出せるようになる。

 関数定義のおおよその構文は次の通りとなっている。

def 関数名(パラメーター1, パラメーター2, ……): 関数で行う処理(関数ボディー)

def文の構文

 これまでに見てきたif文やfor文など(複合文)と同様に、1行目は「def」というキーワードで始まって、コロン(:)で終わる。関数を呼び出したときに実行する処理(これを「関数ボディー」や「関数本体」などと呼ぶ)はインデントを付けて記述する必要がある(これもif文やfor文と同様だ)。

 「def」と空白文字に続けて「関数名」を書き、その後にはかっこ「()」で囲んで「その関数が受け取る値のリスト」を(複数あるときにはカンマで区切って)並べる。これら「関数が受け取る値」のことを「パラメーター」「仮引数」と呼び、それらを(カンマで区切って)並べたものを「パラメーターリスト」「仮引数リスト」と呼ぶ。これに対して、関数呼び出し時に実際に関数へと渡す値のことを「実引数」と呼ぶことがある。

 パラメーターとは、その関数を実行するのにどのような値が必要かを示すと同時に、その関数が呼び出される際に「呼び出し側から渡された値」を受け取るための変数のように機能する。その関数が行う処理を記述するために、関数ボディーではパラメーターは変数と同じにように使えるが、その値は関数呼び出し時に渡される「実引数」によって決定される。

パラメーター/仮引数と実引数の関係パラメーター/仮引数と実引数の関係簡単な関数の定義

 では、実際に簡単な関数を定義してみよう。ここでは、以下のような関数を定義する。

関数名:helloパラメーター:1つ。パラメーター名は「whom」とする関数で行う処理:文字列’Hello’とパラメーターwhomの値を文字列化したものを結合して、それをprint関数で表示する

 以上から、hello関数の定義は次のようになる。

def hello(whom): message = ‘Hello ‘ + str(whom) print(message)

hello関数の定義

 上のコードの関数ボディーでは、パラメーターwhomに受け取った値をstr関数で文字列化して、それを文字列’Hello’と結合したものを変数messageに代入している。これが画面に表示するメッセージだ。2行目のprint関数ではそれを表示しているだけだ。1行でも書けることだが(「print(‘Hello’, whom)」とすればよい)、2行に分けたのは、各行のインデントがそろっていることを見てもらうためだ。また、関数定義の内部では、上に示したように他の関数を呼び出すことも可能だ。

 このコードをセルに入力して実行することで、hello関数が定義される。

hello関数の定義hello関数の定義

 ユーザー定義関数の呼び出し方は、今までに見てきたprint関数などの組み込み関数の呼び出し方と変わらない。この場合は、あいさつする相手を引数に指定して呼び出せばよい。「Hello World」と表示したいのであれば次のようになる。

hello(‘World’)

引数に文字列’World’を指定してhello関数を呼び出す

 実行結果は次のようになる。

「hello('World')」と引数に文字列'World'を指定して、hello関数を実行すると、「Hello World」と表示される「hello(‘World’)」と引数に文字列’World’を指定して、hello関数を実行すると、「Hello World」と表示される

 この関数は戻り値を持たない。そこで次に関数を呼び出した側に値を返す関数を定義してみよう。

値を返す関数仮想通貨カジノパチンコuefa champions league 決勝