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
ページのトップへ戻る