andylin02 发表于 2013-1-15 02:16:26

python的传参测试

结论:传参如果是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 = map + '_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']
页: [1]
查看完整版本: python的传参测试