1. 程式人生 > >python 像C語言樣的函式引數引用實現..

python 像C語言樣的函式引數引用實現..

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