Ad

定義 anchor.png Edit

Pythonで関数を定義するには「def」を使います。

def testFunc():
    print "test"

testFunc()

結果

test
Page Top

引数 anchor.png Edit

Page Top

通常の引数 anchor.png Edit

関数定義の時に引数も定義できます。

def testFunc(a,b,c):
    print "a:%s,b:%s,c:%s" % (a,b,c)

testFunc("a","b","c")

結果

a:a,b:b,c:c
Page Top

引数の指定 anchor.png Edit

関数を呼び出すときに、どの引数に値を入れるかを指定できます。このとき、値を指定した場合は、引数の順番は無視されます。

testFunc(b="b",a="a",c="c")

結果

a:a,b:b,c:c

引数の値を指定したものとそうでないものが混在する場合には、必ず指定しない物を先に書かなければなりません。

testFunc("a",c="c",b="b")

結果

a:a,b:b,c:c

順番を守らないとエラーとなります。

testFunc(c="c",b="b","a")

結果

SyntaxError: non-keyword arg after keyword arg
Page Top

引数のデフォルト値 anchor.png Edit

引数にデフォルト値を設定することも可能です。 その場合、引数を省略すると定義時のデフォルト値が使われます。

def testFunc(a, b = "b", c = "c"):
    print "a:%s,b:%s,c:%s" % (a,b,c)

testFunc("a","b")

結果

a:a,b:b,c:c

関数を定義するときには、デフォルト値のないもの、デフォルト値のあるものの順に定義しないとエラーとなります。

def testFunc(a = "b", b, c = "c"):
    print "a:%s,b:%s,c:%s" % (a,b,c)

結果

SyntaxError: non-default argument follows default argument
Page Top

可変引数 anchor.png Edit

可変引数にも対応しています。引数をリストで受け取りたい場合は、「*」を使います。

def testFunc(*i_list):
    for i in i_list:
        print i

testFunc(1,2)

結果

1
2

このとき、引数をリストで指定することも可能です。その時には呼び出し時の引数にも「*」を付けます。

testFunc(*[1,2,3])

結果

1
2
3

「**」を使うと辞書オブジェクトで引数を受け取ることも可能です。

def testFunc(**i_dic):
    for k,v in i_dic.iteritems():
        print k,v

testFunc(A='a',B='b')

結果

A a
B b

リストと同様に、関数呼び出し時の引数に「**」を付けることで、辞書オブジェクトを引数とすることもできます。

testFunc(**{'A':'a','B':'b'})

結果

A a
B b
Page Top

その他 anchor.png Edit

Page Top

関数を変数に入れる anchor.png Edit

関数は変数に入れることもできます。

def testFunc(a, b, c):
    print "a:%s,b:%s,c:%s" % (a,b,c)

f = testFunc

f("a","b","c")

結果

a:a,b:b,c:c

ただし、定義と同時に変数や関数の引数には入れられないため、その場合はラムダ式を使います。ラムダ式については「Python​/ラムダ式」を参照のこと。

Page Top

再帰関数 anchor.png Edit

再帰関数も使えます。

def printN(n):
    if n > 0:
        print n
        printN(n-1)

printN(3)

結果

3
2
1
Page Top

ドキュメントストリング anchor.png Edit

関数やクラス定義のすぐ下に書かれた引用符で囲まれた部分はドキュメントストリングと呼ばれ、「__doc__」で参照することができます。

def testFunc(a, b, c):
    """print a,b,c"""
    print "a:%s,b:%s,c:%s" % (a,b,c)


print testFunc.__doc__

結果

print a,b,c

「"」「'」「"""」「'''」どれでも書けますが、複数行に渡るときもあるので、三重引用符を使うのが普通です。

このドキュメントストリングは対話モードで「help()」でも参照可能です。IDEなどでも表示してくれることもあります。なるべく関数の機能がわかるようなコメントを書いておきましょう。


Front page   Edit Freeze Diff Backup Upload Copy Rename ReloadPrint View   New Page Page list Search Recent changes   Help   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom) Powered by xpWiki
Counter: 792, today: 1, yesterday: 3
Princeps date: 2017-01-02 (Mon) 06:38:36
Last-modified: 2017-05-24 (Wed) 17:59:32 (JST) (783d) by njf
広告

ログイン

ユーザー名:


パスワード:





パスワード紛失


NJF