pythonはC言語のような関数パラメータの参照を実現する.

1226 ワード

pythonにはパラメータの必要性があり、Cのようにパラメータ(参照)設計もないようで、関数の戻り値を変形して実現することができます.
def test():
        t1 = "123123"
        t2 = "test"
        t3 = 122
        t4 = 1.12
        return t1, t2, t3, t4

t1, t2, t3, t4 = test()
print t1, t2, t3, t4

この方法はあまりきれいではありません.他の方法を採用することもできます.
1)上で述べた関数の戻り値は,元祖の戻り方といえる.
2)変更可能なオブジェクト(list)による
def func1(a):
    a[0] = 'new-value'     # 'a' references a mutable list
    a[1] = a[1] + 1        # changes a shared object

3)辞書(dict)による
def func3(args):
    args['a'] = 'new-value'     # args is a mutable dictionary
    args['b'] = args['b'] + 1   # change it in-place

4)クラスを通過するオブジェクト
class callByRef:
    def __init__(self, **args):
        for (key, value) in args.items()://args  dict
            setattr(self, key, value)//    self.key=value

def func4(args):
    args.a = 'new-value'        # args is a mutable callByRef
    args.b = args.b + 1         # change object in-place

args = callByRef(a='old-value', b=99)
func4(args)
print args.a, args.b