标题 | python函数缺省值与引用学习笔记分享 |
内容 | 有关一个在函数参数设置缺省值与引用的问题,这个问题是大多数Pythoner可能会忽视的问题,作个笔记,以备后阅,同时供需要的朋友参考 代码如下: importrandom,string classC(object):pass defdangerFunction(msg,l=[],b={},c=C()): printmsg,'-'*10 printl,b,c.__dict__ l.append(1) b[random.choice(string.ascii_lowercase)]='' c.__dict__[random.choice(string.ascii_lowercase)]="" printl,b,c.__dict__ dangerFunction('1') dangerFunction('2') dangerFunction('3') print'-'*20 defsafeFunction(msg,l=None,b=None,c=None): ifnotl:l=[] ifnotb:b={} ifnotc:c=C() printmsg,'-'*10 printl,b,c.__dict__ l.append(1) b[random.choice(string.ascii_lowercase)]='' c.__dict__[random.choice(string.ascii_lowercase)]="" printl,b,c.__dict__ safeFunction('1') safeFunction('2') safeFunction('3')运行结果: 代码如下: 1---------- []{}{} [1]{'q':''}{'p':''} 2---------- [1]{'q':''}{'p':''} [1,1]{'q':'','a':''}{'p':'','g':''} 3---------- [1,1]{'q':'','a':''}{'p':'','g':''} [1,1,1]{'q':'','a':'','w':''}{'p':'','w':'','g':''} -------------------- 1---------- []{}{} [1]{'k':''}{'l':''} 2---------- []{}{} [1]{'r':''}{'c':''} 3---------- []{}{} [1]{'q':''}{'h':''}由dangerFunction打印出来的结果来看,缺省值为[],(),class 再下次调用时,如果继续参数空缺而使用缺省值,那么缺省值延续上次引用。可能打印无任何标志无法看清楚,加上文字应该会简单很多。 代码如下: #-*-coding:utf-8-*- importrandom,string classC(object):pass defdangerFunction(msg,l=[],b={},c=C()): printmsg,'-'*10 printu'操作前',l,b,c.__dict__ l.append(1) b[random.choice(string.ascii_lowercase)]='' c.__dict__[random.choice(string.ascii_lowercase)]="" printu'操作后',l,b,c.__dict__ dangerFunction('1') dangerFunction('2') dangerFunction('3') print'-'*10,u'我是分隔符','-'*10 defsafeFunction(msg,l=None,b=None,c=None): ifnotl:l=[] ifnotb:b={} ifnotc:c=C() printmsg,'-'*10 printu'操作前',l,b,c.__dict__ l.append(1) b[random.choice(string.ascii_lowercase)]='' c.__dict__[random.choice(string.ascii_lowercase)]="" printu'操作后',l,b,c.__dict__ safeFunction('1') safeFunction('2') safeFunction('3')代码如下: 1---------- 操作前[]{}{} 操作后[1]{'m':''}{'v':''} 2---------- 操作前[1]{'m':''}{'v':''} 操作后[1,1]{'i':'','m':''}{'g':'','v':''} 3---------- 操作前[1,1]{'i':'','m':''}{'g':'','v':''} 操作后[1,1,1]{'i':'','s':'','m':''}{'s':'','g':'','v':''} ----------我是分隔符---------- 1---------- 操作前[]{}{} 操作后[1]{'e':''}{'q':''} 2---------- 操作前[]{}{} 操作后[1]{'d':''}{'s':''} 3---------- 操作前[]{}{} 操作后[1]{'m':''}{'k':''} |
随便看 |
|
在线学习网考试资料包含高考、自考、专升本考试、人事考试、公务员考试、大学生村官考试、特岗教师招聘考试、事业单位招聘考试、企业人才招聘、银行招聘、教师招聘、农村信用社招聘、各类资格证书考试等各类考试资料。