python函数缺省值与引用学习笔记分享
来源:易贤网 阅读:1562 次 日期:2014-05-19 21:26:43
温馨提示:易贤网小编为您整理了“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':''}

更多信息请查看IT技术专栏

更多信息请查看脚本栏目
由于各方面情况的不断调整与变化,易贤网提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:hfpxwx
咨询QQ:526150442(9:00—18:00)版权所有:易贤网
云南网警报警专用图标