|
|
结论:传参如果是list map 将会修改其值。这意味着list map 是引用传递的。
而 int string 为值传递。
#!/usr/bin/dev pythonimport sysimport osdef FixInt(nVal): nVal = nVal + 1; def FixString(strVal): strVal = strVal + '_b'; def FixMap(map): for key in map: map[key] = map[key] + '_b'; def FixList(ls): ls.append('1'); def PrintVal(strInfo, nVal, strVal, map, ls): if strInfo: print("==== %s =====" %strInfo); print("int value:%d" %nVal); print("string value:%s" %strVal); print("map value:%s" %map); print("list value:%s" %ls); print("\n\n"); if "__main__" == __name__: nTmp = 0; strTmp = "aaaa"; mapTmp = { "aaa" : "111", "bbb" : "222", "ccc" : "333", "ddd" : "444" } lsTmp = ['a', 'b', 'c'] PrintVal("The orgin value", nTmp, strTmp, mapTmp, lsTmp); FixInt(nTmp); FixString(strTmp); FixMap(mapTmp); FixList(lsTmp); PrintVal("The dst value", nTmp, strTmp, mapTmp, lsTmp); 结果:
==== The orgin value =====
int value:0
string value:aaaa
map value:{'aaa': '111', 'bbb': '222', 'ccc': '333', 'ddd': '444'}
list value:['a', 'b', 'c']
==== The dst value =====
int value:0
string value:aaaa
map value:{'aaa': '111_b', 'bbb': '222_b', 'ccc': '333_b', 'ddd': '444_b'}
list value:['a', 'b', 'c', '1'] |
|