python中怎么设置默认值_在Python中设置应该是列表的参数的默认值的最佳实践?...

在Python中,设置列表作为参数的默认值可能会导致意外的共享行为。最佳实践是使用None作为默认值并在函数体内初始化。例如,`def func(items=None): if items is None: items = []`。这样可以确保每次调用函数时都创建新的列表实例,避免了不同调用之间的值共享。此外,讨论还涉及了Python中可变和不可变对象的概念以及如何使用装饰器处理默认值工厂。
摘要由CSDN通过智能技术生成

我有一个将列表作为参数的python函数。如果我将参数的默认值设置为如下空列表:

def func(items=[]):

print items

皮林特会告诉我"危险的默认值[]作为参数"。所以我想知道这里的最佳实践是什么?

这是每一个Python新手都会碰上一两次的东西,皮林特阻止你写一个可怕的虫子真是太酷了!

使用None作为默认值:

def func(items=None):

if items is None:

items = []

print items

可变默认参数的问题在于,它将在函数的所有调用之间共享——请参见Python教程的相关部分中的"重要警告"。

啊,哇,我很惊讶人们知道这件事。=)我非常讨厌python的这个特性,以至于我编写了自己的decorator库来支持func(items=new([]))语法。

谢谢!看起来Python认为没有一个是与列表完全不同的类型,所以我想知道Python是否可以将一个参数的默认值设置为一个不同的类型(比如没有)(我知道Python是一个没有类型的语言,但是我来自C++…LOL)?

它与C++之类的强类型语言非常不同。只要把变量想象成引用对象的名称,所有的东西都是通过引用传递的。

@WIM:我认为您的意思是"静态的",而不是强烈的;Python是强类型但动态类型的。

谢谢,维姆!然后,当您使用一个变量时,如何确定它是一个实际的列表还是仍然保持其默认值"无&

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值