python - 如何隐式定义空列表的参数?
问题描述
在下面的代码中,我一直想知道我们如何判断是否b
给出了参数 , 。
问题是第三次调用func
不会保留[5]
在新创建的列表中,而是保留在 start 中b
指向的某个指针。我猜这是在程序堆栈进入func
调用本身之前定义的,所以调用和返回func
不会改变b
......?
任何见解都值得赞赏。
def func(a, b=[]):
b.append([a])
print(b)
return b
func(3)
func(4, [])
func(5)
解决方案
最好的方法是将 b 的默认值分配给任意值(通常None
),然后检查 b 是否以这种方式定义:
def func(a, b=None):
if b is None:
b = []
b.append([a])
print(b)
return b
func(3)
func(4, [])
func(5)
推荐阅读
- jetty - 如何在 Jetty 的透明代理 servlet 中处理分块响应
- java - 在基类中结合 Fragment 和 Activity 类
- swift - Swift:BLE 16 字节到 Int
- javascript - 如何将数组数据转换为新数据
- npm - 发现多个版本的 aurelia-dependency-injection
- php - 如何在 Google Content API(购物)中插入 customBatch
- bluetooth - 是否有在 ble 中获取连接的远程设备名称的选项?
- javascript - 如何防止竖线中的图例在 Chart.js 中重叠?
- graphql - 使用 graphql union 返回一个包含一些空对象的数组
- php - 返回数据为空,但从模型设置时它工作