首页 / 面试 / 经典面试题-python函数之默认参数
经典面试题-python函数之默认参数
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了经典面试题-python函数之默认参数,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1230字,纯文字阅读大概需要2分钟。
内容图文
![经典面试题-python函数之默认参数](/upload/InfoBanner/zyjiaocheng/835/ea7e7df9efb2450682bdf16e36e324c4.jpg)
1、可变的默认参数----list
示例:
def add(a, mylist=[]): # print(id(mylist)) mylist.append(a) return mylist print(add(5)) print(add(6)) print(add(6, ["0908"])) print(add(7))
输出结果:
预期输出 | 实际输出 |
[5] [6] ['6', 9008] [ 7] |
[5] [5, 6] ['0908', 6] [5, 6, 7] |
查看其id
def add(a, mylist=[]): print("mylist_id=",id(mylist)) mylist.append(a) return mylist print("mylist=",add(5)) print("mylist=",add(6)) print("mylist=",add(6, ["0908"])) print("mylist=",add(7))
output
mylist_id= 51050248 mylist= [5] mylist_id= 51050248 mylist= [5, 6] mylist_id= 51026632 mylist= ['0908', 6] mylist_id= 51050248 mylist= [5, 6, 7]
从输出结果可以看出,在第1,2,4次调用时,mylist的内存地址是不变的,mylist是列表属于可变对象,对其进行操作时,不会重新分配地址,append函数是将元素添加到列表的最后面,所以每次输出时将新的参数添加到列表的最后面
第3次调用时,mylist的内存地址改变,重新创建对象,所以将默认参数先赋值,然后再将6添加到列表中
优化
def add(a, mylist=[]): if mylist is not None:#将列表清空 mylist=[] print("mylist_id=",id(mylist)) mylist.append(a) return mylist print("mylist=",add(5)) print("mylist=",add(6)) print("mylist=",add(6, ["0908"])) print("mylist=",add(7))
output
mylist_id= 56728264 mylist= [5] mylist_id= 56728264 mylist= [6] mylist_id= 56753928 mylist= [6] mylist_id= 56753928 mylist= [7]
内容总结
以上是互联网集市为您收集整理的经典面试题-python函数之默认参数全部内容,希望文章能够帮你解决经典面试题-python函数之默认参数所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。