特集PC技術

Pythonを学ぼう

 

第24回 関数の基本


1.関数とは

これまでの回で、すでに関数を使用してきました。
例えば、リストを作成するためのlist関数。リストの長さを調べるためのlen関数など。
このように、とある機能をひとまとめにしたものを関数といいます。
この回では、基本的な関数の作成を行います。

2.関数の定義

関数の定義は次の構文を使用します。

def 関数名(引数・・・)
    関数の処理を記述
    return 戻り値


関数を定義する場合は、def文を使用します。
関数名には、任意の関数名を記述します。
引数は、何らかのオブジェクトを渡す時に使用します。
戻り値は、何らかのオブジェクトを返す時に使用します。
まずは、簡単な関数の例として、引数と戻り値を省略します。
使用方法は、次のプログラムを見てください。

# coding: utf-8

# 引数・戻り値なしの関数の定義
def function():
    print('print function')

# 関数の呼び出し
function()

実行結果

print function

関数functionを定義して、その後、呼び出しを行っています。
関数を呼び出すと、関数で定義した処理が実行され、"print function"を出力します。

3.関数の引数

関数の引数を記述する方法は次の4つの方法があります。

3.1.基本的な引数

引数に値を渡す基本的な方法です。
次のプログラムを見てください。

# coding: utf-8

# 引数2つ、戻り値なしの関数の定義
def function(arg1, arg2):
    print('print ' + arg1 + ' ' + arg2)

# 引数2つを入れて、関数の呼び出し
function('a', 'b')

実行結果

print a b

引数が2以上の場合は、カンマ(,)で引数を区切って定義します。
上記の例では、'a'と'b'という文字列を渡して、関数でarg1とarg2という変数で受け取るようにしています。

3.2.デフォルト値を指定

関数の呼び出しで、引数が指定されていない場合、デフォルト値を使用するように指定できます。
次のプログラムを見てください。

# coding: utf-8

# 引数1つ、戻り値なしの関数の定義
def function(arg='default'):
    print('print ' + arg)

# 引数なしで、関数の呼び出し
function()
# 引数ありで、関数の呼び出し
function('a')

実行結果

print default
print a

3.3.シーケンス型の可変長引数

引数を任意の数にしたい場合は、シーケンス型の指定方法があります。
引数宣言の前に"*"を付けるだけです。
すると、複数の引数をタプル型で受け入れます。
次のプログラムを見てください。

# coding: utf-8

# 引数は任意の数、戻り値なしの関数の定義
def function(*args):
    print(args)

# 引数なしで、関数の呼び出し
function()
# 引数を任意の数にして、関数の呼び出し
function('a', 'b', 'c')
# 引数をシーケンス型のオブジェクトにして、関数の呼び出し
function(*['a', 'b'])

実行結果

()
('a', 'b', 'c')
('a', 'b')

引数は任意の数をタプル型で受け入れていることがわかります。
引数を指定しないと、空のタプルになります。
シーケンス型のオブジェクトを引数として渡したい場合は、関数の呼び出し時に、"*"をオブジェクトの前につけます。

3.4.辞書型の可変長引数

引数の前に"**"を付けると、キーワード付き引数を辞書型として受け入れます。
次のプログラムを見てください。

# coding: utf-8

# 引数は任意の数、戻り値なしの関数の定義
def function(**args):
    print(args)

# 引数なしで、関数の呼び出し
function()
# 引数を任意の数にして、関数の呼び出し
function(keyword1='a', keyword2='b', keyword3='c')
# 引数をシーケンス型のオブジェクトにして、関数の呼び出し
function(**{'keyword1':'a', 'keyword2':'b'})

実行結果

{}
{'keyword3': 'c', 'keyword2': 'b', 'keyword1': 'a'}
{'keyword2': 'b', 'keyword1': 'a'}

引数を指定しないと、空の辞書になります。
辞書型のオブジェクトを引数として渡したい場合は、関数の呼び出し時に、"**"をオブジェクトの前につけます。

3.5.引数の順番に注意

これまでに紹介した引数は、同時に指定することが可能です。
ただし、紹介した順番に指定しないと、エラーとなりますので注意してください。
正しい順序:基本的な引数、デフォルト値のある引数、シーケンス型の可変長引数、辞書型の可変長引数

4.関数の戻り値

関数の処理結果を返すのが、関数の戻り値です。
関数の戻り値を指定するには、return文を使用します。
使用方法は、次のプログラムを見てください。

# coding: utf-8

# 引数2つ、戻り値ありの関数の定義
def function(arg1, arg2):
    return arg1 + arg2

実行結果

3

関数内で引数1と2の演算結果3を返します。
なので、出力結果は、3になります。
ちなみに、return文のない関数の戻り値を出力しようとした場合は、"None"が出力されます。

5.Javaとの比較

Javaのソースコードとの比較をします。
Javaを知っている方は参考にしてください。

Python Java
# coding: utf-8

# 引数を足し合わせた値を返す関数の定義
def function(arg1, arg2):
    return arg1 + arg2

# 関数の呼び出して、戻り値を出力
print(function(1, 2))
public class Java24 {
    // 引数を足し合わせた値を返す関数の定義
    public static int function(int arg1, int arg2) {
        return arg1 + arg2;
    }

    // 関数の呼び出して、戻り値を出力
    public static void main(String[] args) {
        System.out.println(function(1, 2));
    }
}

コメントの投稿


画像の中に見える文字を入力してください。

トラックバックURL

http://www.isl.ne.jp/cgi-bin/mt/mt-tb.cgi/1786

サイト内検索

twitterTwitter

最新ブログ記事

2015年06月13日

JavaScriptの情報室

4冊目 ハイブリッドアプリが作れる。tabris.js

2014年10月16日

C++言語学習録

第3回 ファイルを分割してみよう

2014年10月09日

C++言語学習録

第2回 オブジェクト指向の復習

2014年10月02日

C++言語学習録

第1回 C++の開発環境を整える

2014年09月25日

Swiftを試してみようなう。

第4回 Swiftでクラスを使うなう。

ISL 情報戦略研究所

pagetopこのページの先頭へ戻る