トッカンソフトウェア

Python 関数(Windows)

関数をやります。


関数

関数はdefで定義します。戻り値がある場合は、return を指定します。
数値、文字列を引数で渡すと値渡しになり、リスト、辞書などのオブジェクトを渡すと参照渡しになります。
				
"""
テストプログラム
"""


def notAdd(x):
    """ 値渡し"""
    x += 10


def add(x):
    """ 参照渡し"""
    x[0] += 10


def returnValue(x):
    """ 戻り値あり"""
    x += 10
    return x

i = 10
print("notAdd before:" + str(i))
notAdd(i)
print("notAdd after:" + str(i))

list1 = [10]
print("add before:" + str(list1[0]))
add(list1)
print("add after:" + str(list1[0]))

i = 10
print("returnValue before:" + str(i))
j = returnValue(i)
print("returnValue after:" + str(j))


			
実行結果



省略、コメ、コメコメ

イコールを付けると省略でき、指定値がデフォルトになります。
コメにするとタプルとして渡されます。
コメコメにすると辞書として渡されます。
				

"""
テストプログラム
"""


def default(x=5):
    """ デフォルト """

    # イコールを付けると省略でき、指定値がデフォルトになります
    print(x)


def kome(*x):
    """ タプル """

    # コメにするとタプルとして渡されます
    print(x)


def komekome(**x):
    """ 辞書 """

    # コメコメにすると辞書として渡されます
    print(x)

default()
kome(1, 2, 3)
komekome(a=1, b=2, c=3)


			
実行結果




サンプルなどでよく見る*args, **kwargsは以下のような動きをします。
				
import os


def test(*args, **kwargs):

    # タプル部分はargsに入り、辞書部分はkwargsに入ります。
    # str関数は文字列に変換し、os.linesepは環境に適した改行文字です
    print("args:" + str(args) + " kwargs:" + str(kwargs) + os.linesep)

test(1, 2)
test(a=3, b=4)
test(1, 2, a=3, b=4)


			
実行結果


以下のように位置指定引数(aとかbとか引数を指定しているもの)を通常の引数の前に持ってきた場合、エラーになります。
				
test(a=3, b=4, 1, 2)

SyntaxError: positional argument follows keyword argument

			



ページのトップへ戻る