Pythonの関数

python-function.png
def square(x):
    return x * x

戻り値

複数の戻り値が可能なのがCにない醍醐味ですよね!?
書き方はすごく簡単で、returnに続いて、返したい値を「,」(カンマ)で区切るだけです。

def plus_minus_mult(a, b):
    return a + b, a - b, a * b
print plus_minus_mult(15, 5)
c, d, e = plus_minus_mult(20, 10)
print c, d, e

関数の引数として渡した値を変化させるには

ふつーにやったら、変数の値が変わらないんです。
そこはjavaと同じかんじでいけるかとおもいきや、Cみたいなかんじ

def func(_x):
    _x+=1;
    print("inside _x=%d"%_x)
x=2;
print("before x=%d"%x)
func(x);
print("after x=%d"%x)

出力結果
before x=2
inside _x=3
after x=2

関数の外に出たら、何事もなかったかのようにxの値は2に戻ってます。
インクリメントしたつもりなのにーーー
return で複数の値を渡すしかないのかなぁ
つまり、こうするといいんだな
def func(_x,_y):
    _x+=1;
    _y-=1;
    return _x,_y;
x=2;
y=10;
print("before x=%d,y=%d"%(x,y))
(x,y)=func(x,y);
print("after x=%d,y=%d"%(x,y))

出力結果
before x=2,y=10
after x=3,y=9

となると、変化する引数を最初で、変化しない引数はあととかそういうコーディング規約をつけたくなるな
ていうか、この書き方、なんかきもちわるいな

サポートサイト Wikidot.com