Pythonで自前の関数を定義する

目次

  1. Pythonで自前の関数を定義するには
  2. returnの無い関数はNoneを返す
  3. 引数に名前を付けるには
  4. 引数の既定値を規定するには

Pythonで自前の関数を定義するには

Pythonで関数を定義するときはdefを使います。

def funcname([parameter_list]):
    statements
    return objects
変数 内容
funcname 定義する関数の名前
parameter_list 関数の引数
statements 関数が実行するコード
objects 関数が呼び出し元に戻すオブジェクト

引数なしの関数の場合は、parameter_listは省略できます。 戻り値なしの関数の場合は、returnとobjectsを省略できます。

defの行の最後のコロン(:)を忘れずに。

statementsはもちろん複数行にすることができます。どこまでがその関数なのかと言うことは、字下げで表現します。

例えば、引数をprintする関数を定義してみます。

>>> def myfunc(str):
...     print('from myfunc : ' + str)
...     return 0
...

>>> result = myfunc('Hello')
from myfunc : Hello

>>> result
0

returnの無い関数はNoneを返す

returnの無い関数は、実際にはNoneを返します。

>>> def myfunc(str):
...     print('from myfunc : ' + str)
...

>>> result = myfunc('Hello')
from myfunc : Hello

>>> result
>>> print(result)
None

resultという変数の中身がNoneになってますね。

引数に名前を付けるには

同じ型の引数が並んでいたりすると、順番を間違えたりします。

>>> def myfunc(str1, str2):
...     print('from myfunc : ' + str1 + str2)
...

>>> myfunc('Hello.','Yeah.')
from myfunc : Hello.Yeah.

>>> myfunc('Yeah.','Hello.')
from myfunc : Yeah.Hello.

ということで、引数に名前を付けてみます。とは言っても、すでに付いているstr1とstr2がその名前です。 関数を呼び出すときに、関数に渡す各オブジェクトがどの名前の引数に関連付くのかを指定できます。

>>> def myfunc(str1, str2):
...     print('from myfunc : ' + str1 + str2)
...

>>> myfunc(str1='Hello.',str2='Yeah.')
from myfunc : Hello.Yeah.

>>> myfunc(str2='Yeah.',str1='Hello.')
from myfunc : Hello.Yeah.

引数の順番を考えなくても良いわけですね。わかりやすいです。

引数の既定値を規定するには

引数の既定値を規定できます。

>>> def myfunc(str1='default_str1',str2='default_str2'):
...     print('from myfunc : ' + str1 + str2)
...

>>> myfunc()
from myfunc : default_str1default_str2

>>> myfunc(str2=' arg2')
from myfunc : default_str1 arg2

関数の中で引数の数を数えて種類を調べて・・・とかしなくて良いんだ。これは便利。

広告

Pythonカテゴリの投稿