首页 > 其他分享 >定义函数时不要使用可变类型作为参数的默认值

定义函数时不要使用可变类型作为参数的默认值

时间:2023-04-29 17:13:28浏览次数:33  
标签:调用 end 定义 add 参数 可变 print 默认值

《流畅的Python》第8章 8.4.1小节

 可变默认值导致的这个问题说明了为什么通常使用None作为接收可变值的参数的默认值。

类名.__init__.__defaults__:查看类中形式参数的默认值

函数名.__defaults__属性:查看形式参数的默认值

#形式参数L是可变类型时隐藏的问题
def add_end(L=[]):
    L.append('END')
    return L


print("传入参数,正常调用时:")
print(add_end([1,2,3]))
print(add_end(['a','b','c']))

print("\n不传入参数,使用默认参数调用时:")
print("使用默认参数第一次调用:",add_end())

print("使用默认参数第一次调用后此时参数L的默认值变了,不再是[]:",add_end.__defaults__)
print("使用默认参数第二次调用与第一次调用返回的结果不同:",add_end())

运行结果:

 

标签:调用,end,定义,add,参数,可变,print,默认值
From: https://www.cnblogs.com/bravesunforever/p/17364216.html

相关文章

  • Typora自定义图片图床服务器
    0x01启用picgo文件-偏好设置-图像-上传服务设定-PicGo-core(commandline)0x02安装插件打开路径C:\Users\你的用户名\.picgo(其他环境自己百度吧,我这是Windows),然后输入命令(得确保PC已有Node环境,不然npm报没有命令):npminstallpicgo-plugin-web-uploader0x02服务器返回接......
  • 元组的相对不可变性
    元组的相对不可变性,解释了为什么有些元组不可散列的原因。 t1=(1,2,[30,40])t2=(1,2,[30,40])print("t1==t2:",t1==t2)print("t1ist2:",t1ist2)print(f't1的位置:{id(t1)},t2的位置:{id(t2)}')print("t1最后一项列表的内存地址:",id(t1[-1]))print(f......
  • chipyard——自定义配置生成和前仿
    一,生成配置前面用rocket-chip仓库做了生成和前仿,为了方便扩展外设,这里转到chipyard仓库。首先我们生成一个之前用的配置: 为删SimDTM(我的测试框架不需要),先在rocket的subsystem/config下创建一个class: 然后在chipyard顶层创建config: makeCONFIG=MyConfig创建设计 发......
  • nginx自定义指定加载配置
    进入 /usr/local/nginx/conf/include目录,创建 nginx.node.conf文件,在里面输入如下代码:upstreamnodejs{server127.0.0.1:3000;#server127.0.0.1:3001;keepalive64;}server{listen80;server_namewww.penguu.compenguu.com;access_lo......
  • 如何自定义starter
    背景使用过SpringBoot的小伙伴都应该知道,一个SpringBoot项目就是由一个一个starter组成的,一个starter代表该项目的SpringBoot启动依赖,除了官方已有的starter,我们可以根据自己的需要自定义新的starter。我们经常会看到或者使用到各种***-starter。比如下面几种:spring-boo......
  • go语言 数组和切片、可变长参数、maps、字符串、指针、结构体、方法、接口
    数组和切片数组#1定义,初始化,使用#2数组是值类型数字,字符串,布尔,数组,都是值类型,真正直接存数据切片,map,指针引用类型,是个地址,指向了具体的值#3数组长度#4循环打印数组#5多纬数组#6数组定义并赋初值,把第99赋值为1,其他都是0#数组的长度也......
  • Spring 实现自定义 bean 的扩展
    Springmvc提供了扩展xml的机制,用来编写自定义的xmlbean,例如dubbo框架,就利用这个机制实现了好多的dubbobean,比如 <dubbo:application>、<dubbo:registry> 等等,只要安装这个标准的扩展方式实现配置即可。扩展自定义bean的意义何在假设我们要使用一个开源框架或者一套......
  • vue3自定义指令实现el-select下拉加载更多
    1.新建js文件exportdefault(app)=>{app.directive('loadmore',{beforeMount(el,binding){constelement=el.querySelector('.t-select__dropdown');element.addEventListener('scroll',()=>{co......
  • CMakeLists---自定义变量-add_definitions()函数
    转载:https://blog.csdn.net/qq_35699473/article/details/115837708引言其实这个函数在安装一些库的时候,它的CMakeLists里面就有这样的函数。典型的就是opencv了。opencv安装时候有一些指令也是针对这个函数的,比如安装命令(随便搜索的):cmake ../opencv-3.4.1-DWITH_GTK_2......
  • access 查询报“提供程序无法确定 Object 值.例如,该行刚刚创建,未提供 Object 列的默
    access查询报“提供程序无法确定Object值.例如,该行刚刚创建,未提供Object列的默认值,并且”System.InvalidOperationException:TheprovidercouldnotdeterminetheObjectvalue.Forexample,therowwasjustcreated,thedefaultfortheObjectcolumnwasnota......