第3回:ユーザ定義関数¶
関数とは¶
複数の命令文を1つにまとめて名前を付けたもの。何度も使う処理を管理したり、コードの見通しをよくするのに便利。
- 組み込み関数: はじめから準備されている関数(
print,id,len,delなど) - ユーザ定義関数: 自分で新しく定義する関数
構文¶
ユーザ定義関数の例¶
実行結果:
プレ演習3-1¶
要件¶
greetという名前の関数を定義するgreet関数はprintを使って「こんにちは」と表示する- プログラム内で
greet関数を1回呼び出す
期待される実行結果¶
関数の定義位置¶
関数の定義は、関数の呼び出しの前に行われている必要がある。
def function_a():
print('function_aの処理です')
function_a()
function_b() # この時点では function_b が定義されていないためエラー
def function_b():
print('function_bの処理です')
よくある間違い
Pythonはファイルを上から順に実行する。関数の定義行(def ...)が実行されて初めて、その関数が呼び出せるようになる。まとめて上のほうに def を並べておくのが無難。
関数の呼び出しの階層¶
関数の中から別の関数を呼び出すこともできる。
def function_a():
print('function_aの処理です')
def function_b():
print('function_bの処理開始')
function_a()
print('function_bの処理終了')
print('function_bを呼び出します')
function_b()
実行結果:
プレ演習3-2¶
要件¶
show_header関数:print("========")を実行するshow_name関数: 自分の名前を表示するintroduce関数:show_header→show_name→show_headerの順に呼び出す- プログラムの実行部分では
introduce関数だけを呼び出す
期待される実行結果の例¶
変数のスコープ¶
変数には参照できる範囲(スコープ)がある。
ローカル変数¶
関数の中でのみ使用できる変数。
グローバル変数¶
プログラムコード全体で使用できる変数。
global キーワード¶
関数の中でグローバル変数の値を変更したい場合は global キーワードを使う。
global 宣言がない場合、関数内の a = 5 は新しいローカル変数の作成になり、グローバル変数は変更されない。
プレ演習3-3¶
以下のコードを実行したとき、それぞれの行で何が表示されるか予想してから実行してみよう。
x = "グローバル"
def test_a():
x = "ローカルA"
print("test_a:", x)
def test_b():
print("test_b:", x)
test_a()
test_b()
print("メイン:", x)
予想:
授業内演習¶
以下のプログラムを作成し、プログラムと実行結果を提出する。
show_line関数を定義する(print("----------")を実行)show_title関数を定義する(print("自己紹介カード")を実行)show_info関数を定義する(自分の名前と学籍番号をそれぞれprintで表示)show_card関数を定義する- 上の3つの関数を
show_line→show_title→show_line→show_info→show_lineの順に呼び出す
- 上の3つの関数を
- プログラムの実行部分では
show_card()だけを呼び出す
実行例:
基本課題¶
任意の文字列を入力し、その文字列を繰り返しを用いて3回出力するプログラムを作成せよ。ただし、入出力処理には関数を用いること。
実行例:
応用課題¶
キーボードから正整数 n を入力し、サイコロを n 回振ったときのそれぞれの出目と n 回の出目の合計を出力するプログラムを作成しなさい。ただし、サイコロの出目の計算と合計計算には関数を用い、入力と出力も関数の中で行うこと。
実行例:
サイコロに使えそうなもの
ランダムな整数は random モジュールで作れる。import random のあと、random.randint(a, b) で a 以上 b 以下の整数が得られる。