# =================================================================== # test when a variable is passed to a function is # a reference or a value # # =================================================================== def ChangeData(x1,x2): print('ChangeData({},{})'.format(x1,x2)) x1 = x2 return print('-----pass-int------------------------------------------------') i1 = 123 i2 = 456 print('i1={} {}'.format(i1,type(i1))) print('i2={} {}'.format(i2,type(i2))) ChangeData(i1,i2) print('i1={} i2={}'.format(i1,i2)) print('-----pass-float-----------------------------------------------') f1 = 123.0 f2 = 456.0 print('f1={} {}'.format(f1,type(f1))) print('f2={} {}'.format(f2,type(f2))) ChangeData(f1,f2) print('f1={} i2={}'.format(f1,f2)) print('-----pass-bool-----------------------------------------------') b1 = True b2 = False print('b1={} {}'.format(b1,type(b1))) print('b2={} {}'.format(b2,type(b2))) ChangeData(b1,b2) print('b1={} b2={}'.format(b1,b2)) print('-----pass-list-----------------------------------------------') l1 = [1,2,3] l2 = [4,5,6] print('l1={} {}'.format(l1,type(l1))) print('l2={} {}'.format(l2,type(l2))) ChangeData(l1,l2) print('l1={} l2={}'.format(l1,l2)) print('-----pass-tuple----------------------------------------------') t1 = ('a','b','c') t2 = ('d','e','f') print('t1={} {}'.format(t1,type(t1))) print('t2={} {}'.format(t2,type(t2))) ChangeData(t1,t2) print('t1={} t2={}'.format(t1,t2)) print('-----pass-object---------------------------------------------') class xx: def __init__(self,d): self.data=d def getdata(self): return self.data c1 = xx(100) c2 = xx(200) print('c1={} {}'.format(c1.getdata(),type(c1))) print('c2={} {}'.format(c2.getdata(),type(c2))) ChangeData(c1,c2) print('c1={} c2={}'.format(c1.getdata(),c2.getdata())) print('---c1=c2-------------------------') c1 = c2 print('c1={} c2={}'.format(c1.getdata(),c2.getdata()))