六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 35|回复: 0

python的传参测试

[复制链接]

升级  68.2%

265

主题

265

主题

265

主题

进士

Rank: 4

积分
841
 楼主| 发表于 2013-1-15 02:16:26 | 显示全部楼层 |阅读模式
结论:传参如果是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']
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表